add hdb structure

r3745 | jgn | 2012-09-24 14:02:21 +1000 (Mon, 24 Sep 2012) | 1 line
This commit is contained in:
Jing Chen
2012-09-24 14:02:21 +10:00
committed by Douglas Clowes
parent 58b74c6f45
commit 9afb90b311

View File

@@ -136,15 +136,30 @@ proc ::scobj::hv::rdHVStatusFunc {basePath mode} {
if {$mode == "state"} { if {$mode == "state"} {
hset $basePath/status/state "[lindex $replyText 3] [lindex $replyText 4]" hset $basePath/status/state "[lindex $replyText 3] [lindex $replyText 4]"
hset $basePath/status/voltage "[lindex $replyText 5] [lindex $replyText 6]"
hset $basePath/status/current "[lindex $replyText 7] [lindex $replyText 8]"
hset $basePath/status/DetectorHighPressure "[lindex $replyText 10] [lindex $replyText 11]" hset $basePath/status/voltage [lindex $replyText 5]
hset $basePath/status/SampleHighPressure "[lindex $replyText 13] [lindex $replyText 14]" hsetprop $basePath/status/voltage units [lindex $replyText 6]
hset $basePath/status/DetectorLowPressure "[lindex $replyText 16] [lindex $replyText 17]"
hset $basePath/status/SampleLowPressure "[lindex $replyText 19] [lindex $replyText 20]" hset $basePath/status/current [lindex $replyText 7]
hset $basePath/status/pressure5 "[lindex $replyText 22] [lindex $replyText 23]" hsetprop $basePath/status/current units [lindex $replyText 8]
hset $basePath/status/pressure6 "[lindex $replyText 25] [lindex $replyText 26]"
hset $basePath/status/DetectorHighPressure [lindex $replyText 10]
hsetprop $basePath/status/DetectorHighPressure units [lindex $replyText 11]
hset $basePath/status/SampleHighPressure [lindex $replyText 13]
hsetprop $basePath/status/SampleHighPressure units [lindex $replyText 14]
hset $basePath/status/DetectorLowPressure [lindex $replyText 16]
hsetprop $basePath/status/DetectorLowPressure units [lindex $replyText 17]
hset $basePath/status/SampleLowPressure [lindex $replyText 19]
hsetprop $basePath/status/SampleLowPressure units [lindex $replyText 20]
hset $basePath/status/pressure5 [lindex $replyText 22]
hsetprop $basePath/status/pressure5 units [lindex $replyText 23]
hset $basePath/status/pressure6 [lindex $replyText 25]
hsetprop $basePath/status/pressure6 units [lindex $replyText 26]
hset $basePath/status/PLC-S "[lindex $replyText 28]" hset $basePath/status/PLC-S "[lindex $replyText 28]"
hset $basePath/status/PLC-H "[lindex $replyText 30]" hset $basePath/status/PLC-H "[lindex $replyText 30]"
@@ -164,13 +179,19 @@ proc ::scobj::hv::rdHVStatusFunc {basePath mode} {
} elseif {$mode == "config"} { } elseif {$mode == "config"} {
hset $basePath/config/mode "[lindex $replyText 3] [lindex $replyText 4]" hset $basePath/config/mode "[lindex $replyText 3] [lindex $replyText 4]"
hset $basePath/config/hv "[lindex $replyText 5]" hset $basePath/config/hv [lindex $replyText 5]
hset $basePath/config/pressure_threshold "[lindex $replyText 6] [lindex $replyText 7]"
} else {
return idle
}
sct utime readtime hset $basePath/config/pressure_threshold [lindex $replyText 6]
hsetprop $basePath/config/pressure_threshold units [lindex $replyText 7]
} else {
#return idle
}
}
if {$replyStr != [sct oldval]} {
sct oldval $replyStr
sct update $replyStr
sct utime readtime
} }
return idle return idle
@@ -199,104 +220,111 @@ proc ::scobj::hv::mkHV {argList} {
sicslist setatt $pa(NAME) klass instrument sicslist setatt $pa(NAME) klass instrument
sicslist setatt $pa(NAME) long_name $pa(NAME) sicslist setatt $pa(NAME) long_name $pa(NAME)
hfactory /sics/$pa(NAME)/msg plain user text set hvPath /sics/$pa(NAME)
hfactory /sics/$pa(NAME)/dataRecording plain user text
hset /sics/$pa(NAME)/dataRecording "ON" foreach {hPath type priv datatype init } {
msg plain user text UNKNOW
dataRecording plain user text ON
status plain user none UNKNOW
status/voltage plain user float 0
status/current plain user float 0
status/DetectorHighPressure plain user float 0
status/SampleHighPressure plain user float 0
status/DetectorLowPressure plain user float 0
status/SampleLowPressure plain user float 0
status/pressure5 plain user float 0
status/pressure6 plain user float 0
hfactory /sics/$pa(NAME)/status plain user none status/state plain user text UNKNOW
hfactory /sics/$pa(NAME)/status/voltage plain user text status/PLC-S plain user text UNKNOW
hfactory /sics/$pa(NAME)/status/current plain user text status/PLC-H plain user text UNKNOW
status/Presr-S plain user text UNKNOW
status/Presr-H plain user text UNKNOW
status/Soft-S plain user text UNKNOW
status/Hard-S plain user text UNKNOW
hfactory /sics/$pa(NAME)/status/DetectorHighPressure plain user text config plain user none UNKNOW
hfactory /sics/$pa(NAME)/status/SampleHighPressure plain user text config/hv plain user float 0
hfactory /sics/$pa(NAME)/status/DetectorLowPressure plain user text config/mode plain user text UNKNOW
hfactory /sics/$pa(NAME)/status/SampleLowPressure plain user text config/pressure_threshold plain user float 0
hfactory /sics/$pa(NAME)/status/pressure5 plain user text } {
hfactory /sics/$pa(NAME)/status/pressure6 plain user text hfactory $hvPath/$hPath $type $priv $datatype
hset $hvPath/$hPath $init
}
hfactory /sics/$pa(NAME)/status/state plain user text hsetprop $hvPath/status oldval UNKNOWN
hfactory /sics/$pa(NAME)/status/PLC-S plain user text hsetprop $hvPath/config oldval UNKNOWN
hfactory /sics/$pa(NAME)/status/PLC-H plain user text
hfactory /sics/$pa(NAME)/status/Presr-S plain user text
hfactory /sics/$pa(NAME)/status/Presr-H plain user text
hfactory /sics/$pa(NAME)/status/Soft-S plain user text
hfactory /sics/$pa(NAME)/status/Hard-S plain user text
hfactory /sics/$pa(NAME)/config plain user none
hfactory /sics/$pa(NAME)/config/hv plain user text
hfactory /sics/$pa(NAME)/config/mode plain user text
hfactory /sics/$pa(NAME)/config/pressure_threshold plain user text
#makesctcontroller sct_hv rfamp $pa(IP):$pa(PORT) #makesctcontroller sct_hv rfamp $pa(IP):$pa(PORT)
makesctcontroller sct_hv std $pa(IP):$pa(PORT) makesctcontroller sct_hv std $pa(IP):$pa(PORT)
hsetprop /sics/$pa(NAME)/status read ::scobj::hv::getHVStatusFunc "state" hsetprop $hvPath/status read ::scobj::hv::getHVStatusFunc "state"
hsetprop /sics/$pa(NAME)/status rdHVStatus ::scobj::hv::rdHVStatusFunc /sics/$pa(NAME) "state" hsetprop $hvPath/status rdHVStatus ::scobj::hv::rdHVStatusFunc $hvPath "state"
hsetprop /sics/$pa(NAME)/config read ::scobj::hv::getHVStatusFunc "config" hsetprop $hvPath/config read ::scobj::hv::getHVStatusFunc "config"
hsetprop /sics/$pa(NAME)/config rdHVStatus ::scobj::hv::rdHVStatusFunc /sics/$pa(NAME) "config" hsetprop $hvPath/config rdHVStatus ::scobj::hv::rdHVStatusFunc $hvPath "config"
# Initialise properties required for generating the API for GumTree and to save data
::scobj::hinitprops $pa(NAME) status config
::scobj::hinitprops $pa(NAME) status/voltage status/current status/state
::scobj::hinitprops $pa(NAME) status/DetectorHighPressure status/SampleHighPressure status/DetectorLowPressure status/SampleLowPressure status/pressure5 status/pressure6
::scobj::hinitprops $pa(NAME) status/PLC-S status/PLC-H status/Presr-S status/Presr-H status/Soft-S status/Hard-S
::scobj::hinitprops $pa(NAME) config/hv config/pressure_threshold config/mode
if {[SplitReply [environment_simulation]]=="false"} { if {[SplitReply [environment_simulation]]=="false"} {
sct_hv poll /sics/$pa(NAME)/status $pa(INTERVAL) sct_hv poll $hvPath/status $pa(INTERVAL)
sct_hv poll /sics/$pa(NAME)/config $pa(INTERVAL) sct_hv poll $hvPath/config $pa(INTERVAL)
} }
hsetprop /sics/$pa(NAME) tuning $pa(TUNING) hsetprop $hvPath tuning $pa(TUNING)
if {$pa(TUNING)} { if {$pa(TUNING)} {
hfactory /sics/$pa(NAME)/set_hv plain user int foreach {hpath type priv datatype mark} {
hfactory /sics/$pa(NAME)/set_pressure plain user int set_hv plain user float voltage
hfactory /sics/$pa(NAME)/set_mode plain user text set_pressure plain user float pressure
hfactory /sics/$pa(NAME)/set_date plain user text set_mode plain user text mode
hfactory /sics/$pa(NAME)/clear_error plain user text set_date plain user text date
hfactory /sics/$pa(NAME)/set_PowerUp plain user text clear_error plain user text clear
hfactory /sics/$pa(NAME)/set_PowerDown plain user text set_PowerUp plain user text PowerUp
hfactory /sics/$pa(NAME)/set_dataRecording plain user text set_PowerDown plain user text PowerDown
set_dataRecording plain user text recording
} {
hfactory $hvPath/$hpath $type $priv $datatype
hsetprop $hvPath/$hpath write ::scobj::hv:setting $mark $hvPath
hsetprop $hvPath/$hpath checkReply ::scobj::hv::checkReplyFunc $hvPath
::scobj::hinitprops $pa(NAME) set_hv set_pressure set_mode set_date clear_error set_PowerUp set_PowerDown set_dataRecording if {[SplitReply [environment_simulation]]=="false"} {
sct_hv write $hvPath/$hpath $pa(INTERVAL)
hsetprop /sics/$pa(NAME)/set_hv write ::scobj::hv:setting "voltage" /sics/$pa(NAME) }
hsetprop /sics/$pa(NAME)/set_hv checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_pressure write ::scobj::hv:setting "pressure" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_pressure checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_mode write ::scobj::hv:setting "mode" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_mode checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_date write ::scobj::hv:setting "date" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_date checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/clear_error write ::scobj::hv:setting "clear" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/clear_error checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_PowerUp write ::scobj::hv:setting "PowerUp" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_PowerUp checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_PowerDown write ::scobj::hv:setting "PowerDown" /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_PowerDown checkReply ::scobj::hv::checkReplyFunc /sics/$pa(NAME)
hsetprop /sics/$pa(NAME)/set_dataRecording write ::scobj::hv:setting "recording" /sics/$pa(NAME)
if {[SplitReply [environment_simulation]]=="false"} {
sct_hv write /sics/$pa(NAME)/set_hv $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_pressure $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_mode $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_date $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/clear_error $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_PowerUp $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_PowerDown $pa(INTERVAL)
sct_hv write /sics/$pa(NAME)/set_dataRecording $pa(INTERVAL)
} }
} }
foreach {hpath klass control data priv type} {
/sics/hv instrument true true spy part
/sics/hv/status NXsensor true true user NXsensor
} {
hsetprop $hpath klass $klass
hsetprop $hpath privilege $priv
hsetprop $hpath type $type
hsetprop $hpath control $control
hsetprop $hpath data $data
}
foreach {hpath klass control data nxsave mutable priv alias} {
/sics/hv/status/voltage NXsensor true true true true user hv-voltage
/sics/hv/status/current NXsensor true true true true user hv-current
/sics/hv/status/DetectorHighPressure NXsensor true true true true user hv-DetectorHighPressure
/sics/hv/status/DetectorLowPressure NXsensor true true true true user hv-DetectorLowPressure
/sics/hv/status/SampleHighPressure NXsensor true true true true user hv-SampleHighPressure
/sics/hv/status/SampleLowPressure NXsensor true true true true user hv-SampleLowPressure
/sics/hv/status/pressure5 NXsensor true true true true user hv-pressure5
/sics/hv/status/pressure6 NXsensor true true true true user hv-pressure6
} {
hsetprop $hpath nxalias $alias
hsetprop $hpath klass $klass
hsetprop $hpath privilege $priv
hsetprop $hpath control $control
hsetprop $hpath data $data
hsetprop $hpath nxsave $nxsave
hsetprop $hpath mutable $mutable
hsetprop $hpath sdsinfo ::nexus::scobj::sdsinfo
}
# Initialise properties required for generating the API for GumTree and to save data
::scobj::hinitprops $pa(NAME)
} }
proc hv_status {} { proc hv_status {} {
@@ -316,7 +344,7 @@ proc hv_clear_error {} {
proc hv_vol {{vol ""} args} { proc hv_vol {{vol ""} args} {
if {$vol == ""} { if {$vol == ""} {
hget /sics/hv/config/hv hget /instrument/hv/config/hv
} else { } else {
set cmd "set hv=$vol\r\n" set cmd "set hv=$vol\r\n"
sct_hv send $cmd sct_hv send $cmd
@@ -325,7 +353,7 @@ proc hv_vol {{vol ""} args} {
proc hv_pressure {{pressure ""} args} { proc hv_pressure {{pressure ""} args} {
if {$pressure == ""} { if {$pressure == ""} {
hget /sics/hv/config/pressure_threshold hget /instrument/hv/config/pressure_threshold
} else { } else {
set cmd "set pressure=$pressure\r\n" set cmd "set pressure=$pressure\r\n"
sct_hv send $cmd sct_hv send $cmd
@@ -334,7 +362,7 @@ proc hv_pressure {{pressure ""} args} {
proc hv_mode {{mode ""} args} { proc hv_mode {{mode ""} args} {
if {$mode == ""} { if {$mode == ""} {
hget /sics/hv/config/mode hget /instrument/hv/config/mode
} else { } else {
set cmd "set mode=$mode\r\n" set cmd "set mode=$mode\r\n"
sct_hv send $cmd sct_hv send $cmd
@@ -366,10 +394,10 @@ proc hv_help {} {
proc set_data_record {args} { proc set_data_record {args} {
switch $args { switch $args {
"ON" {hset /sics/hv/dataRecording "ON"} "ON" {hset /instrument/hv/dataRecording "ON"}
"on" {hset /sics/hv/dataRecording "ON"} "on" {hset /instrument/hv/dataRecording "ON"}
"OFF" {hset /sics/hv/dataRecording "OFF"} "OFF" {hset /instrument/hv/dataRecording "OFF"}
"off" {hset /sics/hv/dataRecording "OFF"} "off" {hset /instrument/hv/dataRecording "OFF"}
default {error "ERROR: please enter 'on' or 'off' to set the switch"} default {error "ERROR: please enter 'on' or 'off' to set the switch"}
} }
} }