#ifndef HAS_TASK_MSG_H #define HAS_TASK_MSG_H /* 静态订阅表 */ // TODO:后续可支持动态增加模块订阅,感觉目前没必要 typedef enum { INVALID_ID = 0, GUI, SENSOR, ACM, WIFI, VOICE, MODULE_MAX } has_module_ID_e; /* 格式:模块 订阅数量 订阅模块 */ #define SUBSCIBE_INFO \ { \ {GUI, 4, {ACM, SENSOR, WIFI, VOICE}}, \ {SENSOR, 1, {GUI}}, \ {ACM, 1, {WIFI}}, \ {WIFI, 0}, \ {VOICE, 3, {ACM, VOICE, GUI}}, \ } /* 消息处理回调 */ typedef int (*has_msg_handle_cb)(unsigned char module_id, const unsigned char *buf, unsigned int len); /* 基础功能 */ int has_msg_init(void); int has_msg_publish(has_module_ID_e module_id, void *buffer, unsigned int length); int has_msg_handle(has_module_ID_e module_id, has_msg_handle_cb cb); unsigned int has_msg_is_message_empty(has_module_ID_e module_id); unsigned int has_msg_get_message_number(has_module_ID_e module_id); int has_msg_delete_all_message(has_module_ID_e module_id); /* 扩展功能 */ int has_msg_handle_by_module(has_module_ID_e module_id, has_msg_handle_cb cb, has_module_ID_e pub_module_id); int has_msg_handle_latest(has_module_ID_e module_id, has_msg_handle_cb cb); unsigned int has_msg_receive(has_module_ID_e module_id, unsigned char *pub_module_id, unsigned char *buf_out); unsigned int has_msg_receive_latest(has_module_ID_e module_id, unsigned char *pub_module_id, unsigned char *buf_out); int has_msg_printf_subscribe(has_module_ID_e module_id); // int has_msg_subscribe(has_module_ID_e module_id, has_module_ID_e sub_id); // int has_msg_unsubscribe(has_module_ID_e module_id, has_module_ID_e sub_id); #endif