########################################################################
### FILE: recover.mod
### PURPOSE: Power Failure Recovery
###
########################################################################
VAR MaxDownTime $[ 18 * 60 * 60 ] # 18hours max. down time for recovery
VAR UpdateSavedTimeInterval $[ 60 * 60 ] # Commit saved time on a hourly basis
DEFINT CheckAndRecover
IF ${#Protocol:-}
LVAR RecoverTime $(SYSTem:TIMe?)
LVAR Elapsed $[ ${RecoverTime} - ${SavedTime:-0.0} ]
LVAR RecoverSpec "-runTitle=\"${RunTitle:-Default}\"" \
"-protocol=\"${Protocol}\"" \
"-startTime=${RunStartTime:--}" \
"-interruptTime=${SavedTime:--}" \
"-recoverTime=${RecoverTime}" \
"-elapsedTime=$[ ${RecoverTime} - ${SavedTime:-0.0} ]"
IF $[ ${Elapsed} < ${MaxDownTime} ]
VAR Recovered ${RecoverSpec}
PUBLish Run "Recovering ${RecoverSpec}"
PROTocol ${Protocol} ${ProtocolText}
LVAR RecoveredRun ${RunTitle:-}
VAR- -ignoreMissing RunTitle
RunProtocol -sampleVolume=${SampleVolume} -runMode=${RunMode} \
-coverTemperature=${CoverRunSetting} \
-coverLowTemperature=${CoverLowSetting} \
-coverLowTrigger=${CoverLowTrigger} \
-protocol=${Protocol} \
-runTitle=${RecoveredRun} \
-coverEnabled=${CoverRunControl}
ELSe
VAR- -ignoreMissing RunStartTime
VAR- -ignoreMissing RunMode
VAR- -ignoreMissing SampleVolume
VAR- -ignoreMissing CoverRunControl
VAR- -ignoreMissing CoverLowTrigger
VAR- -ignoreMissing CoverLowSetting
VAR- -ignoreMissing CoverRunSetting
VAR- -ignoreMissing RunTitle
VAR- -ignoreMissing Protocol
VAR- -ignoreMissing Recovered
VAR- -ignoreMissing SavedTime
VAR- -ignoreMissing SavedStage
VAR- -ignoreMissing SavedCycle
VAR- -ignoreMissing SavedStep
VAR- -ignoreMissing ProtocolText
PUBLish Run "Discarding ${RecoverSpec}"
DEFine RECOVERED?
IF ${#Recovered:-} RETurn True ${Recovered}
ELSe RETurn False
CheckAndRecover