Regen 3He SC driver
This commit is contained in:
@ -58,7 +58,7 @@ proc ::scobj::he3_polanal::chkWrite {tc_root} {
|
|||||||
set catch_status [ catch {
|
set catch_status [ catch {
|
||||||
debug_log ${tc_root} 1 "chkWrite tc_root=${tc_root} sct=[sct] resp=[sct result]"
|
debug_log ${tc_root} 1 "chkWrite tc_root=${tc_root} sct=[sct] resp=[sct result]"
|
||||||
# chkWrite hook code starts
|
# chkWrite hook code starts
|
||||||
rdValue ${tc_root}
|
[namespace current]::rdValue ${tc_root}
|
||||||
# chkWrite hook code ends
|
# chkWrite hook code ends
|
||||||
return "idle"
|
return "idle"
|
||||||
} catch_message ]
|
} catch_message ]
|
||||||
@ -83,6 +83,16 @@ proc ::scobj::he3_polanal::getValue {tc_root nextState cmd_str} {
|
|||||||
handle_exception ${catch_status} ${catch_message}
|
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
|
# function to parse the read of a parameter on a device
|
||||||
proc ::scobj::he3_polanal::rdValue {tc_root} {
|
proc ::scobj::he3_polanal::rdValue {tc_root} {
|
||||||
set catch_status [ catch {
|
set catch_status [ catch {
|
||||||
@ -105,7 +115,7 @@ proc ::scobj::he3_polanal::rdValue {tc_root} {
|
|||||||
}
|
}
|
||||||
set my_name [basename [pathname [sct]]]
|
set my_name [basename [pathname [sct]]]
|
||||||
if {![string equal -nocase "[lindex ${dlist} 0]" "${my_name}"]} {
|
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}"]} {
|
if {[string match "*Not Active*" "${data}"]} {
|
||||||
set data 0
|
set data 0
|
||||||
@ -115,6 +125,26 @@ proc ::scobj::he3_polanal::rdValue {tc_root} {
|
|||||||
} else {
|
} else {
|
||||||
set data [lindex ${dlist} 1]
|
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
|
# rdValue hook code ends
|
||||||
if { [hpropexists [sct] geterror] } {
|
if { [hpropexists [sct] geterror] } {
|
||||||
debug_log ${tc_root} 9 "[sct] error: [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 klass "@none"
|
||||||
hsetprop ${scobj_hpath}/analyser type "part"
|
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
|
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 read ${ns}::getValue ${scobj_hpath} rdValue {analyser}
|
||||||
hsetprop ${scobj_hpath}/analyser/spin rdValue ${ns}::rdValue ${scobj_hpath}
|
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 data true
|
||||||
hsetprop ${scobj_hpath}/analyser/spin mutable true
|
hsetprop ${scobj_hpath}/analyser/spin mutable true
|
||||||
hsetprop ${scobj_hpath}/analyser/spin nxsave 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 oldval UNKNOWN
|
||||||
hsetprop ${scobj_hpath}/analyser/spin klass "parameter"
|
hsetprop ${scobj_hpath}/analyser/spin klass "parameter"
|
||||||
hsetprop ${scobj_hpath}/analyser/spin sdsinfo "::nexus::scobj::sdsinfo"
|
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 klass "@none"
|
||||||
hsetprop ${scobj_hpath}/polariser type "part"
|
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
|
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 read ${ns}::getValue ${scobj_hpath} rdValue {polariser}
|
||||||
hsetprop ${scobj_hpath}/polariser/spin rdValue ${ns}::rdValue ${scobj_hpath}
|
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 data true
|
||||||
hsetprop ${scobj_hpath}/polariser/spin mutable true
|
hsetprop ${scobj_hpath}/polariser/spin mutable true
|
||||||
hsetprop ${scobj_hpath}/polariser/spin nxsave 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 oldval UNKNOWN
|
||||||
hsetprop ${scobj_hpath}/polariser/spin klass "parameter"
|
hsetprop ${scobj_hpath}/polariser/spin klass "parameter"
|
||||||
hsetprop ${scobj_hpath}/polariser/spin sdsinfo "::nexus::scobj::sdsinfo"
|
hsetprop ${scobj_hpath}/polariser/spin sdsinfo "::nexus::scobj::sdsinfo"
|
||||||
|
Reference in New Issue
Block a user