

#ifndef MT_MQTT_H
#define MT_MQTT_H

#include <zephyr/types.h>
#include <net/mqtt.h>
/* clang-format on */

/**
 * @brief 定义 mqtt 事件参数.
 */
typedef struct mqtt_evt_s
{
	enum mqtt_evt_type type;
	uint8_t rec_data[CONFIG_MQTT_PAYLOAD_BUFFER_SIZE];
	uint8_t rec_len;
} mqtt_evt_t;

/**
 * @brief 定义接收 mqtt 事件函数.
 */
typedef void (*mqtt_evt_cb)(mqtt_evt_t * mqtt_evt);

/**
 * @brief 查询 mqtt 连接状态.
 */
bool get_mqtt_conn_status(void);

/**
 * @brief 连接 MQTT.
 */
int mt_mqtt_connect(void);

/**
 * @brief 断开连接 MQTT.
 */
int mt_mqtt_disconnect(void);

/**
 * @brief MQTT 发布消息.
 */
int mt_mqtt_publish(uint16_t qos, uint8_t *msg, size_t msg_len);

/**
 * @brief 初始化回调函数.
 */
int mt_mqtt_cb_init(uint8_t * imei , mqtt_evt_cb mqtt_cb);

/**
 * @brief 挂起 MQTT 线程.
 */
void suspend_thread(void);

#endif
