From: ian Date: Thu, 5 Jan 2006 13:51:58 +0000 (+0000) Subject: path-setting X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ijackson/git?p=trains.git;a=commitdiff_plain;h=96b8776b74b84513e1ee433df6c4b8544fbecaa3 path-setting --- diff --git a/TODO b/TODO index 4391009..1fa0209 100644 --- a/TODO +++ b/TODO @@ -2,8 +2,6 @@ more keystroke commands speed changes immediate -labels for keys - race between cdu off (due to watchdog or short) and points diff --git a/hostside/eventrun.events b/hostside/eventrun.events index 1080b15..b2f7fea 100644 --- a/hostside/eventrun.events +++ b/hostside/eventrun.events @@ -7,3 +7,9 @@ eb trains_start b2 tw ask_slow e6 tw ask_randspeed ec tw ask_fast + +ea tw ask_manualleft +e9 tw ask_manualright +e8 tw ask_figureeight +e7 tw ask_loop +e5 tw ask_randpath diff --git a/hostside/stopgap-controller b/hostside/stopgap-controller index 0c4f334..3b3348f 100755 --- a/hostside/stopgap-controller +++ b/hostside/stopgap-controller @@ -12,8 +12,10 @@ set ch(speeddirnevery) 30 set ch(scale) 1 set ch(minint) 5000 -# unset always -# set always 0 + +#unset pointasked +# 0 1 (settings) M0 M1 (manual, settings) unset (random) M (manual) + set nmrawhich 0 set lastptchosen xx @@ -170,15 +172,27 @@ proc randbyte {} { } proc pt_maybe {point oneisright} { - global always lastptchosen - if {[info exists always]} { - set pos $always - } else { + global pointasked lastptchosen + if {![info exists pointasked]} { if {![string compare $point $lastptchosen]} return set lastptchosen $point set x [randbyte] set pos [expr [regexp {^[89a-f]} $x] ? 1 : 0] debug "chose point $point pos=$pos (x=$x)" + } elseif {[regexp {^M([01])$} $pointasked dummy pos]} { + if {[lsearch -exact {40 02} [lindex $point 0]] >= 0} { + set pos [expr {!$pos}] + debug "chose point $point pos=$pos manual-rl" + } else { + debug "chose point $point pos=$pos manual-lr" + } + set pointasked M + } elseif {![string compare $pointasked M]} { + debug "leave point $point pos=$pos manual" + return + } else { + debug "fixed point $point pos=$pos" + set pos $pointasked } pt_must $point $pos } @@ -472,6 +486,11 @@ proc ask_randspeed {} { global speeddirn_fixed; catch { unset speeddirn_fixed } } +proc ask_manual {rightp} { global pointasked; set pointasked M$rightp } +proc ask_figureeightt {rightp} { global pointasked; set pointasked 0 } +proc ask_loop {rightp} { global pointasked; set pointasked 1 } +proc ask_randpath {rightp} { global pointasked; catch { unset pointasked } } + setup gui_init vwait end