runtime/PLCObject.py
changeset 1740 b789b695b5c6
parent 1739 ec153828ded2
child 1741 dd94b9a68c61
--- a/runtime/PLCObject.py	Tue Aug 15 12:17:51 2017 +0300
+++ b/runtime/PLCObject.py	Tue Aug 15 15:50:30 2017 +0300
@@ -47,8 +47,8 @@
     return tb
 
 lib_ext ={
-     "linux2":".so",
-     "win32":".dll",
+     "linux2": ".so",
+     "win32":  ".dll",
      }.get(sys.platform, "")
 
 
@@ -128,16 +128,16 @@
                 ctypes.byref(tv_nsec))
             if sz and sz <= maxsz:
                 self._log_read_buffer[sz] = '\x00'
-                return self._log_read_buffer.value,tick.value,tv_sec.value,tv_nsec.value
+                return self._log_read_buffer.value, tick.value, tv_sec.value, tv_nsec.value
         elif self._loading_error is not None and level==0:
-            return self._loading_error,0,0,0
+            return self._loading_error, 0, 0, 0
         return None
 
     def _GetMD5FileName(self):
         return os.path.join(self.workingdir, "lasttransferedPLC.md5")
 
     def _GetLibFileName(self):
-        return os.path.join(self.workingdir,self.CurrentPLCFilename)
+        return os.path.join(self.workingdir, self.CurrentPLCFilename)
 
 
     def LoadPLC(self):
@@ -241,22 +241,22 @@
         """
         self.PLClibraryLock.acquire()
         # Forget all refs to library
-        self._startPLC = lambda x,y:None
-        self._stopPLC = lambda:None
-        self._ResetDebugVariables = lambda:None
-        self._RegisterDebugVariable = lambda x, y:None
-        self._IterDebugData = lambda x,y:None
-        self._FreeDebugData = lambda:None
-        self._GetDebugData = lambda:-1
-        self._suspendDebug = lambda x:-1
-        self._resumeDebug = lambda:None
-        self._PythonIterator = lambda:""
+        self._startPLC = lambda x, y: None
+        self._stopPLC = lambda: None
+        self._ResetDebugVariables = lambda: None
+        self._RegisterDebugVariable = lambda x, y: None
+        self._IterDebugData = lambda x, y: None
+        self._FreeDebugData = lambda: None
+        self._GetDebugData = lambda: -1
+        self._suspendDebug = lambda x: -1
+        self._resumeDebug = lambda: None
+        self._PythonIterator = lambda: ""
         self._GetLogCount = None
-        self._LogMessage = lambda l,m,s:PLCprint("OFF LOG :"+m)
+        self._LogMessage = lambda l, m, s: PLCprint("OFF LOG :"+m)
         self._GetLogMessage = None
         self.PLClibraryHandle = None
         # Unload library explicitely
-        if getattr(self,"_PLClibraryHandle",None) is not None:
+        if getattr(self, "_PLClibraryHandle", None) is not None:
             dlclose(self._PLClibraryHandle)
             self._PLClibraryHandle = None
 
@@ -269,9 +269,9 @@
         runtime python files, loaded when new PLC uploaded
         """
         for method in self.python_runtime_vars.get("_runtime_%s" % methodname, []):
-            res,exp = self.evaluator(method)
+            res, exp = self.evaluator(method)
             if exp is not None:
-                self.LogMessage(0,'\n'.join(traceback.format_exception(*exp)))
+                self.LogMessage(0, '\n'.join(traceback.format_exception(*exp)))
 
     def PythonRuntimeInit(self):
         MethodNames = ["init", "start", "stop", "cleanup"]
@@ -292,7 +292,7 @@
                     t = self.python_runtime_vars["_"+name+"_ctype"]
                 except KeyError:
                     raise KeyError("Try to set unknown shared global variable : %s" % name)
