Conflicts: sics/site_ansto/instrument/hipd/wombat_configuration.tcl sics/site_ansto/instrument/hrpd/echidna_configuration.tcl sics/site_ansto/instrument/kookaburra/kookaburra_configuration.tcl sics/site_ansto/instrument/reflectometer/platypus_configuration.tcl sics/site_ansto/instrument/sans/config/environment/sct_antonparr_MCR500.tcl sics/site_ansto/instrument/tas/taipan_configuration.tcl
134 lines
4.3 KiB
Tcl
134 lines
4.3 KiB
Tcl
namespace eval counter {
|
|
variable isc_numchannels
|
|
variable isc_monitor_address
|
|
variable isc_portlist
|
|
variable isc_beam_monitor_list
|
|
}
|
|
|
|
proc ::counter::transferscript {} {
|
|
variable isc_numchannels
|
|
set val [SplitReply [bm1 gettime]]
|
|
for {set i 1} {$i <= $isc_numchannels} {incr i} {
|
|
append val " [SplitReply [bm$i getcounts] ]"
|
|
}
|
|
# broadcast $val
|
|
return $val
|
|
}
|
|
publish ::counter::transferscript user
|
|
|
|
proc ::counter::ic_initialize {args} {
|
|
if [ catch {
|
|
variable isc_numchannels
|
|
variable isc_monitor_address
|
|
variable isc_portlist
|
|
variable isc_beam_monitor_list
|
|
|
|
set sim_mode [SplitReply [counter_simulation]]
|
|
if {$sim_mode == "true"} {
|
|
# MakeCounter bm SIM 0.0;
|
|
for {set n 1} {$n <= $isc_numchannels} {incr n} {
|
|
MakeCounter bm$n SIM 0.0
|
|
append bm_list "bm$n "
|
|
}
|
|
} else {
|
|
# Make and configure an ANSTO beam monitor counter.
|
|
# This must be sourced before the hmm_configuration.tcl until we separate the scan setup from the hmm setup
|
|
for {set i 0; set n 1} {$i < $isc_numchannels} {incr i; incr n} {
|
|
MakeCounter bm$n anstomonitor [ params host $isc_monitor_address port [lindex $isc_portlist $i] ]
|
|
bm$n send set scan=1
|
|
bm$n send set sample=10
|
|
append bm_list "bm$n "
|
|
}
|
|
}
|
|
eval "MakeMultiCounter bm $bm_list"
|
|
bm transferscript ::counter::transferscript
|
|
bm SetExponent 0
|
|
sicslist setatt bm privilege internal
|
|
::utility::macro::getset text bm_mode {} {
|
|
return [bm getmode]
|
|
}
|
|
sicslist setatt bm_mode klass monitor
|
|
sicslist setatt bm_mode long_name mode
|
|
sicslist setatt bm_mode mutable false
|
|
|
|
::utility::macro::getset float bm_preset {} {
|
|
return [bm getpreset]
|
|
}
|
|
sicslist setatt bm_preset klass monitor
|
|
sicslist setatt bm_preset long_name preset
|
|
sicslist setatt bm_preset mutable false
|
|
|
|
foreach {k v} $args {
|
|
if [string equal -nocase "MONITOR_SOURCE" $k] {
|
|
set mon_srce $v
|
|
break
|
|
}
|
|
}
|
|
if {$mon_srce == "MONITOR_SERVER"} {
|
|
::utility::macro::getset float monitor_counts {} {
|
|
bm status
|
|
return "monitor_counts = [SplitReply [bm getcounts]]"
|
|
}
|
|
} else {
|
|
::utility::macro::getset float monitor_counts {} {
|
|
return "monitor_counts = [lindex [hmm configure bm1_counts] 2]"
|
|
}
|
|
}
|
|
sicslist setatt monitor_counts klass monitor
|
|
sicslist setatt monitor_counts long_name data
|
|
sicslist setatt monitor_counts mutable true
|
|
|
|
if {$mon_srce == "MONITOR_SERVER"} {
|
|
::utility::macro::getset float monitor_time {} {
|
|
bm status
|
|
return "monitor_time = [SplitReply [bm gettime]]"
|
|
}
|
|
} else {
|
|
::utility::macro::getset float monitor_time {} {
|
|
return "monitor_time = [lindex [hmm configure bm1_runtime] 2]"
|
|
}
|
|
}
|
|
sicslist setatt monitor_time klass monitor
|
|
sicslist setatt monitor_time long_name time
|
|
sicslist setatt monitor_time mutable true
|
|
|
|
for {set bm_num 1} {$bm_num <= $isc_numchannels} {incr bm_num} {
|
|
set bm_counts bm${bm_num}_counts
|
|
set bmon bm${bm_num}
|
|
if {$mon_srce == "MONITOR_SERVER"} {
|
|
::utility::macro::getset int $bm_counts {} [subst -nocommands {
|
|
$bmon status
|
|
return "[$bmon getcounts]"
|
|
}]
|
|
} else {
|
|
::utility::macro::getset int $bm_counts {} [subst -nocommands {
|
|
return "${bmon}.Counts = [lindex [hmm configure ${bmon}_counts] 2]"
|
|
}]
|
|
}
|
|
sicslist setatt $bm_counts klass monitor
|
|
sicslist setatt $bm_counts long_name $bm_counts
|
|
sicslist setatt $bm_counts mutable true
|
|
|
|
set bm_time bm${bm_num}_time
|
|
set bmon bm${bm_num}
|
|
if {$mon_srce == "MONITOR_SERVER"} {
|
|
::utility::macro::getset float $bm_time {} [subst -nocommands {
|
|
$bmon status
|
|
return "[$bmon gettime]"
|
|
}]
|
|
} else {
|
|
::utility::macro::getset float $bm_time {} [subst -nocommands {
|
|
return "${bmon}.CountTime = [lindex [hmm configure ${bmon}_runtime] 2]"
|
|
}]
|
|
}
|
|
sicslist setatt $bm_time klass monitor
|
|
sicslist setatt $bm_time long_name $bm_time
|
|
sicslist setatt $bm_time mutable true
|
|
}
|
|
|
|
} message ] {
|
|
if {$::errorCode=="NONE"} {return $message}
|
|
return -code error $message
|
|
}
|
|
}
|