# Generated driver for agilent_33220A # vim: ft=tcl tabstop=8 softtabstop=2 shiftwidth=2 nocindent smartindent # namespace eval ::scobj::agilent_33220A { set debug_threshold 5 } proc ::scobj::agilent_33220A::debug_log {tc_root debug_level debug_string} { set catch_status [ catch { set debug_threshold [hgetpropval ${tc_root} debug_threshold] if {${debug_level} >= ${debug_threshold}} { set fd [open "../log/agilent_33220A_[basename ${tc_root}].log" "a"] set line "[clock format [clock seconds] -format "%T"] ${debug_string}" puts ${fd} "${line}" close ${fd} } } catch_message ] } proc ::scobj::agilent_33220A::sics_log {debug_level debug_string} { set catch_status [ catch { set debug_threshold ${::scobj::agilent_33220A::debug_threshold} if {${debug_level} >= ${debug_threshold}} { sicslog "::scobj::agilent_33220A::${debug_string}" } } catch_message ] } proc ::scobj::agilent_33220A::mkDriver { sct_controller name } { ::scobj::agilent_33220A::sics_log 9 "::scobj::agilent_33220A::mkDriver for ${name}" set ns "[namespace current]" set catch_status [ catch { MakeSICSObj ${name} SCT_OBJECT sicslist setatt ${name} klass environment sicslist setatt ${name} long_name ${name} set scobj_hpath /sics/${name} hsetprop ${scobj_hpath} klass environment hsetprop ${scobj_hpath} data true hsetprop ${scobj_hpath} debug_threshold 5 # mkDriver hook code starts makesctcontroller $name $ip $port # mkDriver hook code ends } catch_message ] handle_exception ${catch_status} ${catch_message} } namespace eval ::scobj::agilent_33220A { namespace export debug_threshold namespace export debug_log namespace export sics_log namespace export mkDriver } proc add_agilent_33220A {name IP port} { set catch_status [ catch { ::scobj::agilent_33220A::sics_log 9 "add_agilent_33220A ${name} ${IP} ${port}" if {[string equal -nocase [SplitReply [environment_simulation]] "false"]} { if {[string equal -nocase "aqadapter" "${IP}"]} { ::scobj::agilent_33220A::sics_log 9 "makesctcontroller sct_${name} aqadapter ${port}" makesctcontroller sct_${name} aqadapter ${port} } else { ::scobj::agilent_33220A::sics_log 9 "makesctcontroller sct_${name} std ${IP}:${port}" makesctcontroller sct_${name} std ${IP}:${port} } } else { ::scobj::agilent_33220A::sics_log 9 "[environment_simulation] => No sctcontroller for agilent_33220A" } ::scobj::agilent_33220A::sics_log 1 "::scobj::agilent_33220A::mkDriver sct_${name} ${name}" ::scobj::agilent_33220A::mkDriver sct_${name} ${name} } catch_message ] handle_exception ${catch_status} ${catch_message} } clientput "file evaluation of agilent_33220A_sct.tcl" ::scobj::agilent_33220A::sics_log 9 "file evaluation of agilent_33220A_sct.tcl" proc ::scobj::agilent_33220A::read_config {} { set catch_status [ catch { set ns "::scobj::agilent_33220A" dict for {k u} $::config_dict { if { [dict exists $u "implementation"] } { if { !([dict exists $u "name"] && [dict exists $u "enabled"]) } { continue } set enabled [string tolower [dict get $u "enabled"]] if { ! ([string equal -nocase $enabled "true" ] || [string equal -nocase $enabled "always"]) } { continue } set name [dict get $u name] set implementation [dict get $u "implementation"] if { !([dict exists $::config_dict $implementation]) } { continue } set v [dict get $::config_dict $implementation] if { !([dict exists $v "driver"]) } { continue } if { [string equal -nocase [dict get $v "driver"] "agilent_33220A"] } { if { ![string equal -nocase [SplitReply [environment_simulation]] "false"] } { set asyncqueue "null" ${ns}::sics_log 9 "[environment_simulation] => using null asyncqueue" } elseif { [dict exists $v "asyncqueue"] } { set asyncqueue [dict get $v "asyncqueue"] if { [string equal -nocase ${asyncqueue} "sct"] } { set IP [dict get $v ip] set PORT [dict get $v port] } } else { if { [dict exists $v "asyncprotocol"] } { set asyncprotocol [dict get $v "asyncprotocol"] } else { set asyncprotocol ${name}_protocol MakeAsyncProtocol ${asyncprotocol} if { [dict exists $v "terminator"] } { ${asyncprotocol} sendterminator "[dict get $v "terminator"]" ${asyncprotocol} replyterminator "[dict get $v "terminator"]" } } set asyncqueue ${name}_queue set IP [dict get $v ip] set PORT [dict get $v port] MakeAsyncQueue ${asyncqueue} ${asyncprotocol} ${IP} ${PORT} if { [dict exists $v "timeout"] } { ${asyncqueue} timeout "[dict get $v "timeout"]" } } if { [string equal -nocase ${asyncqueue} "sct"] } { add_agilent_33220A ${name} ${IP} ${PORT} } else { add_agilent_33220A ${name} "aqadapter" ${asyncqueue} } } } } } catch_message ] handle_exception ${catch_status} ${catch_message} } if { [info exists ::config_dict] } { ::scobj::agilent_33220A::read_config } else { ::scobj::agilent_33220A::sics_log 5 "No config dict" }