Add own eRPC interface stubs + overload RPC call translation for our specific PLCObject methods.
--- a/LPCExtension.py Tue Feb 20 11:46:06 2024 +0100
+++ b/LPCExtension.py Fri Mar 08 11:11:52 2024 +0100
@@ -64,6 +64,11 @@
return WAMP._WAMP_connector_factory(WampSession, *args, **kwargs)
connectors.connectors["WAMP"] = lambda:CustomWAMPFactory
+from connectors import ERPC +ERPC.ReturnWrappers["CheckProductID"] = ERPC.ReturnAsLastOutput +ERPC.ReturnWrappers["GetVersions"] = ERPC.ReturnAsLastOutput # from LPCconnector import LPC_connector_factory
# connectors.connectors["LPC"] = lambda: LPC_connector_factory
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/__init__.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,6 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject.erpc Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,75 @@
+ Written by Edouard TISSERANT (C) 2024 + This file is part of Beremiz runtime and IDE + See COPYING.Runtime and COPYING file for copyrights details. + PLCstatus_enum PLCstatus; + PLCstatus_enum PLCstatus; + list<trace_sample> traces; +interface BeremizPLCObjectService { + AppendChunkToBlob(in binary data, in binary blobID, out binary newBlobID) -> uint32 + GetLogMessage(in uint8 level, in uint32 msgID, out log_message message) -> uint32 + GetPLCID(out PSKID plcID) -> uint32 + GetPLCstatus(out PLCstatus status) -> uint32 + GetTraceVariables(in uint32 debugToken, out TraceVariables traces) -> uint32 + MatchMD5(in string MD5, out bool match) -> uint32 + NewPLC(in string md5sum, in binary plcObjectBlobID, in list<extra_file> extrafiles, out bool success) -> uint32 + /* NOT TO DO : RemoteExec(in ) -> uint32 */ + ResetLogCount() -> uint32 + SeedBlob(in binary seed, out binary blobID) -> uint32 + SetTraceVariablesList(in list<trace_order> orders, out uint32 debugtoken) -> uint32 + StopPLC(out bool success) -> uint32 + CheckProductID(in string productIDtoCheck, out bool same) -> uint32 + GetVersions(out string ver) -> uint32 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject/__init__.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,19 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT + from erpc import erpc_version + version = erpc_version.ERPC_VERSION + raise ValueError("The generated shim code version (1.11.0) is different to the rest of eRPC code (%s). \ +Install newer version by running \"python setup.py install\" in folder erpc/erpc_python/." % repr(version)) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject/client.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,334 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT +from . import common, interface +# Client for BeremizPLCObjectService +class BeremizPLCObjectServiceClient(interface.IBeremizPLCObjectService): + def __init__(self, manager): + super(BeremizPLCObjectServiceClient, self).__init__() + self._clientManager = manager + def AppendChunkToBlob(self, data, blobID, newBlobID): + assert type(newBlobID) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.APPENDCHUNKTOBLOB_ID, + sequence=request.sequence)) + raise ValueError("data is None") + codec.write_binary(data) + raise ValueError("blobID is None") + codec.write_binary(blobID) + # Send request and process reply. + self._clientManager.perform_request(request) + newBlobID.value = codec.read_binary() + _result = codec.read_uint32() + def GetLogMessage(self, level, msgID, message): + assert type(message) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.GETLOGMESSAGE_ID, + sequence=request.sequence)) + raise ValueError("level is None") + codec.write_uint8(level) + raise ValueError("msgID is None") + codec.write_uint32(msgID) + # Send request and process reply. + self._clientManager.perform_request(request) + message.value = common.log_message()._read(codec) + _result = codec.read_uint32() + def GetPLCID(self, plcID): + assert type(plcID) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.GETPLCID_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + plcID.value = common.PSKID()._read(codec) + _result = codec.read_uint32() + def GetPLCstatus(self, status): + assert type(status) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.GETPLCSTATUS_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + status.value = common.PLCstatus()._read(codec) + _result = codec.read_uint32() + def GetTraceVariables(self, debugToken, traces): + assert type(traces) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.GETTRACEVARIABLES_ID, + sequence=request.sequence)) + raise ValueError("debugToken is None") + codec.write_uint32(debugToken) + # Send request and process reply. + self._clientManager.perform_request(request) + traces.value = common.TraceVariables()._read(codec) + _result = codec.read_uint32() + def MatchMD5(self, MD5, match): + assert type(match) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.MATCHMD5_ID, + sequence=request.sequence)) + raise ValueError("MD5 is None") + codec.write_string(MD5) + # Send request and process reply. + self._clientManager.perform_request(request) + match.value = codec.read_bool() + _result = codec.read_uint32() + def NewPLC(self, md5sum, plcObjectBlobID, extrafiles, success): + assert type(success) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.NEWPLC_ID, + sequence=request.sequence)) + raise ValueError("md5sum is None") + codec.write_string(md5sum) + if plcObjectBlobID is None: + raise ValueError("plcObjectBlobID is None") + codec.write_binary(plcObjectBlobID) + raise ValueError("extrafiles is None") + codec.start_write_list(len(extrafiles)) + # Send request and process reply. + self._clientManager.perform_request(request) + success.value = codec.read_bool() + _result = codec.read_uint32() + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.PURGEBLOBS_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + _result = codec.read_uint32() + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.REPAIRPLC_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + _result = codec.read_uint32() + def ResetLogCount(self): + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.RESETLOGCOUNT_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + _result = codec.read_uint32() + def SeedBlob(self, seed, blobID): + assert type(blobID) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.SEEDBLOB_ID, + sequence=request.sequence)) + raise ValueError("seed is None") + codec.write_binary(seed) + # Send request and process reply. + self._clientManager.perform_request(request) + blobID.value = codec.read_binary() + _result = codec.read_uint32() + def SetTraceVariablesList(self, orders, debugtoken): + assert type(debugtoken) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.SETTRACEVARIABLESLIST_ID, + sequence=request.sequence)) + raise ValueError("orders is None") + codec.start_write_list(len(orders)) + # Send request and process reply. + self._clientManager.perform_request(request) + debugtoken.value = codec.read_uint32() + _result = codec.read_uint32() + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.STARTPLC_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + _result = codec.read_uint32() + def StopPLC(self, success): + assert type(success) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.STOPPLC_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + success.value = codec.read_bool() + _result = codec.read_uint32() + def CheckProductID(self, productIDtoCheck, same): + assert type(same) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.CHECKPRODUCTID_ID, + sequence=request.sequence)) + if productIDtoCheck is None: + raise ValueError("productIDtoCheck is None") + codec.write_string(productIDtoCheck) + # Send request and process reply. + self._clientManager.perform_request(request) + same.value = codec.read_bool() + _result = codec.read_uint32() + def GetVersions(self, ver): + assert type(ver) is erpc.Reference, "out parameter must be a Reference object" + # Build remote function invocation message. + request = self._clientManager.create_request() + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kInvocationMessage, + service=self.SERVICE_ID, + request=self.GETVERSIONS_ID, + sequence=request.sequence)) + # Send request and process reply. + self._clientManager.perform_request(request) + ver.value = codec.read_string() + _result = codec.read_uint32() --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject/common.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,210 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT +# Enumerators data types declarations +# Structures data types declarations +class log_message(object): + def __init__(self, msg=None, tick=None, sec=None, nsec=None): + self.msg = msg # string + self.tick = tick # uint32 + self.sec = sec # uint32 + self.nsec = nsec # uint32 + def _read(self, codec): + self.msg = codec.read_string() + self.tick = codec.read_uint32() + self.sec = codec.read_uint32() + self.nsec = codec.read_uint32() + def _write(self, codec): + raise ValueError("msg is None") + codec.write_string(self.msg) + raise ValueError("tick is None") + codec.write_uint32(self.tick) + raise ValueError("sec is None") + codec.write_uint32(self.sec) + raise ValueError("nsec is None") + codec.write_uint32(self.nsec) + return "<%s@%x msg=%s tick=%s sec=%s nsec=%s>" % (self.__class__.__name__, id(self), self.msg, self.tick, self.sec, self.nsec) + def __init__(self, ID=None, PSK=None): + self.PSK = PSK # string + def _read(self, codec): + self.ID = codec.read_string() + self.PSK = codec.read_string() + def _write(self, codec): + raise ValueError("ID is None") + codec.write_string(self.ID) + raise ValueError("PSK is None") + codec.write_string(self.PSK) + return "<%s@%x ID=%s PSK=%s>" % (self.__class__.__name__, id(self), self.ID, self.PSK) +class PLCstatus(object): + def __init__(self, PLCstatus=None, logcounts=None): + self.PLCstatus = PLCstatus # PLCstatus_enum + self.logcounts = logcounts # uint32[4] + def _read(self, codec): + self.PLCstatus = codec.read_int32() + _v0 = codec.read_uint32() + self.logcounts.append(_v0) + def _write(self, codec): + if self.PLCstatus is None: + raise ValueError("PLCstatus is None") + codec.write_int32(self.PLCstatus) + if self.logcounts is None: + raise ValueError("logcounts is None") + for _i0 in self.logcounts: + codec.write_uint32(_i0) + return "<%s@%x PLCstatus=%s logcounts=%s>" % (self.__class__.__name__, id(self), self.PLCstatus, self.logcounts) +class trace_sample(object): + def __init__(self, tick=None, TraceBuffer=None): + self.tick = tick # uint32 + self.TraceBuffer = TraceBuffer # binary + def _read(self, codec): + self.tick = codec.read_uint32() + self.TraceBuffer = codec.read_binary() + def _write(self, codec): + raise ValueError("tick is None") + codec.write_uint32(self.tick) + if self.TraceBuffer is None: + raise ValueError("TraceBuffer is None") + codec.write_binary(self.TraceBuffer) + return "<%s@%x tick=%s TraceBuffer=%s>" % (self.__class__.__name__, id(self), self.tick, self.TraceBuffer) +class TraceVariables(object): + def __init__(self, PLCstatus=None, traces=None): + self.PLCstatus = PLCstatus # PLCstatus_enum + self.traces = traces # list<trace_sample> + def _read(self, codec): + self.PLCstatus = codec.read_int32() + _n0 = codec.start_read_list() + _v0 = trace_sample()._read(codec) + self.traces.append(_v0) + def _write(self, codec): + if self.PLCstatus is None: + raise ValueError("PLCstatus is None") + codec.write_int32(self.PLCstatus) + if self.traces is None: + raise ValueError("traces is None") + codec.start_write_list(len(self.traces)) + for _i0 in self.traces: + return "<%s@%x PLCstatus=%s traces=%s>" % (self.__class__.__name__, id(self), self.PLCstatus, self.traces) +class extra_file(object): + def __init__(self, fname=None, blobID=None): + self.fname = fname # string + self.blobID = blobID # binary + def _read(self, codec): + self.fname = codec.read_string() + self.blobID = codec.read_binary() + def _write(self, codec): + raise ValueError("fname is None") + codec.write_string(self.fname) + if self.blobID is None: + raise ValueError("blobID is None") + codec.write_binary(self.blobID) + return "<%s@%x fname=%s blobID=%s>" % (self.__class__.__name__, id(self), self.fname, self.blobID) +class trace_order(object): + def __init__(self, idx=None, force=None): + self.idx = idx # uint32 + self.force = force # binary + def _read(self, codec): + self.idx = codec.read_uint32() + self.force = codec.read_binary() + def _write(self, codec): + raise ValueError("idx is None") + codec.write_uint32(self.idx) + raise ValueError("force is None") + codec.write_binary(self.force) + return "<%s@%x idx=%s force=%s>" % (self.__class__.__name__, id(self), self.idx, self.force) --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject/interface.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,75 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT +# Abstract base class for BeremizPLCObjectService +class IBeremizPLCObjectService(object): + APPENDCHUNKTOBLOB_ID = 1 + GETTRACEVARIABLES_ID = 5 + SETTRACEVARIABLESLIST_ID = 12 + def AppendChunkToBlob(self, data, blobID, newBlobID): + raise NotImplementedError() + def GetLogMessage(self, level, msgID, message): + raise NotImplementedError() + def GetPLCID(self, plcID): + raise NotImplementedError() + def GetPLCstatus(self, status): + raise NotImplementedError() + def GetTraceVariables(self, debugToken, traces): + raise NotImplementedError() + def MatchMD5(self, MD5, match): + raise NotImplementedError() + def NewPLC(self, md5sum, plcObjectBlobID, extrafiles, success): + raise NotImplementedError() + raise NotImplementedError() + raise NotImplementedError() + def ResetLogCount(self): + raise NotImplementedError() + def SeedBlob(self, seed, blobID): + raise NotImplementedError() + def SetTraceVariablesList(self, orders, debugtoken): + raise NotImplementedError() + raise NotImplementedError() + def StopPLC(self, success): + raise NotImplementedError() + def CheckProductID(self, productIDtoCheck, same): + raise NotImplementedError() + def GetVersions(self, ver): + raise NotImplementedError() --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/erpc_interface/erpc_PLCObject/server.py Fri Mar 08 11:11:52 2024 +0100
@@ -0,0 +1,400 @@
+# Generated by erpcgen 1.11.0 on Tue Mar 5 16:08:14 2024. +# AUTOGENERATED - DO NOT EDIT +from . import common, interface +# Client for BeremizPLCObjectService +class BeremizPLCObjectServiceService(erpc.server.Service): + def __init__(self, handler): + super(BeremizPLCObjectServiceService, self).__init__(interface.IBeremizPLCObjectService.SERVICE_ID) + self._handler = handler + interface.IBeremizPLCObjectService.APPENDCHUNKTOBLOB_ID: self._handle_AppendChunkToBlob, + interface.IBeremizPLCObjectService.GETLOGMESSAGE_ID: self._handle_GetLogMessage, + interface.IBeremizPLCObjectService.GETPLCID_ID: self._handle_GetPLCID, + interface.IBeremizPLCObjectService.GETPLCSTATUS_ID: self._handle_GetPLCstatus, + interface.IBeremizPLCObjectService.GETTRACEVARIABLES_ID: self._handle_GetTraceVariables, + interface.IBeremizPLCObjectService.MATCHMD5_ID: self._handle_MatchMD5, + interface.IBeremizPLCObjectService.NEWPLC_ID: self._handle_NewPLC, + interface.IBeremizPLCObjectService.PURGEBLOBS_ID: self._handle_PurgeBlobs, + interface.IBeremizPLCObjectService.REPAIRPLC_ID: self._handle_RepairPLC, + interface.IBeremizPLCObjectService.RESETLOGCOUNT_ID: self._handle_ResetLogCount, + interface.IBeremizPLCObjectService.SEEDBLOB_ID: self._handle_SeedBlob, + interface.IBeremizPLCObjectService.SETTRACEVARIABLESLIST_ID: self._handle_SetTraceVariablesList, + interface.IBeremizPLCObjectService.STARTPLC_ID: self._handle_StartPLC, + interface.IBeremizPLCObjectService.STOPPLC_ID: self._handle_StopPLC, + interface.IBeremizPLCObjectService.CHECKPRODUCTID_ID: self._handle_CheckProductID, + interface.IBeremizPLCObjectService.GETVERSIONS_ID: self._handle_GetVersions, + def _handle_AppendChunkToBlob(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + newBlobID = erpc.Reference() + # Read incoming parameters. + data = codec.read_binary() + blobID = codec.read_binary() + # Invoke user implementation of remote function. + _result = self._handler.AppendChunkToBlob(data, blobID, newBlobID) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.APPENDCHUNKTOBLOB_ID, + if newBlobID.value is None: + raise ValueError("newBlobID.value is None") + codec.write_binary(newBlobID.value) + codec.write_uint32(_result) + def _handle_GetLogMessage(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + message = erpc.Reference() + # Read incoming parameters. + level = codec.read_uint8() + msgID = codec.read_uint32() + # Invoke user implementation of remote function. + _result = self._handler.GetLogMessage(level, msgID, message) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.GETLOGMESSAGE_ID, + if message.value is None: + raise ValueError("message.value is None") + message.value._write(codec) + codec.write_uint32(_result) + def _handle_GetPLCID(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + plcID = erpc.Reference() + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.GetPLCID(plcID) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.GETPLCID_ID, + if plcID.value is None: + raise ValueError("plcID.value is None") + plcID.value._write(codec) + codec.write_uint32(_result) + def _handle_GetPLCstatus(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + status = erpc.Reference() + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.GetPLCstatus(status) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.GETPLCSTATUS_ID, + if status.value is None: + raise ValueError("status.value is None") + status.value._write(codec) + codec.write_uint32(_result) + def _handle_GetTraceVariables(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + traces = erpc.Reference() + # Read incoming parameters. + debugToken = codec.read_uint32() + # Invoke user implementation of remote function. + _result = self._handler.GetTraceVariables(debugToken, traces) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.GETTRACEVARIABLES_ID, + if traces.value is None: + raise ValueError("traces.value is None") + traces.value._write(codec) + codec.write_uint32(_result) + def _handle_MatchMD5(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + match = erpc.Reference() + # Read incoming parameters. + MD5 = codec.read_string() + # Invoke user implementation of remote function. + _result = self._handler.MatchMD5(MD5, match) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.MATCHMD5_ID, + if match.value is None: + raise ValueError("match.value is None") + codec.write_bool(match.value) + codec.write_uint32(_result) + def _handle_NewPLC(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + success = erpc.Reference() + # Read incoming parameters. + md5sum = codec.read_string() + plcObjectBlobID = codec.read_binary() + _n0 = codec.start_read_list() + _v0 = common.extra_file()._read(codec) + # Invoke user implementation of remote function. + _result = self._handler.NewPLC(md5sum, plcObjectBlobID, extrafiles, success) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.NEWPLC_ID, + if success.value is None: + raise ValueError("success.value is None") + codec.write_bool(success.value) + codec.write_uint32(_result) + def _handle_PurgeBlobs(self, sequence, codec): + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.PurgeBlobs() + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.PURGEBLOBS_ID, + codec.write_uint32(_result) + def _handle_RepairPLC(self, sequence, codec): + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.RepairPLC() + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.REPAIRPLC_ID, + codec.write_uint32(_result) + def _handle_ResetLogCount(self, sequence, codec): + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.ResetLogCount() + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.RESETLOGCOUNT_ID, + codec.write_uint32(_result) + def _handle_SeedBlob(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + blobID = erpc.Reference() + # Read incoming parameters. + seed = codec.read_binary() + # Invoke user implementation of remote function. + _result = self._handler.SeedBlob(seed, blobID) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.SEEDBLOB_ID, + if blobID.value is None: + raise ValueError("blobID.value is None") + codec.write_binary(blobID.value) + codec.write_uint32(_result) + def _handle_SetTraceVariablesList(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + debugtoken = erpc.Reference() + # Read incoming parameters. + _n0 = codec.start_read_list() + _v0 = common.trace_order()._read(codec) + # Invoke user implementation of remote function. + _result = self._handler.SetTraceVariablesList(orders, debugtoken) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.SETTRACEVARIABLESLIST_ID, + if debugtoken.value is None: + raise ValueError("debugtoken.value is None") + codec.write_uint32(debugtoken.value) + codec.write_uint32(_result) + def _handle_StartPLC(self, sequence, codec): + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.StartPLC() + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.STARTPLC_ID, + codec.write_uint32(_result) + def _handle_StopPLC(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + success = erpc.Reference() + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.StopPLC(success) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.STOPPLC_ID, + if success.value is None: + raise ValueError("success.value is None") + codec.write_bool(success.value) + codec.write_uint32(_result) + def _handle_CheckProductID(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + same = erpc.Reference() + # Read incoming parameters. + productIDtoCheck = codec.read_string() + # Invoke user implementation of remote function. + _result = self._handler.CheckProductID(productIDtoCheck, same) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.CHECKPRODUCTID_ID, + raise ValueError("same.value is None") + codec.write_bool(same.value) + codec.write_uint32(_result) + def _handle_GetVersions(self, sequence, codec): + # Create reference objects to pass into handler for out/inout parameters. + # Read incoming parameters. + # Invoke user implementation of remote function. + _result = self._handler.GetVersions(ver) + # Prepare codec for reply message. + # Construct reply message. + codec.start_write_message(erpc.codec.MessageInfo( + type=erpc.codec.MessageType.kReplyMessage, + service=interface.IBeremizPLCObjectService.SERVICE_ID, + request=interface.IBeremizPLCObjectService.GETVERSIONS_ID, + raise ValueError("ver.value is None") + codec.write_string(ver.value) + codec.write_uint32(_result)