chiark
/
gitweb
/
~ijackson
/
trains.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8ea1b9e
)
more than two manual speeds
author
ian
<ian>
Fri, 6 Jan 2006 01:09:16 +0000
(
01:09
+0000)
committer
ian
<ian>
Fri, 6 Jan 2006 01:09:16 +0000
(
01:09
+0000)
hostside/eventrun.events
patch
|
blob
|
history
hostside/stopgap-controller
patch
|
blob
|
history
diff --git
a/hostside/eventrun.events
b/hostside/eventrun.events
index 9d6f07e2ab4a74182647e45972be3f11f1335234..6110ed1684f48d4e607cd1430a1dd38e41ee7dcf 100644
(file)
--- 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
e3 trains_stop
eb trains_start
-b2 tw ask_slow
+b2 tw ask_speed -1
+ec tw ask_speed +1
e6 tw ask_randspeed
e6 tw ask_randspeed
-ec tw ask_fast
ea tw ask_manual 0
e9 tw ask_manual 1
ea tw ask_manual 0
e9 tw ask_manual 1
diff --git
a/hostside/stopgap-controller
b/hostside/stopgap-controller
index 607609d0bd64ec5a117a560a007aea6c09a47a1e..b2c2276866aabc013b37147e62ebd4045c5e0341 100755
(executable)
--- 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
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 {}
#set speeddirn ffff80c3fbcced7f
#set speeddirn_fixed {speed126 2 80 0}
set speeddirn_fixed {}
@@
-481,16
+483,27
@@
proc setup_complete {} {
#----------
# for keyboard control
#----------
# 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
}
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 {} {
proc ask_randspeed {} {
- global speeddirn_fixed; catch { unset speeddirn_fixed }
+ global speeddirn_fixed askspeedix
+ catch { unset speeddirn_fixed }
+ catch { unset askspeedix }
maybechange speeddirn 1
}
maybechange speeddirn 1
}