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 f0cc2f1b..add7cd2b 100644 --- a/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl +++ b/site_ansto/instrument/config/hmm/hmm_configuration_common_1.tcl @@ -1,11 +1,12 @@ -# $Revision: 1.1 $ -# $Date: 2007-03-05 05:34:12 $ +# $Revision: 1.2 $ +# $Date: 2007-03-11 21:41:30 $ # Author: Mark Lesha (mle@ansto.gov.au) # Last revision by: $Author: ffr $ #------------------------------------------------------------------------- # System: Histogram Server (sample) #------------------------------------------------------------------------ +namespace eval histogram_memory { ############################################## # Creating the histogram memories in SICS @@ -14,11 +15,6 @@ # Make a histogram memory object hmm, allows control of the # remote histogram server via http, and acquisition # of histogram period data. -MakeHM hmm anstohttp -hmm configure hmaddress http://das1-[SplitReply [instrument]]:8080 -hmm configure username spy -hmm configure password 007 -hmm configure hmDataPath ../HMData ############################################## @@ -34,7 +30,6 @@ proc returnconfigfile {filename} { close $fh return $xml } -Publish returnconfigfile User # Configure to upload a complete configuration to the histogram server. # In this case it's the main config file plus the FAT, BAT and OAT files @@ -58,6 +53,7 @@ hmm configure hmconfigscript "returnconfigfile $cfPath(hmm)/anstohm_full.xml" # during DAQ is not allowed. This requires init of the hmm object to level 0. # # Making sure the histogram server is stopped, so we can load configuration. +proc hmm_initialize {} { hmm configure init 0 hmm init hmm stop @@ -75,7 +71,7 @@ hmm configure init 0 # This not only makes sure it's stopped, but lets us see certain configuration variables # which get placed in the dictionary as part of the status checking done during the stop. hmm stop - +} # Here, define a function to let us read back the value of dictionary items from the hmm # such as OAT dimensions. proc hmmdictitemval {histomem dictitem} { @@ -87,13 +83,15 @@ proc hmmdictitemval {histomem dictitem} { # Configure histogram dimensions, mode, etc. using the dictionary variables. # For the dimensions, set the 'effective' OAT dimensions which are the # histogram period dimensions. Do an init after to cause memory to be allocated. -hmm configure histmode transparent -hmm configure bank 0 -hmm configure rank 3 -hmm configure dim0 [hmmdictitemval hmm oat_nyc_eff] -hmm configure dim1 [hmmdictitemval hmm oat_nxc_eff] -hmm configure dim2 [hmmdictitemval hmm oat_ntc_eff] -hmm init +proc hmm_setup {mode bankNum rankNum nyc nxc ntc} { + hmm configure histmode $mode + hmm configure bank $bankNum + hmm configure rank $rankNum + hmm configure dim0 [hmmdictitemval hmm $nyc] + hmm configure dim1 [hmmdictitemval hmm $nxc] + hmm configure dim2 [hmmdictitemval hmm $ntc] + hmm init +} ############################################## # Create beam monitor counter @@ -158,8 +156,6 @@ MakeHMControl_ANSTO hmc bm hmm # hmscan run 5 timer 1 (termination controlled by the beam monitor) # scan2_runb 5 TIME 100 IMMEDIATE (termination controlled by the histogram server) # -MakeScanCommand hmscan bm $cfPath(scan)/scan.hdd recover.bin -MakeScanCommand scan2 bm $cfPath(scan)/scan.hdd recover.bin # # Call is: scan2_runa proc scan2_runa {n} { @@ -168,7 +164,6 @@ proc scan2_runa {n} { # directly in this case. scan2 run $n timer 0 } -Publish scan2_runa User # # Call is: scan2_runb proc scan2_runb {n count_method count_size count_stop} { @@ -185,7 +180,6 @@ proc scan2_runb {n count_method count_size count_stop} { # directly in this case. So, use 'timer 0' here. scan2 run $n timer 0 } -Publish scan2_runb User # Simulated counter. No error rate. Required for technical reasons... # This counter is used only to block execution till the bm count is actually reached, @@ -226,7 +220,6 @@ proc set_oat_offset {oatoff_x oatoff_y oatoff_t} { hmm init return } -Publish set_oat_offset User ############################################## # Support for data acquisition @@ -273,14 +266,13 @@ proc hs_prepare {scanobjectname userobjectname} { set oatoffset 0 set_oat_offset 0 0 0 # - stdscan prepare $scanobjectname $userobjectname +# stdscan prepare $scanobjectname $userobjectname #clientput "hmm pause being done..." value # Pause the histogram server, this primes the DAE for acqisition. hmm pause #clientput "Exit prepare" value return } -Publish hs_prepare User # The count_bm_controlled callback gets called at the start of dataset acquisition. # We use it to perform the dataset acquisition, via the hmc object. @@ -300,7 +292,6 @@ proc hs_count_bm_controlled {scanobjectname userobjectname point mode preset} { #clientput "Exit count" value return } -Publish hs_count_bm_controlled User # The count_hs_controlled callback gets called at the start of dataset acquisition. # We use it to perform the dataset acquisition, controlled by the histogram server. @@ -323,7 +314,6 @@ proc hs_count_hs_controlled {scanobjectname userobjectname point mode preset} { #clientput "Exit count" value return } -Publish hs_count_hs_controlled User # The collect callback gets called at the end of the dataset acquisition. # We can put stuff here to retrieve data collected at each scan point, @@ -353,13 +343,12 @@ proc hs_collect {scanobjectname userobjectname point} { #clientput "Exit collect" value return } -Publish hs_collect User # The finish callback gets called at the end of the scan. # We use it to stop the histogram server, terminating the dataset. proc hs_finish {scanobjectname userobjectname} { #clientput "Enter finish" value - stdscan finish $scanobjectname $userobjectname +# stdscan finish $scanobjectname $userobjectname #clientput "hmm stop being done..." value hmm stop # Just in case someone expects zero OAT offsets later on ;) @@ -373,23 +362,30 @@ proc hs_finish {scanobjectname userobjectname} { #clientput "Exit finish" value return } -Publish hs_finish User +} -# Configure script mode, then we can configure all the scan callbacks. -# The scan list command can be used to check that the callbacks -# are properly defined. -# A different count callback is defined in the two cases. +publish ::histogram_memory::hs_finish user +#publish ::histogram_memory::hs_collect user +publish ::histogram_memory::hs_count_hs_controlled user +publish ::histogram_memory::hs_count_bm_controlled user +publish ::histogram_memory::hs_prepare user +publish ::histogram_memory::set_oat_offset user +publish ::histogram_memory::scan2_runb user +publish ::histogram_memory::scan2_runa user +publish ::histogram_memory::returnconfigfile user + +#hmscan function count ::histogram_memory::hs_count_bm_controlled +#hmscan function collect ::histogram_memory::hs_collect +#hmscan function finish ::histogram_memory::hs_finish # -hmscan configure script -#hmscan function prepare hs_prepare -hmscan function count hs_count_bm_controlled -hmscan function collect hs_collect -hmscan function finish hs_finish -# -scan2 configure script #scan2 function prepare hs_prepare -scan2 function count hs_count_hs_controlled -scan2 function collect hs_collect -scan2 function finish hs_finish -# -# That's all, folks... +scan2 function count ::histogram_memory::hs_count_hs_controlled +#scan2 function collect ::histogram_memory::hs_collect +scan2 function finish ::histogram_memory::hs_finish + +MakeHM hmm anstohttp +hmm configure hmaddress http://das1-[SplitReply [instrument]]:8080 +hmm configure username spy +hmm configure password 007 +hmm configure hmDataPath ../HMData +