-v2 suppressed cooked raw with type cooked
-v3 both both raw with type both
+POSSIBLY-ASYNCHRONOUS REPORTING OF INTERNAL STATE CHANGES ETC.
+
U< ?resolving <some message about resolution algorithm>
R< ?resolution inexplicable <segment>
! for foredetect
@ for det_ignore
+ R< ?train <train> speed commanding <speedstep>
+
R< ?movpos <segment> feat <feat> <posn> point|relay
R< ?movpos <segment> position <overallposn> moving
R< ?movpos <segment> position <overallposn> stable
movpos Q0 feat Q 0 two
movpos X8 feat P 0 three
picio out polarity <X2,X3,X4,Q3>
+train shinkansen speed commanded 100
upvar #0 replay($pk) rep; catch { unset rep }
}
+proc savereplay-clear-re {re} { # re is anchored at start
+ global replay
+ if {![info exists replay]} return
+ foreack pk [array names replay] {
+ if {[regexp -- ^$re $pk]} { unset replay($pk) }
+ }
+}
+
proc save-dump-failed-warn {fpre howpre emsg} {
global errorCode
switch -glob $errorCode {
Resolving { catch { unset replay("50 resolution") } }
}
set pri 10
+ savereplay-clear-re {^60 train \S+ speed }
} elseif {[regexp {^(resolution) (.*)$} $l dummy key addvalue]} {
set pri 50
} elseif {[regexp {^(picio out) (on|off)$} $l dummy key value]} {
set pri 55
} elseif {[regexp -expanded {
^( movpos \s \S+ \s (?: feat \s \S+ | position) |
- train \s \S+ \s (?: has | at ) |
+ train \s \S+ \s (?: has | at | speed \s commanded ) |
picio \s out \s polarity
) \s (.*) $
} $l dummy key value]} {
void actual_speed(Train *tra, int step) {
Nmra n;
enco_nmra_speed126(&n, tra->addr, step, tra->backwards);
+ ouprintf("train %s speed commanding %d\n", tra->pname, step);
retransmit_urgent_requeue(&tra->speed.rn, &n);
}