Add read of tower down switch

Must be down to run test
r3146 | dcl | 2011-05-19 12:47:06 +1000 (Thu, 19 May 2011) | 3 lines
This commit is contained in:
Douglas Clowes
2011-05-19 12:47:06 +10:00
parent a2a4a3cd39
commit e65cc662c6

View File

@@ -219,6 +219,54 @@ debug_log "rdPower [sct] [sct result]"
}
return idle
}
proc rdTower {tc_root} {
debug_log "rdTower [sct] [sct result]"
set data [sct result]
switch -glob -- $data {
"ASCERR:*" {
sct geterror $data
}
default {
if { [hpropexists [sct] geterror] } {
hdelprop [sct] geterror
}
set flist [split $data " "]
if {[llength $flist] != 2} {
sct geterror "Field error: expected two fields, received $data"
return idle
}
set data [lindex $flist 0]
set stts [lindex $flist 1]
if {[string length $stts] != 4} {
sct geterror "Length error: expected RSxx but received $data"
} elseif {[string range $stts 0 1] != "RS"} {
sct geterror "Unexpected status: expected RSxx but received $stts"
} elseif {![string is xdigit [string range $stts 2 3]]} {
sct geterror "Hexadecimal error: expected RSxx but received $data"
} elseif {[string length $data] != 5} {
sct geterror "Length error: expected SRDxx but received $data"
} elseif {[string range $data 0 2] != "SRD"} {
sct geterror "Unexpected response: expected SRDxx but received $data"
} elseif {[string range $data 3 4] != "00" && [string range $data 3 4] != "10"} {
sct geterror "Data error: expected SRD00 or SRD10 but received $data"
} else {
set data [string range $data 3 4]
if {$data == "10"} {
set data "1"
}
debug_log "Tower data=$data, oldval=[sct oldval]"
if {$data != [sct oldval]} {
sct oldval $data
sct update $data
sct utime readtime
}
}
}
}
return idle
}
proc rdVisc {tc_root} {
debug_log "rdVisc [sct] [sct result]"
set data [sct result]
@@ -885,6 +933,7 @@ proc createNode {scobj_hpath sct_controller cmdGroup varName readable writable\
{} setpoint 0 1 0 float user {} {} {0} {setTemp.chkWrite} {}\
{} speed 1 1 0 float user {RSR} {rdSpeed} {0} {setSpeed.chkWrite} {}\
{} power 1 0 0 float internal {RSC} {rdPower} {0} {} {}\
{} tower 1 0 0 float internal {RSD} {rdTower} {0} {} {}\
{} viscosity 1 0 0 float internal {RSI} {rdVisc} {0} {} {}\
{} profile 0 1 0 text user {} {} {0} {setProf.ackProf} {}\
{} test 1 1 0 text user {RD000000} {rdTest} {0} {setTest.ackTest} {}\