10 from inspect import getmembers, isfunction |
10 from inspect import getmembers, isfunction |
11 |
11 |
12 import erpc |
12 import erpc |
13 |
13 |
14 # eRPC service code |
14 # eRPC service code |
15 from erpc_interface.erpc_PLCObject.common import PSKID, PLCstatus, TraceVariables, trace_sample, PLCstatus_enum, log_message, IECtype_enum |
15 from erpc_interface.erpc_PLCObject.common import PSKID, PLCstatus, TraceVariables, trace_sample, PLCstatus_enum, log_message |
16 from erpc_interface.erpc_PLCObject.interface import IBeremizPLCObjectService |
16 from erpc_interface.erpc_PLCObject.interface import IBeremizPLCObjectService |
17 from erpc_interface.erpc_PLCObject.server import BeremizPLCObjectServiceService |
17 from erpc_interface.erpc_PLCObject.server import BeremizPLCObjectServiceService |
18 |
18 |
19 from runtime import GetPLCObjectSingleton as PLC |
19 from runtime import GetPLCObjectSingleton as PLC |
20 from runtime.loglevels import LogLevelsDict |
20 from runtime.loglevels import LogLevelsDict |
21 from runtime.ServicePublisher import ServicePublisher |
21 from runtime.ServicePublisher import ServicePublisher |
22 |
22 |
23 |
23 |
24 CRITICAL_LOG_LEVEL = LogLevelsDict["CRITICAL"] |
24 CRITICAL_LOG_LEVEL = LogLevelsDict["CRITICAL"] |
25 |
|
26 enum_to_IECtype = dict(map(lambda t:(t[1],t[0]),getmembers(IECtype_enum, lambda x:type(x)==int))) |
|
27 |
25 |
28 def ReturnAsLastOutput(method, args_wrapper, *args): |
26 def ReturnAsLastOutput(method, args_wrapper, *args): |
29 args[-1].value = method(*args_wrapper(*args[:-1])) |
27 args[-1].value = method(*args_wrapper(*args[:-1])) |
30 return 0 |
28 return 0 |
31 |
29 |
58 lambda data, blobID:(data, bytes(blobID)), |
56 lambda data, blobID:(data, bytes(blobID)), |
59 "NewPLC": |
57 "NewPLC": |
60 lambda md5sum, plcObjectBlobID, extrafiles: ( |
58 lambda md5sum, plcObjectBlobID, extrafiles: ( |
61 md5sum, bytes(plcObjectBlobID), [(f.fname, bytes(f.blobID)) for f in extrafiles]), |
59 md5sum, bytes(plcObjectBlobID), [(f.fname, bytes(f.blobID)) for f in extrafiles]), |
62 "SetTraceVariablesList": |
60 "SetTraceVariablesList": |
63 lambda orders : ([(order.idx, enum_to_IECtype[order.iectype], None if len(order.force)==0 else order.force) for order in orders],) |
61 lambda orders : ([(order.idx, None if len(order.force)==0 else bytes(order.force)) for order in orders],) |
64 } |
62 } |
65 |
63 |
66 def rpc_wrapper(method_name): |
64 def rpc_wrapper(method_name): |
67 PLCobj = PLC() |
65 PLCobj = PLC() |
68 method=getattr(PLCobj, method_name) |
66 method=getattr(PLCobj, method_name) |