From 4f60897f41010dd64ef96b25ddf03bc6d50f6b11 Mon Sep 17 00:00:00 2001 From: ian Date: Fri, 6 Jan 2006 01:09:16 +0000 Subject: [PATCH] more than two manual speeds --- hostside/eventrun.events | 4 ++-- hostside/stopgap-controller | 25 +++++++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/hostside/eventrun.events b/hostside/eventrun.events index 9d6f07e..6110ed1 100644 --- a/hostside/eventrun.events +++ b/hostside/eventrun.events @@ -4,9 +4,9 @@ INIT source /u/ian/things/Bessar/trains/eventrun.procs e3 trains_stop eb trains_start -b2 tw ask_slow +b2 tw ask_speed -1 +ec tw ask_speed +1 e6 tw ask_randspeed -ec tw ask_fast ea tw ask_manual 0 e9 tw ask_manual 1 diff --git a/hostside/stopgap-controller b/hostside/stopgap-controller index 607609d..b2c2276 100755 --- a/hostside/stopgap-controller +++ b/hostside/stopgap-controller @@ -29,6 +29,8 @@ set segs {xx yy} set segsasgot {xx yy} set pq {} ;# unset: cdu charged and waiting set speeddirn ff7f +#unset askspeedix +set askspeeds {10 30 50 80 100 126} #set speeddirn ffff80c3fbcced7f #set speeddirn_fixed {speed126 2 80 0} set speeddirn_fixed {} @@ -481,16 +483,27 @@ proc setup_complete {} { #---------- # for keyboard control -proc ask_speed_now {l} { - global speeddirn_fixed - set speeddirn_fixed $l +proc ask_speed {updown} { + global speeddirn_fixed askspeeds askspeedix + set ll [llength $askspeeds] + if {![info exists askspeedix]} { + set askspeedix [expr { + int($ll * 0.5 - 0.5 + 0.5 * $updown) + }] + } else { + incr askspeedix $updown + if {$askspeedix < 0} { set askspeedix 0 } + if {$askspeedix >= $ll} { set askspeedix [expr {$ll - 1}] } + } + set speed [lindex $askspeeds $askspeedix] + set speeddirn_fixed [list speed126 2 $speed 0] maybechange speeddirn 1 } -proc ask_fast {} { ask_speed_now {speed126 2 126 0} } -proc ask_slow {} { ask_speed_now {speed126 2 10 0} } proc ask_randspeed {} { - global speeddirn_fixed; catch { unset speeddirn_fixed } + global speeddirn_fixed askspeedix + catch { unset speeddirn_fixed } + catch { unset askspeedix } maybechange speeddirn 1 } -- 2.30.2