chiark / gitweb /
works somewhat better...
[trains.git] / hostside / measure-speeds
index c372546a02a2123fc4f2716c82eb2a2ae545edb7..05da951ded7ede11a61b71c150fb97de0876657c 100755 (executable)
@@ -141,18 +141,6 @@ proc xmit {nmral} {
     xmit-now
 }
 
-proc goto-slow-start-position {speed} {
-    global last_fast_speed
-    if {$last_fast_speed >= 0} {
-       run-until -100 {980a 9809}
-       set last_fast_speed -1
-    }
-    run-until -40 9804
-    run-until-not -40 980a 100
-    instruct-speed-for -40 [expr {$speed*$speed}]
-    instruct-stop-for 1000
-}
-
 proc record-mm-per-s {speed distance start finish} {
     debug "S $speed: $distance / ( $finish-$start = [expr {$finish-$start}] )"
     set mmpers [expr {$distance*1.0/($finish-$start)}]
@@ -160,20 +148,47 @@ proc record-mm-per-s {speed distance start finish} {
 }
 
 proc now-ms {} {
-    set now [clock clicks -milliseconds]
-    if {[catch { exec dd if=/bin/ls of=/dev/dsp count=1 } m]} { debug "?? $m" }
+    clock clicks -milliseconds
+}
+
+proc now-ms-click {} {
+    set now [now-ms]
+    if {[catch {
+       exec dd if=/bin/ls of=/dev/dsp count=1 > /dev/null
+    } m]} { debug $m }
     return $now
 }
 
+proc timing-start {} {
+    global start
+    set start [now-ms-click]
+}
+proc timing-finish {speed distance} {
+    global start
+    set finish [now-ms-click]
+    record-mm-per-s $speed $distance $start $finish
+}
+
+proc goto-slow-start-position {speed} {
+    global last_fast_speed
+    if {$last_fast_speed >= 0} {
+       run-until -100 {9804 980a}
+       set last_fast_speed -1
+    }
+    run-until -40 9802
+    run-until-not -40 9804 100
+    instruct-speed-for -40 [expr {$speed*$speed}]
+    instruct-stop-for 1000
+}
+
 proc slow-speed-test {speed} {
     debug "==================== $speed S ===================="
     goto-slow-start-position $speed
+    run-until $speed 9804
+    timing-start
     run-until $speed 980a
-    set start [now-ms]
-    run-until $speed 9809
-    set finish [now-ms]
+    timing-finish $speed 231
     instruct-stop-for 100
-    record-mm-per-s $speed 252 $start $finish
 }
 
 proc fast-speed-test {speed} {
@@ -194,10 +209,9 @@ proc fast-speed-test {speed} {
     }
     set last_fast_speed $speed
     run-until $speed 9804
-    set start [now-ms]
+    timing-start
     run-until $speed 9809
-    set finish [now-ms]
-    record-mm-per-s $speed 483 $start $finish
+    timing-finish $speed 483
 }
 
 proc speed-test {speed} {