chiark / gitweb /
also measure stopping distances
authorian <ian>
Fri, 18 Apr 2008 21:15:16 +0000 (21:15 +0000)
committerian <ian>
Fri, 18 Apr 2008 21:15:16 +0000 (21:15 +0000)
hostside/measure-speeds

index b881fc035b56e3eaa23caeaa0016d19a0d56750f..ea5bf7995bd1ae815745cb2a58126213519b08c1 100755 (executable)
@@ -31,7 +31,9 @@ proc startup {} {
     set last_fast_speed 0
     set noise {}
     for {set i 0} {$i < 256} {incr i} { append noise \\x [hbytes random 1] }
-    foreach f {funcs0to4 funcs5to8} {
+#    foreach f {funcs0to4 funcs5to8} {
+#    }
+    foreach f {funcs5to8} {
        set m [exec ./hostside-old -s/dev/stdout $f $loco 0x1fff]
        set m [hbytes raw2h $m]
        lappend funcs_msgs ffff$m {}
@@ -194,17 +196,36 @@ proc goto-slow-start-position {speed} {
     instruct-stop-for 1000
 }
 
-proc slow-speed-test {speed} {
+proc begin-slow-test {speed} {
     debug "==================== $speed S ===================="
     goto-slow-start-position $speed
     run-until $speed 9804
+}
+
+proc slow-speed-test {speed} {
+    begin-slow-test $speed
     timing-start
     run-until $speed 980a
     record-mm-per-s S $speed 231 [timing-finish]
     instruct-stop-for 100
 }
 
-proc fast-speed-test {speed} {
+proc slow-stop-test {speed} {
+    begin-slow-test $speed
+    finish-stop-test
+}   
+
+proc finish-stop-test {} {
+    global forever
+    after 10000 {
+       send-now 10
+       exit 0
+    }
+    run-until 0 {}
+    vwait forever
+}
+
+proc prepare-fast-test {speed} {
     global last_fast_speed
     debug "==================== $speed F ===================="
     set start [now-ms]
@@ -221,6 +242,10 @@ proc fast-speed-test {speed} {
        if {$deficit < 0} break
     }
     set last_fast_speed $speed
+}
+
+proc fast-speed-test {speed} {
+    prepare-fast-test $speed
     set ms 0; set mm 0
     set mslaps 0; set mmlaps 0
     while {$ms < 2000} {
@@ -244,11 +269,17 @@ proc fast-speed-test {speed} {
     if {$mslaps} { record-mm-per-s L $speed $mmlaps $mslaps }
 }
 
-proc speed-test {speed} {
+proc fast-stop-test {speed} {
+    prepare-fast-test $speed
+    run-until $speed 9804
+    finish-stop-test
+}
+
+proc run-test {how speed} {
     if {$speed<50} {
-       slow-speed-test $speed
+       slow-$how-test $speed
     } else {
-       fast-speed-test $speed
+       fast-$how-test $speed
     }
 }
 
@@ -259,7 +290,11 @@ set reverse [lindex $argv 2]
 startup
 
 foreach s [lrange $argv 3 end] {
-    speed-test $s
+    if {[regexp {^s(\d+)} $s dummy s]} {
+       run-test stop $s
+    } else {
+       run-test speed $s
+    }
 }
 instruct-stop-for 1000
 send-now 10