# HG changeset patch # User Edouard Tisserant # Date 1717446599 -7200 # Node ID 2510c1f935d1d802c523763d6297589c170becf6 # Parent 9b4ffbb953381feb1ccfde252d4d365100892504 C runtime: add autoload diff -r 9b4ffbb95338 -r 2510c1f935d1 C_runtime/PLCObject.cpp --- a/C_runtime/PLCObject.cpp Mon Jun 03 22:29:20 2024 +0200 +++ b/C_runtime/PLCObject.cpp Mon Jun 03 22:29:59 2024 +0200 @@ -79,6 +79,26 @@ return 0; } +uint32_t PLCObject::AutoLoad() +{ + // Load PLC object + uint32_t res = LoadPLC(); + if (res != 0) + { + return res; + } + + // Start PLC object + res = StartPLC(); + if (res != 0) + { + return res; + } + + return 0; +} + + #define LOG_READ_BUFFER_SIZE 1 << 10 // 1KB uint32_t PLCObject::GetLogMessage( diff -r 9b4ffbb95338 -r 2510c1f935d1 C_runtime/PLCObject.hpp --- a/C_runtime/PLCObject.hpp Mon Jun 03 22:29:20 2024 +0200 +++ b/C_runtime/PLCObject.hpp Mon Jun 03 22:29:59 2024 +0200 @@ -71,6 +71,7 @@ uint32_t SetTraceVariablesList(const list_trace_order_1_t * orders, int32_t * debugtoken); uint32_t StartPLC(void); uint32_t StopPLC(bool * success); + uint32_t AutoLoad(); private: // A map of all the blobs diff -r 9b4ffbb95338 -r 2510c1f935d1 C_runtime/posix_main.cpp --- a/C_runtime/posix_main.cpp Mon Jun 03 22:29:20 2024 +0200 +++ b/C_runtime/posix_main.cpp Mon Jun 03 22:29:59 2024 +0200 @@ -71,6 +71,7 @@ "b:baudrate ", "p:port ", "h:host ", + "a|autoload", NULL }; /*! Help string. */ @@ -83,6 +84,7 @@ -b/--baudrate Baud rate.\n\ -p/--port Port name or port number.\n\ -h/--host Host definition.\n\ + -a/--autoload Autoload.\n\ \n\ Available transports (use with -t option):\n\ tcp Tcp transport type (host, port number).\n\ @@ -127,6 +129,7 @@ uint32_t m_baudrate; /*!< Baudrate rate speed. */ const char *m_port; /*!< Name or number of port. Based on used transport. */ const char *m_host; /*!< Host name */ + bool m_autoload = false; /*!< Autoload flag. */ public: /*! @@ -239,6 +242,12 @@ break; } + case 'a': + { + m_autoload = true; + break; + } + default: { Log::error("error: unrecognized option\n\n"); @@ -363,17 +372,21 @@ BasicCodecFactory _basicCodecFactory; SimpleServer _server; - BeremizPLCObjectService_service *svc; - Log::info("Starting ERPC server...\n"); _server.setMessageBufferFactory(&_msgFactory); _server.setTransport(_transport); _server.setCodecFactory(&_basicCodecFactory); - svc = new BeremizPLCObjectService_service(new PLCObject()); - - _server.addService(svc); + PLCObject plc_object = PLCObject(); + BeremizPLCObjectService_service svc = BeremizPLCObjectService_service(&plc_object); + + _server.addService(&svc); + + if(m_autoload) + { + plc_object.AutoLoad(); + } _server.run();