runtime/eRPCServer.py
changeset 3885 22a009561502
parent 3884 34da877021d5
child 3887 2df45e4bd500
--- a/runtime/eRPCServer.py	Wed Jan 17 22:09:32 2024 +0100
+++ b/runtime/eRPCServer.py	Fri Jan 19 19:58:44 2024 +0100
@@ -12,7 +12,7 @@
 import erpc
 
 # eRPC service code
-from erpc_interface.erpc_PLCObject.common import PSKID, PLCstatus, TraceVariables, trace_sample, PLCstatus_enum, log_message
+from erpc_interface.erpc_PLCObject.common import PSKID, PLCstatus, TraceVariables, trace_sample, PLCstatus_enum, log_message, IECtype_enum
 from erpc_interface.erpc_PLCObject.interface import IBeremizPLCObjectService
 from erpc_interface.erpc_PLCObject.server import BeremizPLCObjectServiceService
 
@@ -23,6 +23,8 @@
 
 CRITICAL_LOG_LEVEL = LogLevelsDict["CRITICAL"]
 
+enum_to_IECtype = dict(map(lambda t:(t[1],t[0]),getmembers(IECtype_enum, lambda x:type(x)==int)))
+
 def ReturnAsLastOutput(method, args_wrapper, *args):
     args[-1].value = method(*args_wrapper(*args[:-1]))
     return 0
@@ -43,10 +45,12 @@
     "GetPLCstatus":TranslatedReturnAsLastOutput(
         lambda res:PLCstatus(getattr(PLCstatus_enum, res[0]),res[1])),
     "GetTraceVariables":TranslatedReturnAsLastOutput(
-        lambda res:TraceVariables(res[0],[trace_sample(*sample) for sample in res[1]])),
+        lambda res:TraceVariables(getattr(PLCstatus_enum, res[0]),[trace_sample(*sample) for sample in res[1]])),
     "MatchMD5":ReturnAsLastOutput,
     "NewPLC":ReturnAsLastOutput,
     "SeedBlob":ReturnAsLastOutput,
+    "SetTraceVariablesList": ReturnAsLastOutput,
+    "StopPLC":ReturnAsLastOutput,
 }
 
 ArgsWrappers = {
@@ -56,7 +60,7 @@
         lambda md5sum, plcObjectBlobID, extrafiles: (
             md5sum, bytes(plcObjectBlobID), [(f.fname, bytes(f.blobID)) for f in extrafiles]),
     "SetTraceVariablesList": 
-        lambda orders : ([(order.idx, order.iectype, order.force) for order in orders],)
+        lambda orders : ([(order.idx, enum_to_IECtype[order.iectype], None if len(order.force)==0 else order.force) for order in orders],)
 }
 
 def rpc_wrapper(method_name):