Force updates of sicsvariables if the save command is called when counting in blocking mode.

This is needed to make autosave work during scans.
This commit is contained in:
Ferdi Franceschini
2013-09-23 23:43:05 +10:00
parent 311a95d3c2
commit edf2ca93a3

View File

@@ -22,10 +22,10 @@ sicslist setatt timestamp units seconds
sicslist setatt nexus_datatype mutable false
namespace eval nexus {
nexus_datatype "UNKNOWN"
nexus_datatype force "UNKNOWN"
set exports [list newfile closefile save data newfile_collection save_collection]
proc estartSetVal {} { estart [sicstime] }
proc eendSetVal {} { eend [sicstime] }
proc estartSetVal {} { estart force [sicstime] }
proc eendSetVal {} { eend force [sicstime] }
set FirstSaveList [list estartSetVal eendSetVal]
set LastSaveList {list eendSetVal}
eval namespace export $exports
@@ -193,9 +193,9 @@ proc newFileName {idNum postfix} {
array set save_count_arr ""
array set start_seconds_array ""
array set file_states {U "UNKNOWN" O "OPEN" C "CLOSED" S "SAVING"}
save_count 0
currpoint 0
file_status UNKNOWN
save_count force 0
currpoint force 0
file_status force UNKNOWN
}
proc ::nexus::ic_initialize {} {
@@ -346,7 +346,7 @@ proc ::nexus::newfile_collection {args} {
lappend files $currFilename($fid)
}
}
file_set_list [join $files ,]
file_set_list force [join $files ,]
} else {
set state(file,fileset) "false"
set state(file,labels) @singlefile
@@ -358,14 +358,14 @@ proc ::nexus::newfile_collection {args} {
set currFilename(@singlefile) [newFileName $idNum $file_suffix]
}
}
save_count 0
currpoint 0
autosaveIndex 0
file_status $file_states(U)
save_count force 0
currpoint force 0
autosaveIndex force 0
file_status force $file_states(U)
if {$param(-filetype) == "clear"} {
::hdb::set_save / false
nexus_datatype "UNKNOWN"
file_set_list "UNKNOWN"
nexus_datatype force "UNKNOWN"
file_set_list force "UNKNOWN"
foreach l [array names isNewFile] {
set isNewFile($l) "false"
}
@@ -380,8 +380,8 @@ proc ::nexus::newfile_collection {args} {
}
}
::nexus::process_filetype_policy $param(-filetype)
nexus_datatype $param(-filetype)
file_status "NEWFILE"
nexus_datatype force $param(-filetype)
file_status force "NEWFILE"
}
} message ] {
return -code error "([info level 0]) $message"
@@ -446,7 +446,7 @@ proc ::nexus::save {{point 0} {callType "normalsave"}} {
return -code error "([info level 0]) $message"
}
if {$callType == "normalsave"} {
autosaveIndex [expr [SplitReply [data_run_number]] + 1]
autosaveIndex force [expr [SplitReply [data_run_number]] + 1]
}
}
@@ -476,7 +476,7 @@ proc ::nexus::save {{point 0} {callType "normalsave"}} {
}
# ::data::gumtree_save -set run_number $point
data_run_number $point
data_run_number force $point
if [info exists param(-label)] {
if {[lsearch -exact $state(file,labels) $param(-label)] == -1} {
@@ -492,16 +492,16 @@ proc ::nexus::save {{point 0} {callType "normalsave"}} {
if {$isNewFile($data_label)} {
set isNewFile($data_label) "false"
::nexus::createfile $currFilename($data_label)
dataFileName $currFilename($data_label)
dataFileName force $currFilename($data_label)
::nexus::CallSSProcs
array unset start_seconds_array
set start_seconds [clock seconds]
# set start_seconds_array($data_label) $start_seconds
timestamp 0
file_status $file_states(O)
timestamp force 0
file_status force $file_states(O)
::nexus::nxreopenfile $currFilename($data_label)
file_status $file_states(S)
file_status force $file_states(S)
set baseName [getBaseName $currFilename($data_label)]
set entryName [gen_NXentry_name $baseName]
nxscript updatedictvar pa_entryName $entryName
@@ -509,12 +509,12 @@ proc ::nexus::save {{point 0} {callType "normalsave"}} {
} else {
::nexus::CallESProcs
# timestamp [expr {[clock seconds] - $start_seconds_array($data_label)}]
timestamp [expr {[clock seconds] - $start_seconds}]
dataFileName $currFilename($data_label)
file_status $file_states(O)
# timestamp force [expr {[clock seconds] - $start_seconds_array($data_label)}]
timestamp force [expr {[clock seconds] - $start_seconds}]
dataFileName force $currFilename($data_label)
file_status force $file_states(O)
::nexus::nxreopenfile $currFilename($data_label)
file_status $file_states(S)
file_status force $file_states(S)
set baseName [getBaseName $currFilename($data_label)]
set entryName [gen_NXentry_name $baseName]
nxscript updatedictvar pa_entryName $entryName
@@ -526,10 +526,10 @@ proc ::nexus::save {{point 0} {callType "normalsave"}} {
}
if {[info exists data_label] && [info exists currFilename($data_label)]} {
::nexus::nxclosefile $currFilename($data_label)
file_status $file_states(C)
file_status force $file_states(C)
incr save_count_arr($data_label)
save_count $save_count_arr($data_label)
currpoint $point
save_count force $save_count_arr($data_label)
currpoint force $point
} else {
set message "$message !! FAILED ASSERTION: data_lable and/or currFilename undefined !!"
}