4G AT命令解析框架LwAtParser V2.0设计及实现(基于uCOS II)--中级篇 第九章 MQTT协议实现

9 MQTT 协议实现

9.1 数据结构

9.1.1 存放接收数据的数组

uint8_t gMqtt_RxBuf[MQTT_CHANNEL_NUM][MQTT_RXBUF_MAXLEN];

9.1.2 mqtt client 的连接状态数组

uint8_t Mqtt_State[MQTT_CHANNEL_NUM] = {OFF_LINE};

9.1.3 每个连接的邮箱

OS_EVENT *Mqtt_Mbox [MQTT_CHANNEL_NUM];

9.1.4 环形缓冲器

struct ringbuffer mqtt_rx_ringbuffer[MQTT_CHANNEL_NUM];

9.2 MQTT 协议API接口函数实现

|---------------------------|-------------------|
| 函数名称 | 函数作用 |
| mqtt_init() | mqtt 协议初始化 |
| mqtt_client_usr_cfg() | 配置mqtt客户端用户名和密码 |
| mqtt_client_open() | 建立与远程主机的mqtt客户端连接 |
| mqtt_client_close() | 关闭与远程主机的mqtt客户端连接 |
| mqtt_client_sub() | mqtt客户端订阅主题消息 |
| mqtt_client_pub() | mqtt客户端发布主题消息 |
| mqtt_client_read() | mqtt客户端接收数据 |
| mqtt_msg_post () | 将mqtt客户端数据发送到驱动层 |
| mqtt_driver_copy () | 从驱动层拷贝数据到mqtt客户端 |
| set_ mqtt client_state() | 设置mqtt 客户端连接状态 |
| clr
mqtt client_state() | 清零mqtt 客户端连接状态 |
| get
mqtt _client_state() | 获取mqtt 客户端连接状态 |

9.2.1 mqtt_init()

mqtt协议初始化。

9.2.2 mqtt_client_usr_cfg()

mqtt 客户端用户名和密码配置。

9.2.3 mqtt_client_open()

建立与远程主机的mqtt客户端连接。

9.2.4 mqtt_client_close()

关闭与远程主机的mqtt客户端连接。

9.2.5 mqtt_client_sub()

mqtt 客户端订阅主题消息。

9.2.6 mqtt_client_pub()

mqtt 客户端发布主题消息。

9.2.7 mqtt_client_read()

mqtt 客户端读取数据。

9.2.8 mqtt_msg_post ()

将mqtt客户端数据发送到驱动层。

9.2.9 mqtt_driver_copy ()

从驱动层拷贝数据到mqtt客户端。

9.3 MQTT 协议AT命令实现

9.3.1 4g_mqtt.h

9.3.2 4g_mqtt.c

9.3.3 4g_core.c 修改

9.3.3.1 netMsgProc ()函数
9.3.3.2 PTL_COM1_TxPROC() 函数
9.3.3.3 PTL_COM1_RxPROC()函数

9.4 添加MQTT Task 任务

完整工程代码:Exam6(添加MQTT协议实现)。

简单调试,可以实现MQTT协议。

相关推荐
xuxg20055 天前
4G AT命令解析框架LwAtParser V2.0设计及实现(基于uCOS II)--中级篇 第五章 AT命令解析框架设计
网络·4g tcp·4g mqtt·驱动层与协议层分离·协议模块化