From 6c43b35f6703cdf78c0d52165a1d326414368205 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 2 Jan 2011 23:01:37 +0000 Subject: [PATCH] hostside/measure-speeds: set points when using track C to avoid train diving off into nowhere --- hostside/measure-speeds | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/hostside/measure-speeds b/hostside/measure-speeds index 7496b87..6dc71af 100755 --- a/hostside/measure-speeds +++ b/hostside/measure-speeds @@ -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 -- 2.30.2