lpcmanager

Parents 5a906c5e2d6f
Children 7b123fc70d19
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
+
# TODO
# 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.
+*/
+
+program erpc_PLCObject
+
+struct PSKID {
+ string ID;
+ string PSK;
+};
+
+enum PLCstatus_enum {
+ Empty
+ Stopped,
+ Started,
+ Broken,
+ Disconnected
+}
+
+struct PLCstatus {
+ PLCstatus_enum PLCstatus;
+ uint32[4] logcounts;
+};
+
+struct trace_sample {
+ uint32 tick;
+ binary TraceBuffer;
+};
+
+struct TraceVariables {
+ PLCstatus_enum PLCstatus;
+ list<trace_sample> traces;
+};
+
+struct extra_file {
+ string fname;
+ binary blobID;
+};
+
+struct trace_order {
+ uint32 idx;
+ binary force;
+};
+
+struct log_message {
+ string msg;
+ uint32 tick;
+ uint32 sec;
+ uint32 nsec;
+};
+
+
+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
+ PurgeBlobs() -> uint32
+ /* NOT TO DO : RemoteExec(in ) -> uint32 */
+ RepairPLC() -> uint32
+ ResetLogCount() -> uint32
+ SeedBlob(in binary seed, out binary blobID) -> uint32
+ SetTraceVariablesList(in list<trace_order> orders, out uint32 debugtoken) -> uint32
+ StartPLC() -> uint32
+ StopPLC(out bool success) -> uint32
+
+ /* SMARTEH */
+ 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
+#
+
+try:
+ from erpc import erpc_version
+ version = erpc_version.ERPC_VERSION
+except ImportError:
+ version = "unknown"
+if version != "1.11.0":
+ 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))
+
+from . import common
+from . import client
+from . import server
+from . import interface
--- /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
+#
+
+import erpc
+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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.APPENDCHUNKTOBLOB_ID,
+ sequence=request.sequence))
+ if data is None:
+ raise ValueError("data is None")
+ codec.write_binary(data)
+ if blobID is None:
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.GETLOGMESSAGE_ID,
+ sequence=request.sequence))
+ if level is None:
+ raise ValueError("level is None")
+ codec.write_uint8(level)
+ if msgID is None:
+ 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()
+ return _result
+
+ 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 = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.GETTRACEVARIABLES_ID,
+ sequence=request.sequence))
+ if debugToken is None:
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.MATCHMD5_ID,
+ sequence=request.sequence))
+ if MD5 is None:
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.NEWPLC_ID,
+ sequence=request.sequence))
+ if md5sum is None:
+ raise ValueError("md5sum is None")
+ codec.write_string(md5sum)
+ if plcObjectBlobID is None:
+ raise ValueError("plcObjectBlobID is None")
+ codec.write_binary(plcObjectBlobID)
+ if extrafiles is None:
+ raise ValueError("extrafiles is None")
+ codec.start_write_list(len(extrafiles))
+ for _i0 in extrafiles:
+ _i0._write(codec)
+
+
+ # Send request and process reply.
+ self._clientManager.perform_request(request)
+ success.value = codec.read_bool()
+ _result = codec.read_uint32()
+ return _result
+
+ def PurgeBlobs(self):
+ # Build remote function invocation message.
+ request = self._clientManager.create_request()
+ codec = request.codec
+ 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()
+ return _result
+
+ def RepairPLC(self):
+ # Build remote function invocation message.
+ request = self._clientManager.create_request()
+ codec = request.codec
+ 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()
+ return _result
+
+ def ResetLogCount(self):
+ # Build remote function invocation message.
+ request = self._clientManager.create_request()
+ codec = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.SEEDBLOB_ID,
+ sequence=request.sequence))
+ if seed is None:
+ 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()
+ return _result
+
+ 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 = request.codec
+ codec.start_write_message(erpc.codec.MessageInfo(
+ type=erpc.codec.MessageType.kInvocationMessage,
+ service=self.SERVICE_ID,
+ request=self.SETTRACEVARIABLESLIST_ID,
+ sequence=request.sequence))
+ if orders is None:
+ raise ValueError("orders is None")
+ codec.start_write_list(len(orders))
+ for _i0 in orders:
+ _i0._write(codec)
+
+
+ # Send request and process reply.
+ self._clientManager.perform_request(request)
+ debugtoken.value = codec.read_uint32()
+ _result = codec.read_uint32()
+ return _result
+
+ def StartPLC(self):
+ # Build remote function invocation message.
+ request = self._clientManager.create_request()
+ codec = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ 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()
+ return _result
+
+ 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 = request.codec
+ 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()
+ return _result
+
+
--- /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
+class PLCstatus_enum:
+ Empty = 0
+ Stopped = 1
+ Started = 2
+ Broken = 3
+ Disconnected = 4
+
+
+# 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()
+ return self
+
+ def _write(self, codec):
+ if self.msg is None:
+ raise ValueError("msg is None")
+ codec.write_string(self.msg)
+ if self.tick is None:
+ raise ValueError("tick is None")
+ codec.write_uint32(self.tick)
+ if self.sec is None:
+ raise ValueError("sec is None")
+ codec.write_uint32(self.sec)
+ if self.nsec is None:
+ raise ValueError("nsec is None")
+ codec.write_uint32(self.nsec)
+
+ def __str__(self):
+ 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 __repr__(self):
+ return self.__str__()
+
+class PSKID(object):
+ def __init__(self, ID=None, PSK=None):
+ self.ID = ID # string
+ self.PSK = PSK # string
+
+ def _read(self, codec):
+ self.ID = codec.read_string()
+ self.PSK = codec.read_string()
+ return self
+
+ def _write(self, codec):
+ if self.ID is None:
+ raise ValueError("ID is None")
+ codec.write_string(self.ID)
+ if self.PSK is None:
+ raise ValueError("PSK is None")
+ codec.write_string(self.PSK)
+
+ def __str__(self):
+ return "<%s@%x ID=%s PSK=%s>" % (self.__class__.__name__, id(self), self.ID, self.PSK)
+
+ def __repr__(self):
+ return self.__str__()
+
+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()
+ self.logcounts = []
+ for _i0 in range(4):
+ _v0 = codec.read_uint32()
+ self.logcounts.append(_v0)
+
+ return self
+
+ 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)
+
+
+ def __str__(self):
+ return "<%s@%x PLCstatus=%s logcounts=%s>" % (self.__class__.__name__, id(self), self.PLCstatus, self.logcounts)
+
+ def __repr__(self):
+ return self.__str__()
+
+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()
+ return self
+
+ def _write(self, codec):
+ if self.tick is None:
+ 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)
+
+ def __str__(self):
+ return "<%s@%x tick=%s TraceBuffer=%s>" % (self.__class__.__name__, id(self), self.tick, self.TraceBuffer)
+
+ def __repr__(self):
+ return self.__str__()
+
+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()
+ self.traces = []
+ for _i0 in range(_n0):
+ _v0 = trace_sample()._read(codec)
+ self.traces.append(_v0)
+
+ return self
+
+ 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:
+ _i0._write(codec)
+
+
+ def __str__(self):
+ return "<%s@%x PLCstatus=%s traces=%s>" % (self.__class__.__name__, id(self), self.PLCstatus, self.traces)
+
+ def __repr__(self):
+ return self.__str__()
+
+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()
+ return self
+
+ def _write(self, codec):
+ if self.fname is None:
+ 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)
+
+ def __str__(self):
+ return "<%s@%x fname=%s blobID=%s>" % (self.__class__.__name__, id(self), self.fname, self.blobID)
+
+ def __repr__(self):
+ return self.__str__()
+
+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()
+ return self
+
+ def _write(self, codec):
+ if self.idx is None:
+ raise ValueError("idx is None")
+ codec.write_uint32(self.idx)
+ if self.force is None:
+ raise ValueError("force is None")
+ codec.write_binary(self.force)
+
+ def __str__(self):
+ return "<%s@%x idx=%s force=%s>" % (self.__class__.__name__, id(self), self.idx, self.force)
+
+ def __repr__(self):
+ return self.__str__()
+
--- /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):
+ SERVICE_ID = 1
+ APPENDCHUNKTOBLOB_ID = 1
+ GETLOGMESSAGE_ID = 2
+ GETPLCID_ID = 3
+ GETPLCSTATUS_ID = 4
+ GETTRACEVARIABLES_ID = 5
+ MATCHMD5_ID = 6
+ NEWPLC_ID = 7
+ PURGEBLOBS_ID = 8
+ REPAIRPLC_ID = 9
+ RESETLOGCOUNT_ID = 10
+ SEEDBLOB_ID = 11
+ SETTRACEVARIABLESLIST_ID = 12
+ STARTPLC_ID = 13
+ STOPPLC_ID = 14
+ CHECKPRODUCTID_ID = 15
+ GETVERSIONS_ID = 16
+
+ 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()
+
+ def PurgeBlobs(self):
+ raise NotImplementedError()
+
+ def RepairPLC(self):
+ raise NotImplementedError()
+
+ def ResetLogCount(self):
+ raise NotImplementedError()
+
+ def SeedBlob(self, seed, blobID):
+ raise NotImplementedError()
+
+ def SetTraceVariablesList(self, orders, debugtoken):
+ raise NotImplementedError()
+
+ def StartPLC(self):
+ 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
+#
+
+import erpc
+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
+ self._methods = {
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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()
+ extrafiles = []
+ for _i0 in range(_n0):
+ _v0 = common.extra_file()._read(codec)
+ extrafiles.append(_v0)
+
+
+ # Invoke user implementation of remote function.
+ _result = self._handler.NewPLC(md5sum, plcObjectBlobID, extrafiles, success)
+
+ # Prepare codec for reply message.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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()
+ orders = []
+ for _i0 in range(_n0):
+ _v0 = common.trace_order()._read(codec)
+ orders.append(_v0)
+
+
+ # Invoke user implementation of remote function.
+ _result = self._handler.SetTraceVariablesList(orders, debugtoken)
+
+ # Prepare codec for reply message.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ 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.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ if same.value is None:
+ 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.
+ ver = erpc.Reference()
+
+ # Read incoming parameters.
+
+ # Invoke user implementation of remote function.
+ _result = self._handler.GetVersions(ver)
+
+ # Prepare codec for reply message.
+ codec.reset()
+
+ # 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,
+ sequence=sequence))
+ if ver.value is None:
+ raise ValueError("ver.value is None")
+ codec.write_string(ver.value)
+ codec.write_uint32(_result)
+
+