chiark / gitweb /
gui-display on bessar wip
[trains.git] / hostside / stopgap-controller
index 065db6b15b6f101e4a3d8d0613c00d91a423ad18..dd955a4497cb241a6ed88cb44c7a0483e32961b2 100755 (executable)
@@ -25,9 +25,10 @@ set nmradiv 0
 set segs {xx yy}
 set segsasgot {xx yy}
 set pq {} ;# unset: cdu charged and waiting
-#set speeddirn ff7f
-set speeddirn ffff80c3fbcced7f
+set speeddirn ff7f
+#set speeddirn ffff80c3fbcced7f
 #set speeddirn_fixed {speed126 2 80 0}
+set speeddirn_fixed {}
 set funcs ff7f
 # unset pointpos($point)
 # unset segdetect($seg) ;# unset: shown D0; {}: shown D1; or: after id, D1->0
@@ -39,8 +40,8 @@ proc gui {m} {
 proc gui_init {} {
     global watchdog polarity segdetect
     gui "M A2 0"
-    gui "M A5 0 J"
-    gui "M A6 0 J"
+#    gui "M A5 0 J"
+#    gui "M A6 0 J"
     if {[info exists watchdog]} { gui "P 1" }
     gui_polarity
     foreach seg [array names segdetect] {
@@ -383,6 +384,7 @@ proc maybechange {thing} {
     } else {
        debug "fixed $thing $fixed"
        set l $fixed
+       if {![llength $l]} { return 0 }
     }
     set bin [eval exec ./hostside-old -s/dev/stdout $l]
     binary scan $bin H* x
@@ -404,7 +406,11 @@ proc changewhat {} {
 
 proc onreadcmd {} {
     if {[gets stdin l] < 0} {
-       if {[eof stdin]} { fileevent stdin readable {} }
+       if {[eof stdin]} {
+           puts stderr "stopgap-controller got eof, quitting"
+           puts "GUI exit 0"
+           exit 0
+       }
        return
     }
     eval $l
@@ -443,6 +449,20 @@ proc setup_complete {} {
     tellpic 0a
 }
 
+
+#----------
+# for keyboard control
+
+proc ask_fast {} {
+    global speeddirn_fixed; set speeddirn_fixed {speed126 2 126 0}
+}
+proc ask_slow {} {
+    global speeddirn_fixed; set speeddirn_fixed {speed126 2 126 10}
+}
+proc ask_randspeed {} {
+    global speeddirn_fixed; catch { unset speeddirn_fixed }
+}    
+
 setup
 gui_init
 vwait end