runtime/eRPCServer.py
changeset 3887 2df45e4bd500
parent 3885 22a009561502
child 3898 de4f17d737a9
equal deleted inserted replaced
3886:2adfa4c60bff 3887:2df45e4bd500
    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)