Files
sics/site_ansto/instrument/config/counter/counter_common_1.tcl
Douglas Clowes f269a17ef3 Merge branch 'RELEASE-3_1' into RELEASE-3_2
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
2015-03-05 13:53:47 +11:00

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
}
}