RyanMqtt 是一个严格遵循 MQTT 3.1.1 协议标准的客户端库,专为资源受限的嵌入式设备设计。本参考文档将详细描述 RyanMqtt 的内部实现,包括日志、链表管理、移植指南以及编译配置等内容。
RyanMqtt 的设计初衷是为嵌入式系统提供一个稳定可靠的 MQTT 客户端。以下是其主要特性:
日志模块位于 common/RyanMqttLog.c 和 common/RyanMqttLog.h 中。
#define RyanMqttLogLevel (RyanMqttLogLevelDebug)
RyanMqttLog_d("Debug 信息");
RyanMqttLog_e("Error 信息");
链表模块位于 common/RyanMqttList.c 和 common/RyanMqttList.h 中。
// 初始化链表
RyanMqttListInit(&list);
// 添加节点
RyanMqttListAdd(&node, &list);
RyanMqtt 提供多种构建工具支持,包括 Makefile、xmake 和 SCons:
定义目标文件和输出文件:
TARGET = app.o
$(TARGET): $(OBJS)
$(CC) $(OBJS) -o $@ -lm -lpthread
启用优化和警告:
set_optimize("aggressive")
set_warnings("everything")
启用运行时错误检测:
add_ldflags("-fsanitize=address", "-fsanitize=leak")
定义依赖关系:
group = DefineGroup('RyanMqtt', src, depend=['PKG_USING_RYANMQTT'], CPPPATH=path)
RyanMqtt 2.0 发布说明中提供了详细的迁移指南(详见 RyanMqtt2.0发布说明及迁移指南.md)。
extern RyanMqttError_e RyanMqttSubscribeMany(RyanMqttClient_t *client, int32_t count,
RyanMqttSubscribeData_t subscribeManyData[]);