| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- #ifndef LUAT_LIBTCPIP_MQTT_H
- #define LUAT_LIBTCPIP_MQTT_H
- #include "luat_libtcpip.h"
- #include "libemqtt.h"
- #include "luat_rtos.h"
- #define MQTT_READ_TIMEOUT (-1000)
- #define MQTT_READ_TIME_SEC 15
- #define MQTT_READ_TIME_US 0
- #define MQTT_RECV_BUF_LEN_MAX 4096
- typedef int (*mqtt_publish_cb)(void* userdata, const char* topic, size_t topic_len, const char* payload, size_t payload_len);
- // 异步发送mqtt publish数据对应的结构体
- typedef struct app_mqtt_pub_data
- {
- uint32_t magic; // 与 mqtt_queue_msg_t 相同的结构
- int qos;
- int retain;
- //size_t topic_len;
- size_t data_len;
- char topic[192];
- char data[4];
- }app_mqtt_pub_data_t;
- typedef struct app_mqtt_ctx
- {
- char client_id[192];
- char password[192];
- char username[192];
- char host[192];
- int port;
- char pub_topic[192];
- char sub_topic[192];
- size_t keepalive;
- mqtt_broker_handle_t broker;
- luat_libtcpip_opts_t* tcp_opts;
- uint8_t packet_buffer[MQTT_RECV_BUF_LEN_MAX];
- int conack_ready; // 判断是否收到CONACK
- int connect_ready; // 判断连接是否已经就绪
- void* socket_ctx;
- uint64_t last_pkg_tick;
- uint16_t reconnet_delay;
- uint8_t keep_run;
- mqtt_publish_cb publish_cb;
- luat_rtos_queue_t msg_queue;
- }app_mqtt_ctx_t;
- typedef struct mqtt_queue_msg {
- uint32_t type;
- }mqtt_queue_msg_t;
- #endif
|