luat_libtcpip_mqtt.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef LUAT_LIBTCPIP_MQTT_H
  2. #define LUAT_LIBTCPIP_MQTT_H
  3. #include "luat_libtcpip.h"
  4. #include "libemqtt.h"
  5. #include "luat_rtos.h"
  6. #define MQTT_READ_TIMEOUT (-1000)
  7. #define MQTT_READ_TIME_SEC 15
  8. #define MQTT_READ_TIME_US 0
  9. #define MQTT_RECV_BUF_LEN_MAX 4096
  10. typedef int (*mqtt_publish_cb)(void* userdata, const char* topic, size_t topic_len, const char* payload, size_t payload_len);
  11. // 异步发送mqtt publish数据对应的结构体
  12. typedef struct app_mqtt_pub_data
  13. {
  14. uint32_t magic; // 与 mqtt_queue_msg_t 相同的结构
  15. int qos;
  16. int retain;
  17. //size_t topic_len;
  18. size_t data_len;
  19. char topic[192];
  20. char data[4];
  21. }app_mqtt_pub_data_t;
  22. typedef struct app_mqtt_ctx
  23. {
  24. char client_id[192];
  25. char password[192];
  26. char username[192];
  27. char host[192];
  28. int port;
  29. char pub_topic[192];
  30. char sub_topic[192];
  31. size_t keepalive;
  32. mqtt_broker_handle_t broker;
  33. luat_libtcpip_opts_t* tcp_opts;
  34. uint8_t packet_buffer[MQTT_RECV_BUF_LEN_MAX];
  35. int conack_ready; // 判断是否收到CONACK
  36. int connect_ready; // 判断连接是否已经就绪
  37. void* socket_ctx;
  38. uint64_t last_pkg_tick;
  39. uint16_t reconnet_delay;
  40. uint8_t keep_run;
  41. mqtt_publish_cb publish_cb;
  42. luat_rtos_queue_t msg_queue;
  43. }app_mqtt_ctx_t;
  44. typedef struct mqtt_queue_msg {
  45. uint32_t type;
  46. }mqtt_queue_msg_t;
  47. #endif