#ifndef _MESSAGE_HANDLER_HEADER #define _MESSAGE_HANDLER_HEADER #include "freertos/idf_additions.h" #include #include typedef void (*RegisterFunctionCallback)(uint8_t msgid, const uint8_t *payload, size_t payload_len); typedef void (*RegisterTaskCallback)(uint8_t msgid, const uint8_t *payload, size_t payload_len); struct RegisterdFunction { uint8_t MSGID; RegisterFunctionCallback callback; }; struct RegisterdTask { uint8_t MSGID; RegisterTaskCallback task; }; struct MessageBroker { struct RegisterdFunction FunctionList[64]; uint8_t num_direct_callbacks; struct RegisterdTask TaskList[64]; uint8_t num_task_callbacks; }; typedef void (*SendMessageHookCallback)(const uint8_t *buffer, size_t length); void InitMessageBroker(); void RegisterCallback(uint8_t msgid, RegisterFunctionCallback callback); void RegisterTask(uint8_t msgid, RegisterTaskCallback callback); void SendMessage(const uint8_t *buffer, size_t length); void MessageBrokerTask(void *param); #endif