From 17bcd7522b285b11417ef805251cd2b4708a929b Mon Sep 17 00:00:00 2001 From: ian Date: Sat, 31 Dec 2005 20:42:58 +0000 Subject: [PATCH] fixed up at start of party --- hostside/stopgap-controller | 62 +++++++++++++++++++++++-------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/hostside/stopgap-controller b/hostside/stopgap-controller index 36dfe29..ace2905 100755 --- a/hostside/stopgap-controller +++ b/hostside/stopgap-controller @@ -170,7 +170,7 @@ proc pt_maybe {point oneisright} { pt_must $point $pos } -proc s0 {seg} { +proc s0 {v seg} { upvar #0 segdetect($seg) segd if {![info exists segd]} { debug "segment $seg = already" @@ -187,9 +187,10 @@ proc s0t {seg} { unset segd gui "D0 $seg" } -proc s1 {seg} { +proc s1 {v seg} { upvar #0 segdetect($seg) segd if {![info exists segd]} { + pm_detect $v debug "segment $seg ! (overwrites =)" } elseif {[string length $segd]} { debug "segment $seg ! (cancels =)" @@ -204,25 +205,32 @@ proc s1 {seg} { proc pm_maydetect {d seg} { switch -exact $seg { - 06 { s$d X10 } - 09 { s$d X8 } - 0a { s$d X6 } - 04 { s$d X5 } - 02 { s$d X7 } - 07 { s$d X9 } - 14 { s$d A5 } - 20 { s$d A6 } - 1a { s$d A4 } - 10 { s$d A2 } - 03 { s$d X1 } - 05 { s$d X3 } - 16 { s$d A3 } - 1c { s$d A1 } - 08 { s$d X2 } - 0b { s$d X4 } + 06 { s$d $seg X10 } + 09 { s$d $seg X8 } + 0a { s$d $seg X6 } + 04 { s$d $seg X5 } + 02 { s$d $seg X7 } + 07 { s$d $seg X9 } + 14 { s$d $seg A5 } + 20 { s$d $seg A6 } + 1a { s$d $seg A4 } + 10 { s$d $seg A2 } + 03 { s$d $seg X1 } + 05 { s$d $seg X3 } + 16 { s$d $seg A3 } + 1c { s$d $seg A1 } + 08 { s$d $seg X2 } + 0b { s$d $seg X4 } } } +#proc pm_nodetect {seg} { +# global segsasgot +# if {![string compare $seg [lindex $segsasgot 1]]} { +# set segsasgot [list [lindex $segsasgot 1] [lindex $segsasgot 0]] +# } +#} + proc pm_detect {seg} { global segs pname segsasgot if {[string compare $seg [lindex $segsasgot 1]]} { @@ -232,6 +240,11 @@ proc pm_detect {seg} { set segs $segsasgot } debug "pm_detect $seg ($segsasgot) ($segs) $pname$seg" +# if {[lsearch -exact { +# 06 09 0a 04 02 07 14 20 +# 0b 08 1c 16 +# 1a 10 03 05 +# } $seg] < 0} return switch -exact $pname$seg { l16 - l1c - l08 - l0b { polarity y } l10 - l1a - l03 - l05 { polarity x } @@ -250,10 +263,10 @@ proc pm_detect {seg} { 20 { pt_ifthenmust "42 43 A6" 1 "02 03 A5" 1 } } switch -exact [join $segs -] { - 02-07 { pt_maybe "00 01 X7" 0 } - 07-02 { pt_maybe "02 03 A5" 1 } - 09-06 { pt_maybe "40 41 X8" 1 } - 06-09 { pt_maybe "42 43 A6" 0 } + 02-07 { pt_maybe "02 03 A5" 1 } + 07-02 { pt_maybe "00 01 X7" 0 } + 09-06 { pt_maybe "42 43 A6" 0 } + 06-09 { pt_maybe "40 41 X8" 1 } } } @@ -287,13 +300,14 @@ proc fp {m} { } proc frompic {m} { + set v [lindex $m 1] switch -glob [lindex $m 0] { 01 - 02 { tellnmra $m } 09 { fp $m; pm_hello } 07 { puts "short circuit"; exit 1 } 28 { fp $m; pm_charged } - 9[0-7] { fp $m; pm_maydetect 0 [lindex $m 1] } - 9? { fp $m; pm_detect [lindex $m 1]; pm_maydetect 1 [lindex $m 1] } + 9[0-7] { fp $m; pm_maydetect 0 $v } + 9? { fp $m; pm_maydetect 1 $v } 0a - [234567]? { puts "pic debug $m" } * { fp $m; fail "pic unknown $m" } } -- 2.30.2