--- a/targets/typemapping.py Mon Aug 21 20:17:19 2017 +0000
+++ b/targets/typemapping.py Mon Aug 21 23:22:58 2017 +0300
@@ -23,13 +23,13 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
import ctypes
+from ctypes import *
+from datetime import timedelta as td
+
ctypes.pythonapi.PyString_AsString.argtypes = (ctypes.c_void_p,)
ctypes.pythonapi.PyString_AsString.restype = ctypes.POINTER(ctypes.c_char)
-from ctypes import *
-from datetime import timedelta as td
-
class IEC_STRING(Structure):
"""
Must be changed according to changes in iec_types.h
@@ -37,68 +37,73 @@
_fields_ = [("len", c_uint8),
("body", c_char * 126)]
+
class IEC_TIME(Structure):
"""
Must be changed according to changes in iec_types.h
"""
- _fields_ = [("s", c_long), #tv_sec
- ("ns", c_long)] #tv_nsec
+ _fields_ = [("s", c_long), # tv_sec
+ ("ns", c_long)] # tv_nsec
-def _t(t, u=lambda x:x.value, p=lambda t,x:t(x)): return (t, u, p)
+
+def _t(t, u=lambda x: x.value, p=lambda t, x: t(x)): return (t, u, p)
+
+
def _ttime(): return (IEC_TIME,
- lambda x:td(0, x.s, x.ns/1000),
- lambda t,x:t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000))
+ lambda x: td(0, x.s, x.ns/1000),
+ lambda t, x: t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000))
+
SameEndianessTypeTranslator = {
- "BOOL" : _t(c_uint8, lambda x:x.value!=0),
- "STEP" : _t(c_uint8),
- "TRANSITION" : _t(c_uint8),
- "ACTION" : _t(c_uint8),
- "SINT" : _t(c_int8),
- "USINT" : _t(c_uint8),
- "BYTE" : _t(c_uint8),
- "STRING" : (IEC_STRING,
- lambda x:x.body[:x.len],
- lambda t,x:t(len(x),x)),
- "INT" : _t(c_int16),
- "UINT" : _t(c_uint16),
- "WORD" : _t(c_uint16),
- "DINT" : _t(c_int32),
- "UDINT" : _t(c_uint32),
- "DWORD" : _t(c_uint32),
- "LINT" : _t(c_int64),
- "ULINT" : _t(c_uint64),
- "LWORD" : _t(c_uint64),
- "REAL" : _t(c_float),
- "LREAL" : _t(c_double),
- "TIME" : _ttime(),
- "TOD" : _ttime(),
- "DATE" : _ttime(),
- "DT" : _ttime(),
+ "BOOL": _t(c_uint8, lambda x: x.value != 0),
+ "STEP": _t(c_uint8),
+ "TRANSITION": _t(c_uint8),
+ "ACTION": _t(c_uint8),
+ "SINT": _t(c_int8),
+ "USINT": _t(c_uint8),
+ "BYTE": _t(c_uint8),
+ "STRING": (IEC_STRING,
+ lambda x: x.body[:x.len],
+ lambda t, x: t(len(x), x)),
+ "INT": _t(c_int16),
+ "UINT": _t(c_uint16),
+ "WORD": _t(c_uint16),
+ "DINT": _t(c_int32),
+ "UDINT": _t(c_uint32),
+ "DWORD": _t(c_uint32),
+ "LINT": _t(c_int64),
+ "ULINT": _t(c_uint64),
+ "LWORD": _t(c_uint64),
+ "REAL": _t(c_float),
+ "LREAL": _t(c_double),
+ "TIME": _ttime(),
+ "TOD": _ttime(),
+ "DATE": _ttime(),
+ "DT": _ttime(),
}
SwapedEndianessTypeTranslator = {
- #TODO
+ # TODO
}
-TypeTranslator=SameEndianessTypeTranslator
+TypeTranslator = SameEndianessTypeTranslator
# Construct debugger natively supported types
-DebugTypesSize = dict([(key,sizeof(t)) for key,(t,p,u) in SameEndianessTypeTranslator.iteritems() if t is not None])
+DebugTypesSize = dict([(key, sizeof(t)) for key, (t, p, u) in SameEndianessTypeTranslator.iteritems() if t is not None])
+
def UnpackDebugBuffer(buff, indexes):
- res = []
+ res = []
buffoffset = 0
buffsize = len(buff)
- buffptr = cast(ctypes.pythonapi.PyString_AsString(id(buff)),c_void_p).value
+ buffptr = cast(ctypes.pythonapi.PyString_AsString(id(buff)), c_void_p).value
for iectype in indexes:
- c_type,unpack_func, pack_func = \
- TypeTranslator.get(iectype,
- (None,None,None))
+ c_type, unpack_func, pack_func = \
+ TypeTranslator.get(iectype, (None, None, None))
if c_type is not None and buffoffset < buffsize:
- cursor = c_void_p( buffptr + buffoffset)
- value = unpack_func( cast(cursor,
- POINTER(c_type)).contents)
+ cursor = c_void_p(buffptr + buffoffset)
+ value = unpack_func(cast(cursor,
+ POINTER(c_type)).contents)
buffoffset += sizeof(c_type) if iectype != "STRING" else len(value)+1
res.append(value)
else:
@@ -108,9 +113,7 @@
return None
-
-LogLevels = ["CRITICAL","WARNING","INFO","DEBUG"]
+LogLevels = ["CRITICAL", "WARNING", "INFO", "DEBUG"]
LogLevelsCount = len(LogLevels)
-LogLevelsDict = dict(zip(LogLevels,range(LogLevelsCount)))
+LogLevelsDict = dict(zip(LogLevels, range(LogLevelsCount)))
LogLevelsDefault = LogLevelsDict["DEBUG"]
-