Regen 3He SC driver
This commit is contained in:
@ -58,7 +58,7 @@ proc ::scobj::he3_polanal::chkWrite {tc_root} {
|
||||
set catch_status [ catch {
|
||||
debug_log ${tc_root} 1 "chkWrite tc_root=${tc_root} sct=[sct] resp=[sct result]"
|
||||
# chkWrite hook code starts
|
||||
rdValue ${tc_root}
|
||||
[namespace current]::rdValue ${tc_root}
|
||||
# chkWrite hook code ends
|
||||
return "idle"
|
||||
} catch_message ]
|
||||
@ -83,6 +83,16 @@ proc ::scobj::he3_polanal::getValue {tc_root nextState cmd_str} {
|
||||
handle_exception ${catch_status} ${catch_message}
|
||||
}
|
||||
|
||||
# function to check the write parameter on a device
|
||||
proc ::scobj::he3_polanal::noResponse {tc_root} {
|
||||
set catch_status [ catch {
|
||||
debug_log ${tc_root} 1 "noResponse tc_root=${tc_root} sct=[sct] resp=[sct result]"
|
||||
# noResponse hook code goes here
|
||||
return "idle"
|
||||
} catch_message ]
|
||||
handle_exception ${catch_status} ${catch_message}
|
||||
}
|
||||
|
||||
# function to parse the read of a parameter on a device
|
||||
proc ::scobj::he3_polanal::rdValue {tc_root} {
|
||||
set catch_status [ catch {
|
||||
@ -105,7 +115,7 @@ proc ::scobj::he3_polanal::rdValue {tc_root} {
|
||||
}
|
||||
set my_name [basename [pathname [sct]]]
|
||||
if {![string equal -nocase "[lindex ${dlist} 0]" "${my_name}"]} {
|
||||
error "[lindex ${dlist} 0] is not ${my_name}"
|
||||
error "[lindex ${dlist} 0] is not my name (${my_name})"
|
||||
}
|
||||
if {[string match "*Not Active*" "${data}"]} {
|
||||
set data 0
|
||||
@ -115,6 +125,26 @@ proc ::scobj::he3_polanal::rdValue {tc_root} {
|
||||
} else {
|
||||
set data [lindex ${dlist} 1]
|
||||
}
|
||||
set path [pathname [sct]]
|
||||
if {[llength ${dlist}] > 2} {
|
||||
set new_value [lindex ${dlist} 2]
|
||||
if { "${new_value}" == "NaN" } {
|
||||
set new_value 0
|
||||
}
|
||||
hupdateif ${path}/Amplitude "${new_value}"
|
||||
}
|
||||
if {[llength ${dlist}] > 3} {
|
||||
hupdateif ${path}/Freq "[lindex ${dlist} 3]"
|
||||
}
|
||||
if {[llength ${dlist}] > 4} {
|
||||
hupdateif ${path}/Phase "[lindex ${dlist} 4]"
|
||||
}
|
||||
if {[llength ${dlist}] > 5} {
|
||||
hupdateif ${path}/Time2 "[lindex ${dlist} 5]"
|
||||
}
|
||||
if {[llength ${dlist}] > 6} {
|
||||
hupdateif ${path}/Field "[lindex ${dlist} 6]"
|
||||
}
|
||||
# rdValue hook code ends
|
||||
if { [hpropexists [sct] geterror] } {
|
||||
debug_log ${tc_root} 9 "[sct] error: [sct geterror]"
|
||||
@ -193,6 +223,65 @@ proc ::scobj::he3_polanal::mkDriver { sct_controller name device_class simulatio
|
||||
hsetprop ${scobj_hpath}/analyser klass "@none"
|
||||
hsetprop ${scobj_hpath}/analyser type "part"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/Amplitude plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude control true
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude data true
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude type "part"
|
||||
hsetprop ${scobj_hpath}/analyser/Amplitude nxalias "${name}_analyser_Amplitude"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/Field plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/Field control true
|
||||
hsetprop ${scobj_hpath}/analyser/Field data true
|
||||
hsetprop ${scobj_hpath}/analyser/Field mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/Field nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/Field units Oersted
|
||||
hsetprop ${scobj_hpath}/analyser/Field oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/Field klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/Field sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/analyser/Field type "part"
|
||||
hsetprop ${scobj_hpath}/analyser/Field nxalias "${name}_analyser_Field"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/Freq plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/Freq control true
|
||||
hsetprop ${scobj_hpath}/analyser/Freq data true
|
||||
hsetprop ${scobj_hpath}/analyser/Freq mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/Freq nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/Freq units Hertz
|
||||
hsetprop ${scobj_hpath}/analyser/Freq oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/Freq klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/Freq sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/analyser/Freq type "part"
|
||||
hsetprop ${scobj_hpath}/analyser/Freq nxalias "${name}_analyser_Freq"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/Phase plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/Phase control true
|
||||
hsetprop ${scobj_hpath}/analyser/Phase data true
|
||||
hsetprop ${scobj_hpath}/analyser/Phase mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/Phase nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/Phase units Degree
|
||||
hsetprop ${scobj_hpath}/analyser/Phase oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/Phase klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/Phase sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/analyser/Phase type "part"
|
||||
hsetprop ${scobj_hpath}/analyser/Phase nxalias "${name}_analyser_Phase"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/Time2 plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 control true
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 data true
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 units Second
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 type "part"
|
||||
hsetprop ${scobj_hpath}/analyser/Time2 nxalias "${name}_analyser_Time2"
|
||||
|
||||
hfactory ${scobj_hpath}/analyser/spin plain user text
|
||||
hsetprop ${scobj_hpath}/analyser/spin read ${ns}::getValue ${scobj_hpath} rdValue {analyser}
|
||||
hsetprop ${scobj_hpath}/analyser/spin rdValue ${ns}::rdValue ${scobj_hpath}
|
||||
@ -203,7 +292,7 @@ proc ::scobj::he3_polanal::mkDriver { sct_controller name device_class simulatio
|
||||
hsetprop ${scobj_hpath}/analyser/spin data true
|
||||
hsetprop ${scobj_hpath}/analyser/spin mutable true
|
||||
hsetprop ${scobj_hpath}/analyser/spin nxsave true
|
||||
hsetprop ${scobj_hpath}/analyser/spin values -1,+1
|
||||
hsetprop ${scobj_hpath}/analyser/spin values +,-,0
|
||||
hsetprop ${scobj_hpath}/analyser/spin oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/analyser/spin klass "parameter"
|
||||
hsetprop ${scobj_hpath}/analyser/spin sdsinfo "::nexus::scobj::sdsinfo"
|
||||
@ -222,6 +311,65 @@ proc ::scobj::he3_polanal::mkDriver { sct_controller name device_class simulatio
|
||||
hsetprop ${scobj_hpath}/polariser klass "@none"
|
||||
hsetprop ${scobj_hpath}/polariser type "part"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/Amplitude plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude control true
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude data true
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude type "part"
|
||||
hsetprop ${scobj_hpath}/polariser/Amplitude nxalias "${name}_polariser_Amplitude"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/Field plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/Field control true
|
||||
hsetprop ${scobj_hpath}/polariser/Field data true
|
||||
hsetprop ${scobj_hpath}/polariser/Field mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/Field nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/Field units Oersted
|
||||
hsetprop ${scobj_hpath}/polariser/Field oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/Field klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/Field sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/polariser/Field type "part"
|
||||
hsetprop ${scobj_hpath}/polariser/Field nxalias "${name}_polariser_Field"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/Freq plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/Freq control true
|
||||
hsetprop ${scobj_hpath}/polariser/Freq data true
|
||||
hsetprop ${scobj_hpath}/polariser/Freq mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/Freq nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/Freq units Hertz
|
||||
hsetprop ${scobj_hpath}/polariser/Freq oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/Freq klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/Freq sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/polariser/Freq type "part"
|
||||
hsetprop ${scobj_hpath}/polariser/Freq nxalias "${name}_polariser_Freq"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/Phase plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/Phase control true
|
||||
hsetprop ${scobj_hpath}/polariser/Phase data true
|
||||
hsetprop ${scobj_hpath}/polariser/Phase mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/Phase nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/Phase units Degree
|
||||
hsetprop ${scobj_hpath}/polariser/Phase oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/Phase klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/Phase sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/polariser/Phase type "part"
|
||||
hsetprop ${scobj_hpath}/polariser/Phase nxalias "${name}_polariser_Phase"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/Time2 plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 control true
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 data true
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 units Second
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 sdsinfo "::nexus::scobj::sdsinfo"
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 type "part"
|
||||
hsetprop ${scobj_hpath}/polariser/Time2 nxalias "${name}_polariser_Time2"
|
||||
|
||||
hfactory ${scobj_hpath}/polariser/spin plain user text
|
||||
hsetprop ${scobj_hpath}/polariser/spin read ${ns}::getValue ${scobj_hpath} rdValue {polariser}
|
||||
hsetprop ${scobj_hpath}/polariser/spin rdValue ${ns}::rdValue ${scobj_hpath}
|
||||
@ -232,7 +380,7 @@ proc ::scobj::he3_polanal::mkDriver { sct_controller name device_class simulatio
|
||||
hsetprop ${scobj_hpath}/polariser/spin data true
|
||||
hsetprop ${scobj_hpath}/polariser/spin mutable true
|
||||
hsetprop ${scobj_hpath}/polariser/spin nxsave true
|
||||
hsetprop ${scobj_hpath}/polariser/spin values -1,+1
|
||||
hsetprop ${scobj_hpath}/polariser/spin values +,-,0
|
||||
hsetprop ${scobj_hpath}/polariser/spin oldval UNKNOWN
|
||||
hsetprop ${scobj_hpath}/polariser/spin klass "parameter"
|
||||
hsetprop ${scobj_hpath}/polariser/spin sdsinfo "::nexus::scobj::sdsinfo"
|
||||
|
Reference in New Issue
Block a user