-                v = self.python_runtime_vars["_"+name+"_pack"](t,value)
+                v = self.python_runtime_vars["_"+name+"_pack"](t, value)
                 self.python_runtime_vars["_PySafeSetPLCGlob_"+name](ctypes.byref(v))
 
         self.python_runtime_vars.update({
@@ -317,7 +317,7 @@
                         if method is not None:
                             self.python_runtime_vars["_runtime_%s" % methodname].append(method)
         except:
-            self.LogMessage(0,traceback.format_exc())
+            self.LogMessage(0, traceback.format_exc())
             raise
 
         self.PythonRuntimeCall("init")
@@ -332,38 +332,38 @@
 
     def PythonThreadProc(self):
         self.StartSem.release()
-        res,cmd,blkid = "None","None",ctypes.c_void_p()
+        res, cmd, blkid = "None", "None", ctypes.c_void_p()
         compile_cache={}
         while True:
             # print "_PythonIterator(", res, ")",
-            cmd = self._PythonIterator(res,blkid)
+            cmd = self._PythonIterator(res, blkid)
             FBID = blkid.value
             # print " -> ", cmd, blkid
             if cmd is None:
                 break
             try:
                 self.python_runtime_vars["FBID"]=FBID
-                ccmd,AST =compile_cache.get(FBID, (None,None))
+                ccmd, AST =compile_cache.get(FBID, (None, None))
                 if ccmd is None or ccmd!=cmd:
                     AST = compile(cmd, '<plc>', 'eval')
-                    compile_cache[FBID]=(cmd,AST)
-                result,exp = self.evaluator(eval,AST,self.python_runtime_vars)
+                    compile_cache[FBID]=(cmd, AST)
+                result, exp = self.evaluator(eval, AST, self.python_runtime_vars)
                 if exp is not None:
                     res = "#EXCEPTION : "+str(exp[1])
-                    self.LogMessage(1,('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID,cmd,
+                    self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID, cmd,
                         '\n'.join(traceback.format_exception(*exp))))
                 else:
                     res=str(result)
                 self.python_runtime_vars["FBID"]=None
-            except Exception,e:
+            except Exception, e:
                 res = "#EXCEPTION : "+str(e)
-                self.LogMessage(1,('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID,cmd,str(e)))
+                self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID, cmd, str(e)))
 
     def StartPLC(self):
         if self.CurrentPLCFilename is not None and self.PLCStatus == "Stopped":
             c_argv = ctypes.c_char_p * len(self.argv)
             error = None
-            res = self._startPLC(len(self.argv),c_argv(*self.argv))
+            res = self._startPLC(len(self.argv), c_argv(*self.argv))
             if res == 0:
                 self.PLCStatus = "Started"
                 self.StatusChange()
@@ -374,7 +374,7 @@
                 self.StartSem.acquire()
                 self.LogMessage("PLC started")
             else:
-                self.LogMessage(0,_("Problem starting PLC : error %d" % res))
+                self.LogMessage(0, _("Problem starting PLC : error %d" % res))
                 self.PLCStatus = "Broken"
                 self.StatusChange()
 
@@ -396,22 +396,22 @@
     def _Reload(self):
         self.daemon.shutdown(True)
         self.daemon.sock.close()
-        os.execv(sys.executable,[sys.executable]+sys.argv[:])
+        os.execv(sys.executable, [sys.executable]+sys.argv[:])
         # never reached
         return 0
 
     def ForceReload(self):
         # respawn python interpreter
-        Timer(0.1,self._Reload).start()
+        Timer(0.1, self._Reload).start()
         return True
 
     def GetPLCstatus(self):
-        return self.PLCStatus, map(self.GetLogCount,xrange(LogLevelsCount))
+        return self.PLCStatus, map(self.GetLogCount, xrange(LogLevelsCount))
 
     def NewPLC(self, md5sum, data, extrafiles):
         if self.PLCStatus in ["Stopped", "Empty", "Broken"]:
             NewFileName = md5sum + lib_ext
-            extra_files_log = os.path.join(self.workingdir,"extra_files.txt")
+            extra_files_log = os.path.join(self.workingdir, "extra_files.txt")
 
             self.UnLoadPLC()
 
@@ -431,7 +431,7 @@
 
             try:
                 # Create new PLC file
-                open(os.path.join(self.workingdir,NewFileName),
+                open(os.path.join(self.workingdir, NewFileName),
                      'wb').write(data)
 
                 # Store new PLC filename based on md5 key
@@ -439,8 +439,8 @@
 
                 # Then write the files
                 log = file(extra_files_log, "w")
-                for fname,fdata in extrafiles:
-                    fpath = os.path.join(self.workingdir,fname)
+                for fname, fdata in extrafiles:
+                    fpath = os.path.join(self.workingdir, fname)
                     open(fpath, "wb").write(fdata)
                     log.write(fname+'\n')
 
@@ -480,12 +480,12 @@
             if self._suspendDebug(False) == 0:
                 # keep a copy of requested idx
                 self._ResetDebugVariables()
-                for idx,iectype,force in idxs:
+                for idx, iectype, force in idxs:
                     if force !=None:
-                        c_type,unpack_func, pack_func = \
+                        c_type, unpack_func, pack_func = \
                             TypeTranslator.get(iectype,
-                                                    (None,None,None))
-                        force = ctypes.byref(pack_func(c_type,force))
+                                                    (None, None, None))
+                        force = ctypes.byref(pack_func(c_type, force))
                     self._RegisterDebugVariable(idx, force)
                 self._TracesSwap()
                 self._resumeDebug()