@@ -72,6 +72,12 @@ class MessageService : public MemoryManaged {
7272public:
7373 MessageService (Context& context);
7474
75+ // handle Requests from the OCPP Server
76+ bool registerOperation (const char *operationType, Operation* (*createOperationCb)(Context& context));
77+ bool registerOperation (const char *operationType, void (*onRequest)(const char *operationType, const char *payloadJson, void **userStatus, void *userData), int (*writeResponse)(const char *operationType, char *buf, size_t size, void *userStatus, void *userData), void (*finally)(const char *operationType, void *userStatus, void *userData) = nullptr, void *userData = nullptr);
78+ bool setOnReceiveRequest (const char *operationType, void (*onRequest)(const char *operationType, const char *payloadJson, void *userData), void *userData = nullptr);
79+ bool setOnSendConf (const char *operationType, void (*onConfirmation)(const char *operationType, const char *payloadJson, void *userData), void *userData = nullptr);
80+
7581 bool setup ();
7682
7783 void loop (); // polls all reqQueues and decides which request to send (if any)
@@ -80,15 +86,14 @@ class MessageService : public MemoryManaged {
8086 bool sendRequest (std::unique_ptr<Request> request); // send an OCPP operation request to the server; adds request to default queue
8187 bool sendRequestPreBoot (std::unique_ptr<Request> request); // send an OCPP operation request to the server; adds request to preBootQueue
8288
83- // handle Requests from the OCPP Server
84- bool registerOperation (const char *operationType, Operation* (*createOperationCb)(Context& context));
85- bool registerOperation (const char *operationType, void (*onRequest)(const char *operationType, const char *payloadJson, void **userStatus, void *userData), int (*writeResponse)(const char *operationType, char *buf, size_t size, void *userStatus, void *userData), void (*finally)(const char *operationType, void *userStatus, void *userData) = nullptr, void *userData = nullptr);
86- bool setOnReceiveRequest (const char *operationType, void (*onRequest)(const char *operationType, const char *payloadJson, void *userData), void *userData = nullptr);
87- bool setOnSendConf (const char *operationType, void (*onConfirmation)(const char *operationType, const char *payloadJson, void *userData), void *userData = nullptr);
88-
8989 // process message from server ("message" = serialized Request or Confirmation)
9090 bool receiveMessage (const char * payload, size_t length);
9191
92+ // Undo `registerOperation()`, `setOnReceiveRequest()` and `setOnSendConf()` for specific operation type.
93+ // Necessary to re-register different operation handler after `mo_setup()`. MO will clear all registered
94+ // handlers during `mo_deinitialize()` automatically.
95+ void clearRegisteredOperation (const char *operationType);
96+
9297 // Outgoing Requests are handled in separate queues.
9398 void addSendQueue (RequestQueue* sendQueue);
9499 void setPreBootSendQueue (VolatileRequestQueue *preBootQueue);
0 commit comments