Ryan-CW 3 rokov pred
rodič
commit
2b3b62d123

+ 2 - 2
README.md

@@ -11,7 +11,7 @@ RyanMqtt 实现了 MQTT3.1.1 协议的客户端。此库针对资源受限的嵌
 - 丰富的、可配置的事件回调函数和多功能参数配置,满足实际项目的绝大部分需求
 - 支持多客户端
 - 完整的 MQTT3.1.1 通配符支持
-- 可选择的内部心跳保活、掉线重连、遗嘱消息等
+- 可选择的内部心跳保活、掉线重连、遗嘱消息、保存会话信息
 - 跨平台,只需实现少量的平台接口即可
 - 更高的并发能力,无等待的连续 200 条 QOS2 消息稳定发送和接收(也取决于硬件收发能力)
 - 没有内置 TLS 支持,用户可以在接口层实现 TLS(作者对 TLS 并不熟悉、项目中也暂未使用到)
@@ -89,5 +89,5 @@ RT-Thread 内置 ulog 组件,方便的使用 ulog api 来管理 RyanMqtt 打
 
 ### 6、声明
 
-- 请勿将此库QOS消息等级用于支付等可能造成重大损失的场景,如需使用请自行深度评估后使用,作者不对使用此库造成的任何经济损失负责。(尽管此库QOS2消息等级经过很多测试,但是异步组件由于诸多因素例如波动非常大的网络甚至无法建立稳定的tcp连接、mqtt服务端的策略配置等,无法做到绝对的实时性,需要用户手动做到数据的最终一致性。)
+- 请勿将此库QOS消息等级用于支付等可能造成重大损失的场景,如需使用请自行深度评估后使用,作者不对使用此库造成的任何损失负责。(尽管此库QOS2消息等级经过很多测试,但是异步组件由于诸多因素例如波动非常大的网络甚至无法建立稳定的tcp连接、mqtt服务端的策略配置等,无法做到绝对的实时性,需要用户手动做到数据的最终一致性。)
 

+ 20 - 14
common/RyanList.h

@@ -7,12 +7,6 @@ extern "C"
 {
 #endif
 
-    typedef struct RyanListNode
-    {
-        struct RyanListNode *next;
-        struct RyanListNode *prev;
-    } RyanList_t;
-
 #define RyanOffsetOf(type, member) ((size_t) & (((type *)0)->member))
 
 #define RyanContainerOf(ptr, type, member) \
@@ -50,17 +44,29 @@ extern "C"
          (curr) != (list);                             \
          (curr) = (next), (next) = (curr)->prev)
 
-    void RyanMqttListInit(RyanList_t *list);
+    // 定义枚举类型
+
+    // 定义结构体类型
+    typedef struct RyanListNode
+    {
+        struct RyanListNode *next;
+        struct RyanListNode *prev;
+    } RyanList_t;
+
+    /* extern variables-----------------------------------------------------------*/
+
+    extern void RyanMqttListInit(RyanList_t *list);
+
+    extern void RyanListAdd(RyanList_t *node, RyanList_t *list);
+    extern void RyanListAddTail(RyanList_t *node, RyanList_t *list);
 
-    void RyanListAdd(RyanList_t *node, RyanList_t *list);
-    void RyanListAddTail(RyanList_t *node, RyanList_t *list);
+    extern void RyanListDel(RyanList_t *entry);
+    extern void RyanListDelInit(RyanList_t *entry);
 
-    void RyanListDel(RyanList_t *entry);
-    void RyanListDelInit(RyanList_t *entry);
+    extern void RyanListMove(RyanList_t *node, RyanList_t *list);
+    extern void RyanListMoveTail(RyanList_t *node, RyanList_t *list);
 
-    void RyanListMove(RyanList_t *node, RyanList_t *list);
-    void RyanListMoveTail(RyanList_t *node, RyanList_t *list);
-    int RyanListIsEmpty(RyanList_t *list);
+    extern int RyanListIsEmpty(RyanList_t *list);
 
 #ifdef __cplusplus
 }

+ 6 - 0
common/RyanMqttLog.h

@@ -40,6 +40,12 @@ extern "C"
     }
 #endif
 
+    // 定义枚举类型
+
+    // 定义结构体类型
+
+    /* extern variables-----------------------------------------------------------*/
+
 #ifdef __cplusplus
 }
 #endif

+ 7 - 2
mqttclient/RyanMqttClient.h

@@ -10,9 +10,9 @@ extern "C"
 
 #include "RyanMqttPublic.h"
 
-    // 接收到订阅消息回调函数类型,eventData用户不要进行修改否则mqtt客户端可能崩溃
-    typedef void (*RyanMqttEventHandle)(void *client, RyanMqttEventId_e event, const void const *eventData);
+    // 定义枚举类型
 
