Refactoring:

Added init{} and hpath_setp{} to be called by hipadaba module to initialise variables and setup hpaths.
Transformed nxaddpoint and bm_nxaddpoint to a generic write_nxentry  which will be used by scan specific write commands.

r1626 | ffr | 2007-03-12 08:55:45 +1100 (Mon, 12 Mar 2007) | 4 lines
This commit is contained in:
Ferdi Franceschini
2007-03-12 08:55:45 +11:00
committed by Douglas Clowes
parent 4037d5ca4d
commit 0e348f7750

View File

@@ -1,6 +1,8 @@
#TODO Define bmon and hmm scan commands in separate namespaces #TODO Define bmon and hmm scan commands in separate namespaces
namespace eval scanCommand { namespace eval scancommand {
VarMake bmonscan_np Int User
VarMake bmonscan_point Int User
variable scanVariable scan_var scanVarStart 0 scanVarStep 1 variable scanVariable scan_var scanVarStart 0 scanVarStep 1
proc scan_prepare {sobj uobj} { proc scan_prepare {sobj uobj} {
@@ -15,24 +17,24 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]]; set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
set scanVarStart [lindex $vlist 1]; set scanVarStart [lindex $vlist 1];
set scanVarStep [lindex $vlist 2]; set scanVarStep [lindex $vlist 2];
hs_prepare $sobj $uobj ::histogram_memory::hs_prepare $sobj $uobj
} }
proc scan_count {sobj uobj point mode preset} { proc hm_count {sobj uobj point mode preset} {
variable scan_pt_start_time variable scan_pt_start_time
set scan_pt_start_time [sicstime] set scan_pt_start_time [sicstime]
hs_count_bm_controlled $sobj $uobj $point $mode $preset; ::histogram_memory::hs_count_bm_controlled $sobj $uobj $point $mode $preset;
} }
proc hm_scan_finish {sobj uobj} { proc hm_scan_finish {sobj uobj} {
hs_finish $sobj $uobj; ::histogram_memory::hs_finish $sobj $uobj;
nxreopenfile; nxreopenfile;
nxclosefile; nxclosefile;
} }
proc bm_scan_finish {sobj uobj} { proc bm_scan_finish {sobj uobj} {
stdscan finish $sobj $uobj; # stdscan finish $sobj $uobj;
nxreopenfile; nxreopenfile;
nxclosefile; nxclosefile;
} }
@@ -41,16 +43,24 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
#} #}
# Add an nxentry for the current scan point # Add an nxentry for the current scan point
proc nxaddpoint {sobj uobj pt} { proc write_nxentry {nxentryCmd point} {
variable scanVarStart; variable scanVarStart;
variable scanVarStep; variable scanVarStep;
variable scanVariable; variable scanVariable;
variable scan_pt_start_time; variable scan_pt_start_time;
set scanVarPos [expr $scanVarStart + $pt * $scanVarStep]; set scanVarPos [expr {$scanVarStart + $point * $scanVarStep} ];
nxreopenfile; nxreopenfile;
addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time; $nxentryCmd nxscript scan_[format "%05d" $point] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
nxclosefile nxclosefile;
}
proc bm_writepoint {sobj uobj pt} {
write_nxentry bm_addnxscanentry $pt;
}
proc hm_writepoint {sobj uobj pt} {
write_nxentry addnxscanentry $pt;
} }
proc donothing {args} {} proc donothing {args} {}
@@ -58,9 +68,11 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
proc bmcount {sobj uobj pt mode preset} { proc bmcount {sobj uobj pt mode preset} {
variable scan_pt_start_time variable scan_pt_start_time
set scan_pt_start_time [sicstime] set scan_pt_start_time [sicstime]
bmonscan_point $pt
bm setmode $mode bm setmode $mode
bm count $preset; bm count $preset;
} }
proc bm_scan_prepare {sobj uobj} { proc bm_scan_prepare {sobj uobj} {
variable scanVarStart; variable scanVarStart;
variable scanVarStep; variable scanVarStep;
@@ -71,50 +83,74 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]]; set scanVariable [string trim [lindex [split [lindex $vlist 0] . ] 1]];
set scanVarStart [lindex $vlist 1]; set scanVarStart [lindex $vlist 1];
set scanVarStep [lindex $vlist 2]; set scanVarStep [lindex $vlist 2];
stdscan prepare $sobj $uobj; #stdscan prepare $sobj $uobj;
} }
proc bm_nxaddpoint {sobj uobj pt} {
variable scanVarStart;
variable scanVarStep;
variable scanVariable;
variable scan_pt_start_time;
set scanVarPos [expr $scanVarStart + $pt * $scanVarStep]; proc init {} {
nxreopenfile; #TODO HSET bmonscan_np IN SCAN FUNCTION
bm_addnxentry nxscript scan_[format "%05d" $pt] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time; bmonscan_np 1;
nxclosefile bmonscan_point 0;
}
proc hpath_setup {parent} {
hmake $parent/beam_monitor_scan spy none;
hsetprop $parent/beam_monitor_scan type graphdata;
hsetprop $parent/beam_monitor_scan viewer default;
hsetprop $parent/beam_monitor_scan rank 1;
hattach $parent/beam_monitor_scan bmonscan_np dim;
hattach $parent/beam_monitor_scan bmonscan_point point;
} }
} }
publish ::scanCommand::scan_count user publish ::scancommand::write_nxentry user
publish ::scanCommand::scan_prepare user publish ::scancommand::hm_count user
publish ::scanCommand::hm_scan_finish user publish ::scancommand::scan_prepare user
publish ::scanCommand::nxaddpoint user publish ::scancommand::hm_scan_finish user
publish ::scanCommand::donothing user publish ::scancommand::hm_writepoint user
publish ::scancommand::donothing user
publish ::scanCommand::bm_scan_prepare user publish ::scancommand::bm_scan_prepare user
publish ::scanCommand::bm_scan_finish user publish ::scancommand::bm_scan_finish user
publish ::scanCommand::bm_nxaddpoint user publish ::scancommand::bm_writepoint user
publish ::scanCommand::bmcount user publish ::scancommand::bmcount user
#scan2 function writeheader ::scanCommand::donothing MakeScanCommand bmonscan bm $cfPath(scan)/scan_common_1.hdd recover.bin
#scan2 function writepoint ::scanCommand::nxaddpoint bmonscan configure script
#scan2 function prepare ::scanCommand::scan_prepare bmonscan function writeheader ::scancommand::donothing
bmonscan function writepoint ::scancommand::bm_writepoint
bmonscan function count ::scancommand::bmcount
bmonscan function prepare ::scancommand::bm_scan_prepare
bmonscan function finish ::scancommand::bm_scan_finish
#scan2 function writeheader ::scancommand::donothing
#scan2 function writepoint ::scancommand::nxaddpoint
#scan2 function prepare ::scancommand::scan_prepare
# 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.
#
MakeScanCommand hmscan bm $cfPath(scan)/scan_common_1.hdd recover.bin
hmscan configure script hmscan configure script
#hmscan function prepare hs_prepare
MakeScanCommand scan2 bm $cfPath(scan)/scan_common_1.hdd recover.bin
scan2 configure script
#
# That's all, folks...
#hmscan function prepare hdbprepare #hmscan function prepare hdbprepare
#hmscan function collect hdbcollect #hmscan function collect hdbcollect
hmscan function writeheader ::scanCommand::donothing hmscan function writeheader ::scancommand::donothing
hmscan function count ::scanCommand::scan_count hmscan function writepoint ::scancommand::hm_writepoint
hmscan function writepoint ::scanCommand::nxaddpoint hmscan function count ::scancommand::hm_count
hmscan function prepare ::scanCommand::scan_prepare hmscan function prepare ::scancommand::scan_prepare
hmscan function finish ::scanCommand::hm_scan_finish hmscan function finish ::scancommand::hm_scan_finish
# Wombat proc hdb_hmscan {scanvar scanstart scanincr scanend mode preset} { # Wombat proc hdb_hmscan {scanvar scanstart scanincr scanend mode preset} {
proc hdb_hmscan {scanvar scanstart scanincr np mode preset} { proc hdb_hmscan {scanvar scanstart scanincr np mode preset} {
hmscan clear hmscan clear
hmscan configure script # hmscan configure script
hmscan add $scanvar $scanstart $scanincr hmscan add $scanvar $scanstart $scanincr
set status [catch {hmscan run $np $mode $preset} msg] set status [catch {hmscan run $np $mode $preset} msg]
@@ -128,12 +164,3 @@ proc hdb_hmscan {scanvar scanstart scanincr np mode preset} {
publish hdb_hmscan user publish hdb_hmscan user
MakeScanCommand bmonscan bm $cfPath(scan)/scan_common_1.hdd recover.bin
bmonscan configure script
bmonscan function writeheader ::scanCommand::donothing
bmonscan function writepoint ::scanCommand::bm_nxaddpoint
bmonscan function prepare ::scanCommand::bm_scan_prepare
bmonscan function count ::scanCommand::bmcount
bmonscan function finish ::scanCommand::bm_scan_finish