#ifndef MQTT_PROTOCOL_H #define MQTT_PROTOCOL_H #include #include /* * 小智MQTT消息类型 */ enum mqtt_protocol_message_type { MQTT_PROTOCOL_MSG_UNKNOWN = 0, MQTT_PROTOCOL_MSG_HELLO, MQTT_PROTOCOL_MSG_TTS, MQTT_PROTOCOL_MSG_STT, MQTT_PROTOCOL_MSG_LLM, MQTT_PROTOCOL_MSG_LISTEN, MQTT_PROTOCOL_MSG_GOODBYE }; /* * 小智MQTT消息状态 */ enum mqtt_protocol_message_state { MQTT_PROTOCOL_STATE_NONE = 0, MQTT_PROTOCOL_STATE_START, MQTT_PROTOCOL_STATE_SENTENCE_START, MQTT_PROTOCOL_STATE_STOP, MQTT_PROTOCOL_STATE_DETECT }; /* * 小智MQTT消息 */ struct mqtt_protocol_message { enum mqtt_protocol_message_type type; enum mqtt_protocol_message_state state; int has_code; int code; int has_version; int version; char transport[16]; char session_id[64]; char text[160]; }; /* * 消息回调 * * 返回0表示协议层已处理, 返回-1表示无法识别 */ int mqtt_protocol_handle_message ( const char *topic, const uint8_t *payload, uint32_t len ); /* * 发送hello, 申请会话 */ int mqtt_protocol_send_hello(void); /* * 发送监听开始 */ int mqtt_protocol_send_listen_start(void); /* * 发送监听停止 */ int mqtt_protocol_send_listen_stop(void); /* * 发送中止 */ int mqtt_protocol_send_abort(void); /* * 发送bye */ int mqtt_protocol_send_goodbye(void); /* * 获取当前会话ID */ const char *mqtt_protocol_session_id(void); /* * 设置协议消息回调 */ typedef void (*mqtt_protocol_callback_t) ( const struct mqtt_protocol_message *message ); void mqtt_protocol_set_callback(mqtt_protocol_callback_t callback); #endif