+    // 定义结构体类型
     typedef struct
     {
         uint8_t retained;    // retained 标志位
@@ -101,6 +101,11 @@ extern "C"
         lwtOptions_t *lwtOptions;          // 遗嘱相关配置
     } RyanMqttClient_t;
 
+    /* extern variables-----------------------------------------------------------*/
+
+    // 接收到订阅消息回调函数类型,eventData用户不要进行修改否则mqtt客户端可能崩溃
+    typedef void (*RyanMqttEventHandle)(void *client, RyanMqttEventId_e event, const void const *eventData);
+
     extern RyanMqttError_e RyanMqttInit(RyanMqttClient_t **pClient);
     extern RyanMqttError_e RyanMqttDestroy(RyanMqttClient_t *client);
     extern RyanMqttError_e RyanMqttStart(RyanMqttClient_t *client);

+ 5 - 0
mqttclient/RyanMqttPublic.h

@@ -28,6 +28,7 @@ extern "C"
         return ErrorCode;                                               \
     }
 
+    // 定义枚举类型
     typedef enum
     {
         RyanBit31 = 0x80000000,
@@ -152,6 +153,10 @@ extern "C"
         RyanMqttConnectTimeout              // 超时断开
     } RyanMqttConnectStatus_e;
 
+    // 定义结构体类型
+
+    /* extern variables-----------------------------------------------------------*/
+
 #include "MQTTPacket.h"
 #include "RyanMqttLog.h"
 #include "platformNetwork.h"

+ 6 - 0
mqttclient/RyanMqttThread.h

@@ -9,6 +9,12 @@ extern "C"
 {
 #endif
 
+    // 定义枚举类型
+
+    // 定义结构体类型
+
+    /* extern variables-----------------------------------------------------------*/
+
     extern void RyanMqttThread(void *argument);
     extern void RyanMqttEventMachine(RyanMqttClient_t *client, RyanMqttEventId_e eventId, void *eventData);
 

+ 7 - 0
mqttclient/RyanMqttUtile.h

@@ -8,6 +8,13 @@ extern "C"
 #endif
 
 #include "RyanMqttClient.h"
+
+    // 定义枚举类型
+
+    // 定义结构体类型
+
+    /* extern variables-----------------------------------------------------------*/
+
     extern void RyanMqttSetClientState(RyanMqttClient_t *client, RyanMqttState_e state);
     extern RyanMqttState_e RyanMqttGetClientState(RyanMqttClient_t *client);
     extern RyanMqttError_e RyanMqttIsConnected(RyanMqttClient_t *client);

+ 1 - 1
platform/rtthread/platformNetwork.c

@@ -23,7 +23,7 @@ RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platfo
 
     if (getaddrinfo(host, port, &hints, &addrList) != 0)
     {
-        result = RyanMqttSuccessError;
+        result = RyanSocketFailedError;
         goto exit;
     }
 

+ 5 - 0
platform/rtthread/platformNetwork.h

@@ -30,11 +30,16 @@ extern "C"
 #include "lwip/netdb.h"
 #endif
 
+    // 定义枚举类型
+
+    // 定义结构体类型
     typedef struct
     {
         int socket;
     } platformNetwork_t;
 
+    /* extern variables-----------------------------------------------------------*/
+
     extern RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platformNetwork, const char *host, const char *port);
     extern RyanMqttError_e platformNetworkRecvAsync(void *userData, platformNetwork_t *platformNetwork, char *recvBuf, int recvLen, int timeout);
     extern RyanMqttError_e platformNetworkSendAsync(void *userData, platformNetwork_t *platformNetwork, char *sendBuf, int sendLen, int timeout);

+ 4 - 0
platform/rtthread/platformSystem.h

@@ -19,6 +19,9 @@ extern "C"
 #define RyanMqttAssert(EX) assert(EX)
 #endif
 
+    // 定义枚举类型
+
+    // 定义结构体类型
     typedef struct
     {
         rt_thread_t thread;
@@ -29,6 +32,7 @@ extern "C"
         rt_mutex_t mutex;
     } platformMutex_t;
 
+    /* extern variables-----------------------------------------------------------*/
     extern void *platformMemoryMalloc(size_t size);
     extern void platformMemoryFree(void *ptr);
 

+ 5 - 0
platform/rtthread/platformTimer.h

@@ -9,12 +9,17 @@ extern "C"
 #include <rtthread.h>
 #include <stdint.h>
 
+    // 定义枚举类型
+
+    // 定义结构体类型
     typedef struct
     {
         uint32_t time;
         uint32_t timeOut;
     } platformTimer_t;
 
+    /* extern variables-----------------------------------------------------------*/
+
     extern uint32_t platformUptimeMs(void);
     extern void platformTimerInit(platformTimer_t *platformTimer);
     extern void platformTimerCutdown(platformTimer_t *platformTimer, uint32_t timeout);