diff --git a/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl b/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl index b3203c07..9c765086 100644 --- a/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl +++ b/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl @@ -1,5 +1,5 @@ -# $Revision: 1.30 $ -# $Date: 2008-05-30 00:26:54 $ +# $Revision: 1.31 $ +# $Date: 2008-06-10 04:40:30 $ # Author: Ferdi Franceschini # Based on the examples in the hs_test.tcl sample configuration by Mark Lesha. # http://gumtree.ansto.gov.au:9080/nbicms/bragg-systems/histogram-server/hs_test.tcl/view @@ -59,6 +59,30 @@ hmm_t configure rank 1 namespace eval histogram_memory { + # Frame source for each instrument if freq = 0, this can happen when automatically + # setting frequencies from choppers. + array set default_frame_source_when_there_is_no_frame_signal { + echidna INTERNAL + koala INTERNAL + kowari EXTERNAL + pelican INTERNAL + platypus EXTERNAL + quokka INTERNAL + taipan INTERNAL + wombat INTERNAL + } + + array set default_frame_source_always_internal { + echidna "true" + koala "false" + kowari "false" + pelican "false" + platypus "false" + quokka "false" + taipan "false" + wombat "false" + } + ::utility::mkVar detector_active_height_mm Float user active_height true detector true true sicslist setatt detector_active_height_mm units mm ::utility::mkVar detector_active_width_mm Float user active_width true detector true true @@ -1093,7 +1117,7 @@ proc OAT_TABLE {args} { # Only one element, ie SPLIT with no content just attributes. proc SAT_TABLE {args} { if [ catch { - set attributes { APPLY MIDPOINT } + set attributes { APPLY MIDPOINT DIRECTION WRAP SWAP} set elements {{ SPLIT }} set tag SAT @@ -1108,7 +1132,7 @@ proc SAT_TABLE {args} { HISTMEM_TABLE $attpath -allowed_attributes [concat $attributes $arglist] } "-set" { - set allowed_atts [HISTMEM_TABLE $tag -allowed_attributes] + set allowed_atts [HISTMEM_TABLE $attpath -allowed_attributes] set allowed_els [HISTMEM_TABLE $tag -allowed_elements] foreach {arg val} $arglist { set index [lsearch -exact $allowed_els $arg] @@ -1120,13 +1144,13 @@ proc SAT_TABLE {args} { set index [lsearch -exact $allowed_atts $attname] if {$index >= 0} { incr index - HISTMEM_TABLE $tag -setatt $attname $val + HISTMEM_TABLE $attpath -setatt $attname $val } } } } "-get" { - set allowed_atts [HISTMEM_TABLE $tag -allowed_attributes] + set allowed_atts [HISTMEM_TABLE $attpath -allowed_attributes] set allowed_els [HISTMEM_TABLE $tag -allowed_elements] foreach arg $arglist { set index [lsearch -exact $allowed_els $arg] @@ -1458,27 +1482,16 @@ proc ::histogram_memory::get_frame_freq {} { # if you are setting the frequency from a chopper which is stopped. proc ::histogram_memory::set_frame_freq {freq {frame_source EXTERNAL}} { variable state + variable default_frame_source_when_there_is_no_frame_signal if [ catch { if {[string is double $freq] == 0 || $freq < 0} { error "ERROR: Frequency must be a non-negative floating point number" } - # Frame source for each instrument if freq = 0, this can happen when automatically - # setting frequencies from choppers. - array set frame_source_on_zero_freq { - echidna INTERNAL - koala INTERNAL - kowari EXTERNAL - pelican INTERNAL - platypus EXTERNAL - quokka INTERNAL - taipan INTERNAL - wombat INTERNAL - } #TODO Add tolerance parameters to choppercontroller if {abs($freq - 0) <= [expr {2.0/60.0}]} { - set zf_frame_source $frame_source_on_zero_freq([instname]) + set zf_frame_source $default_frame_source_when_there_is_no_frame_signal([instname]) if {$zf_frame_source == "INTERNAL"} { clientput "WARNING: A histmem frame frequency of zero was requested, setting frequency to 50Hz instead" value } else { @@ -1514,6 +1527,9 @@ proc ::histogram_memory::t_max {} { # @brief Sets histogram server to default configuration, initialises SICS histogram memory # dictionary values and clears SICS OAT BAT CAT FAT ... tables proc ::histogram_memory::_initialize {} { + variable default_frame_source_when_there_is_no_frame_signal + variable default_frame_source_always_internal + set ::errorInfo "" if [ catch { set configuration "::histogram_memory::returnconfigfile config/hmm/anstohm_linked.xml" @@ -1536,8 +1552,9 @@ proc ::histogram_memory::_initialize {} { hmm configure statuscheck true hmm stop hmm configure statuscheck false - ::histogram_memory::frame_source_always_internal false + ::histogram_memory::frame_source_always_internal $default_frame_source_always_internal([instname]) ::histogram_memory::set_frame_freq 50 + ::histogram_memory::set_frame_source $default_frame_source_when_there_is_no_frame_signal([instname]) ::histogram_memory::count_method unlimited ::histogram_memory::count_size 0 hmm configure hmDataPath ../HMData