42 lines
1.3 KiB
C
42 lines
1.3 KiB
C
#ifndef _MESSAGE_HANDLER_HEADER
|
|
#define _MESSAGE_HANDLER_HEADER
|
|
|
|
#include "freertos/idf_additions.h"
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
typedef void (*RegisterFunctionCallback)(uint8_t msgid, const uint8_t *payload,
|
|
size_t payload_len,
|
|
uint8_t *send_buffer,
|
|
size_t send_buffer_size);
|
|
typedef void (*RegisterTaskCallback)(uint8_t msgid, const uint8_t *payload,
|
|
size_t payload_len, uint8_t *send_buffer,
|
|
size_t send_buffer_size);
|
|
|
|
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
|