74 lines
2.2 KiB
Tcl
74 lines
2.2 KiB
Tcl
proc helium_register {ctrl node {vessel none}} {
|
|
global device_name
|
|
if {[catch {set device_name}]} {
|
|
set device_name [result device name]
|
|
}
|
|
catch {
|
|
if {$vessel eq "none"} {
|
|
set p "prep0"
|
|
set instrument [result instrument]
|
|
set label ${instrument}_$device_name
|
|
} else {
|
|
set p "prep0v"
|
|
set instrument [result instrument]_v
|
|
set label ${instrument}essel
|
|
}
|
|
$ctrl updatescript $node "helium_update $p $instrument $label"
|
|
if {[sicsdescriptor $p] eq "notfound"} {
|
|
stdConfig::make -name $p -driver seaclient -port linse-c:8640 -permanent 2
|
|
catch {seaclient_list makeitem $p}
|
|
# stdConfig::make -name $p -driver seaclient -port linse-c:8640 -permanent 0
|
|
}
|
|
}
|
|
}
|
|
|
|
proc helium_update {p instrument label value} {
|
|
# Usage example: _lev updatescript /lev "helium_update prep0v dmc dmc_vessel"
|
|
catch {
|
|
if {[silent "" sct geterror] eq ""} {
|
|
$p / helium_instr_update $instrument $label $value
|
|
} else {
|
|
$p / helium_instr_update $instrument $label none
|
|
}
|
|
}
|
|
}
|
|
|
|
proc helium_instr_update {instrument label value} {
|
|
# this script is used on seaman
|
|
global helium_last
|
|
|
|
set now [DoubleTime]
|
|
if {[helium_list exists $instrument]} {
|
|
if {$value eq "none"} {
|
|
helium_list deleteitem $instrument
|
|
catch {helium_ts deleteitem $instrument}
|
|
GraphItem shown helium_list.$instrument 0
|
|
} else {
|
|
if {[silent "" hdbgetpropval /helium_list/$instrument logger_name] eq ""} {
|
|
logsetup /helium_list/$instrument
|
|
}
|
|
helium_list $instrument $value
|
|
helium_ts $instrument $now
|
|
}
|
|
} elseif {$value ne "none"} {
|
|
helium_list makeitem $instrument $value
|
|
GraphAdd helium_list.$instrument %_1 $label auto
|
|
logsetup /helium_list/$instrument
|
|
helium_ts makeitem $instrument $now
|
|
}
|
|
if {$now > [silent 0 set helium_last] + 60} {
|
|
set helium_last $now
|
|
# check for items to be removed
|
|
foreach ins [helium_list items] {
|
|
set last [silent $now result helium_ts $ins]
|
|
if {$now > $last + 600} {
|
|
catch {helium_list deleteitem $ins}
|
|
catch {helium_ts deleteitem $ins}
|
|
GraphItem shown helium_list.$ins 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
publishLazy helium_instr_update
|