chiark / gitweb /
speed, for replay
authorian <ian>
Sun, 1 Jun 2008 22:58:25 +0000 (22:58 +0000)
committerian <ian>
Sun, 1 Jun 2008 22:58:25 +0000 (22:58 +0000)
hostside/README.commands
hostside/gui-plan-testdata
hostside/multiplex
hostside/speed.c

index fdf97c916723b911141186661d7741cb2acc50ef..dba3a5707d1af2c9885faa25bf8082bb01bd551b 100644 (file)
@@ -49,6 +49,8 @@ POSSIBLY-ASYNCHRONOUS REPORTING OF MESSAGES TO/FROM (MASTER) PIC
   -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>
@@ -77,6 +79,8 @@ POSSIBLY-ASYNCHRONOUS REPORTING OF MESSAGES TO/FROM (MASTER) PIC
                      ! 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
index 064bad2ea1f9eff53d406167bd5666c5e6be0d0d..58fb7f3cb9f434b5d42299027ccfb29ce2c39de5 100644 (file)
@@ -10,3 +10,4 @@ movpos A5 feat P 2 point
 movpos Q0 feat Q 0 two
 movpos X8 feat P 0 three
 picio out polarity <X2,X3,X4,Q3>
+train shinkansen speed commanded 100
index feeb6f2f5ad66b36add4c6b165ca9786e6451100..480e25a335638b8621c8fc006f432baf1477669c 100755 (executable)
@@ -107,6 +107,14 @@ proc savereplay-clear {pk} {
     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 {
@@ -542,13 +550,14 @@ proc realtime-inputline {dummy l} {
            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]} {
index 4f966b87fde52f6ffecc9b1f2a95312b555ee498..d9577665a581ef4cb69015f616b2f62c122ebf71 100644 (file)
@@ -9,6 +9,7 @@
 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);
 }