U< movpos <segment> point <feat><posn>
U< movpos <segment> position <overallposn> moving
U< movpos <segment> position <overallposn> stable
+ <overallposn> may be ? for unknown
U< debug <context> : <debug message>
U< info : <informational message>
+bugs
+ see fixme in movpos.c
+ also startup resolve crashes due to findhead_nextseg returning -1
+
want to
document commands [!]movfeat and speed
stop all trains command ?
+ stop and turn off calmly when ^D
optional but maybe before can test:
wiring to gui display
$steps= $nxt-1;
die "'$train': expected 126 steps, found $steps\n"
unless $steps==126;
- for ($step=0; $step<$nxt; $step++) {
+ for ($step=1; $step<$nxt; $step++) {
printf "train %s step %d=%f\n",
"'$train'", $step, $speed[$step]
or die $!;
$decl= { \\
END
." ".(join ", \\\n ", map {
- '"'.(lc).'"';
+ '"'.$_.'"';
} @f).<<END
\\
};
/* Checks whether we can meet the currently queued commitments */
int future, conf, resv, usewhen;
+ fixme there is something wrong as
+ INT_MAX maxdelay_ms should not work as it overflows and makes
+ negative deadlines
+
+debug movpos/change : A5/P0 maxdelay_ms=2147483647 actual=?
+ point allocate 1
+debug movpos/change-needed : point:P(2*1) -1<-0 => 1debug movpos/change : confirm point:1...
+debug movpos/point : confirm A5 n=1 maxdelay=2147483647 (res: n=1 deadline=[t+]-1)
+debug movpos/point : newdeadline=t+-8589933 allow_failure=1
+ pt_enqueue
+debug movpos/point : pt_enqueue=OK
+movpos A5 position ? moving
+debug movpos/change : confirm => OK
+
conf=resv=0;
/* If CDU is charged we can do one thing right away */
* it back if it doesn't work.
*/
- if (n_motions >= r->n_motions)
+ if (n_motions > r->n_motions)
return EC_MovFeatReservationInapplicable;
assert(n_motions <= r->n_motions);
if (maxdelay_ms == -1) {
void record_train_step_speed(Train *tra, int step, double speed) {
if (step<1 || step>SPEEDSTEPS)
- record_yyerror("speed step out of range 0..127");
+ record_yyerror("speed step out of range 0..126");
tra->speedcurve[step]= speed;
}
f= fopen(filename,"r");
if (!f) diee("config: cannot open %s: %s", why, filename);
record_yyrestart(f);
+ record_yylineno= 0;
r= record_yyparse();
assert(!r); /* we're supposed to call yyerror which dies */
}
int n_speedregimes;
SpeedRange *speedregimes;
- float speedcurve[SPEEDSTEPS];
+ float speedcurve[SPEEDSTEPS+1];
};
struct Segment {
break vdie
break nmra_errchk_fail
-break safety_problem
+break predict_problem
#break resolve.c:337
run