diff -r 03df7946c2fa -r b217fb367574 runtime/eRPCServer.py --- a/runtime/eRPCServer.py Tue Nov 19 23:52:04 2024 +0100 +++ b/runtime/eRPCServer.py Fri Nov 22 16:31:51 2024 +0100 @@ -47,6 +47,7 @@ "SeedBlob":ReturnAsLastOutput, "SetTraceVariablesList": ReturnAsLastOutput, "StopPLC":ReturnAsLastOutput, + "ExtendedCall":ReturnAsLastOutput, } ArgsWrappers = { @@ -59,7 +60,7 @@ lambda orders : ([(order.idx, None if len(order.force)==0 else bytes(order.force)) for order in orders],) } -def rpc_wrapper(method_name): +def rpc_wrapper(method_name, server): PLCobj = PLC() method=getattr(PLCobj, method_name) args_wrapper = ArgsWrappers.get(method_name, lambda *x:x) @@ -72,7 +73,8 @@ return 0 except Exception as e: print(traceback.format_exc()) - PLCobj.LogMessage(CRITICAL_LOG_LEVEL, f'eRPC call {method_name} Exception "{str(e)}"') + PLCobj.LogMessage(LogLevelsDict["CRITICAL"], f'eRPC call {method_name} Exception "{str(e)}"') + server.transport.close() raise return exception_wrapper @@ -109,7 +111,7 @@ handler = type( "PLCObjectServiceHandlder", (IBeremizPLCObjectService,), - {name: rpc_wrapper(name) + {name: rpc_wrapper(name, self) for name,_func in getmembers(IBeremizPLCObjectService, isfunction)})() service = BeremizPLCObjectServiceService(handler)