luat_mqtt.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #ifndef LUAT_MQTT_H
  2. #define LUAT_MQTT_H
  3. #define MQTT_MSG_RELEASE 0
  4. #define MQTT_MSG_TIMER_PING 2
  5. #define MQTT_MSG_RECONNECT 3
  6. #define MQTT_RECV_BUF_LEN_MAX 4096
  7. typedef struct{
  8. mqtt_broker_handle_t broker;// mqtt broker
  9. network_ctrl_t *netc; // mqtt netc
  10. luat_ip_addr_t ip_addr; // mqtt ip
  11. char host[192]; // mqtt host
  12. uint16_t buffer_offset; // 用于标识mqtt_packet_buffer当前有多少数据
  13. uint8_t mqtt_packet_buffer[MQTT_RECV_BUF_LEN_MAX + 4];
  14. int mqtt_cb; // mqtt lua回调函数
  15. uint16_t remote_port; // 远程端口号
  16. uint32_t keepalive; // 心跳时长 单位s
  17. uint8_t adapter_index; // 适配器索引号, 似乎并没有什么用
  18. uint8_t mqtt_state; // mqtt状态
  19. uint8_t reconnect; // mqtt是否重连
  20. uint32_t reconnect_time; // mqtt重连时间 单位ms
  21. void* reconnect_timer; // mqtt重连定时器
  22. void* ping_timer; // mqtt_ping定时器
  23. int mqtt_ref; // 强制引用自身避免被GC
  24. }luat_mqtt_ctrl_t;
  25. typedef struct{
  26. uint16_t topic_len;
  27. uint16_t payload_len;
  28. uint8_t data[];
  29. }luat_mqtt_msg_t;
  30. typedef struct luat_mqtt_connopts
  31. {
  32. const char* host;
  33. uint16_t port;
  34. uint16_t is_tls;
  35. const char* server_cert;
  36. size_t server_cert_len;
  37. const char* client_cert;
  38. size_t client_cert_len;
  39. const char* client_key;
  40. size_t client_key_len;
  41. const char* client_password;
  42. size_t client_password_len;
  43. }luat_mqtt_connopts_t;
  44. int luat_mqtt_connect(luat_mqtt_ctrl_t *mqtt_ctrl);
  45. static int luat_mqtt_msg_cb(luat_mqtt_ctrl_t *mqtt_ctrl);
  46. // int l_mqtt_callback(lua_State *L, void* ptr);
  47. int l_luat_mqtt_msg_cb(luat_mqtt_ctrl_t * ctrl, int arg1, int arg2);
  48. int32_t luat_mqtt_callback(void *data, void *param);
  49. LUAT_RT_RET_TYPE luat_mqtt_timer_callback(LUAT_RT_CB_PARAM);
  50. // int luat_mqtt_read_packet(luat_mqtt_ctrl_t *mqtt_ctrl);
  51. int luat_mqtt_send_packet(void* socket_info, const void* buf, unsigned int count);
  52. void luat_mqtt_close_socket(luat_mqtt_ctrl_t *mqtt_ctrl);
  53. void luat_mqtt_release_socket(luat_mqtt_ctrl_t *mqtt_ctrl);
  54. int luat_mqtt_init(luat_mqtt_ctrl_t *mqtt_ctrl, int adapter_index);
  55. int luat_mqtt_set_connopts(luat_mqtt_ctrl_t *mqtt_ctrl, luat_mqtt_connopts_t *opts);
  56. int luat_mqtt_reconnect(luat_mqtt_ctrl_t *mqtt_ctrl);
  57. int luat_mqtt_ping(luat_mqtt_ctrl_t *mqtt_ctrl);
  58. #endif