chiark / gitweb /
hostside/measure-speeds: set points when using track C to avoid train diving off...
authorIan Jackson <ian@davenant.greenend.org.uk>
Sun, 2 Jan 2011 23:01:37 +0000 (23:01 +0000)
committerIan Jackson <ian@davenant.greenend.org.uk>
Sun, 2 Jan 2011 23:01:37 +0000 (23:01 +0000)
hostside/measure-speeds

index 7496b876d34a3bd07e001e8ec1bc0d6e224cad72..6dc71aff67a5aebd5a80b94dfb32df029fb072b8 100755 (executable)
@@ -36,7 +36,6 @@ proc startup {} {
     send-now 10
     after 1000
     read -nonewline $rwy
-    send-now 11
     fileevent $rwy readable readable
     set buf {}
     set last_fast_speed 0
@@ -70,6 +69,7 @@ proc settle-cancel-after {} {
 
 proc proc-msg {msg} {
     global until detend settle_detend settle_time settle_after
+    global pointing pointed
     switch -glob $msg {
        90?? {
            if {[lsearch $settle_detend $msg]<0} { debug_r "o $msg"; return }
@@ -78,8 +78,18 @@ proc proc-msg {msg} {
            set settle_after [after $settle_time { set until 1}]
            return
        }
-       01 - 02 - 03 return
-       28 return
+       01 - 02 - 03 - 20 return
+       28 {
+           if {[llength $pointing]} {
+               set point [lindex $pointing 0]
+               set pointing [lrange $pointing 1 end]
+               puts stderr "> $point"
+               send-now $point
+           } else {
+               set pointed 1
+           }
+           return
+       }
        98?? {
            if {[lsearch $detend $msg]<0} { debug_r "I $msg"; return }
            debug_r "* $msg"
@@ -110,6 +120,20 @@ proc define-segments {} {
     use-segment                X8 09                           C5 2f
 }
 
+proc normalise1 {seg_unused feat_unused pos_unused hex} {
+    global pointing
+    lappend pointing $hex
+}
+
+proc normalise_C {} {
+    normalise1         C5 P 0  a045
+    normalise1         C9 P 0  a021
+    normalise1         C0 P 0  a067
+}
+proc normalise_AX {} {
+    # NYI
+}
+
 proc speed-msg {speed} {
     global loco reverse
     list speed126 $loco [expr {abs($speed)}] [expr {$speed<0 != $reverse}]
@@ -316,6 +340,9 @@ manyset $argv port track how loco reverse
 
 define-segments
 startup
+normalise_$track
+send-now 11
+vwait pointed
 
 foreach s [lrange $argv 5 end] {
     run-test $how $s