# HG changeset patch # User dgaberscek # Date 1590738367 -7200 # Node ID 67c6783f221c1f83028430604114b8c9e8a39e80 # Parent 82f062408e709fc5ed624a64fef13f35e8dceda9# Parent 1f043fdaa7fb6a5a765b1913740a94853bd38548 Merge diff -r 82f062408e70 -r 67c6783f221c runtime/PLCObject.py --- a/runtime/PLCObject.py Tue May 26 10:59:01 2020 +0200 +++ b/runtime/PLCObject.py Fri May 29 09:46:07 2020 +0200 @@ -451,17 +451,27 @@ self.PythonThreadCond.notify() self.PythonThreadCondLock.release() + def _fail(msg): + self.LogMessage(0, msg) + self.PLCStatus = PlcStatus.Broken + self.StatusChange() + + def PreStartPLC(self): + """ + Here goes actions to be taken just before PLC starts, + with all libraries and python object already created. + For example : restore saved proprietary parameters + """ + pass + @RunInMain def StartPLC(self): - def fail(msg): - self.LogMessage(0, msg) - self.PLCStatus = PlcStatus.Broken - self.StatusChange() - if self.PLClibraryHandle is None: if not self.LoadPLC(): - fail(_("Problem starting PLC : can't load PLC")) + self._fail(_("Problem starting PLC : can't load PLC")) + + self.PreStartPLC() if self.CurrentPLCFilename is not None and self.PLCStatus == PlcStatus.Stopped: c_argv = ctypes.c_char_p * len(self.argv) @@ -472,7 +482,7 @@ self.PythonThreadCommand("Activate") self.LogMessage("PLC started") else: - fail(_("Problem starting PLC : error %d" % res)) + self._fail(_("Problem starting PLC : error %d" % res)) @RunInMain def StopPLC(self):