Ryan-CW 3 жил өмнө
parent
commit
fa981ad3e6

+ 12 - 10
rtthread/platformNetwork.c → platform/rtthread/platformNetwork.c

@@ -17,9 +17,9 @@ RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platfo
     RyanMqttError_e result = RyanMqttSuccessError;
     struct addrinfo *addrList = NULL;
     struct addrinfo hints = {
-        .ai_family = AF_UNSPEC,     // 指定返回地址的地址族
-        .ai_socktype = SOCK_STREAM, // 指定返回地址的地址族
-        .ai_protocol = IPPROTO_IP}; // 指定socket的协议
+        .ai_family = AF_UNSPEC,
+        .ai_socktype = SOCK_STREAM,
+        .ai_protocol = IPPROTO_TCP};
 
     if (getaddrinfo(host, port, &hints, &addrList) != 0)
     {
@@ -27,9 +27,6 @@ RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platfo
         goto exit;
     }
 
-    if (NULL == addrList)
-        goto exit;
-
     platformNetwork->socket = socket(addrList->ai_family, addrList->ai_socktype, addrList->ai_protocol);
     if (platformNetwork->socket < 0)
     {
@@ -45,6 +42,7 @@ RyanMqttError_e platformNetworkConnect(void *userData, platformNetwork_t *platfo
     }
 
 exit:
+
     if (NULL != addrList)
         freeaddrinfo(addrList);
     return result;
@@ -89,11 +87,13 @@ RyanMqttError_e platformNetworkRecvAsync(void *userData, platformNetwork_t *plat
             tv.tv_usec = 100;
         }
 
-        setsockopt(platformNetwork->socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval)); // 设置接收超时
+        setsockopt(platformNetwork->socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval)); // 设置错做模式为非阻塞
 
         recvResult = recv(platformNetwork->socket, recvBuf, recvLen - offset, 0);
-        if (recvResult < 0)
+
+        if (recvResult < 0) // 小于零,表示错误,个别错误不代表socket错误
         {
+            // 下列3种表示没问题,但需要推出发送
             if ((errno == EAGAIN ||      // 套接字已标记为非阻塞,而接收操作被阻塞或者接收超时
                  errno == EWOULDBLOCK || // 发送时套接字发送缓冲区已满,或接收时套接字接收缓冲区为空
                  errno == EINTR))        // 操作被信号中断
@@ -151,11 +151,13 @@ RyanMqttError_e platformNetworkSendAsync(void *userData, platformNetwork_t *plat
             tv.tv_usec = 100;
         }
 
-        setsockopt(platformNetwork->socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(struct timeval)); // 设置发送超时
+        setsockopt(platformNetwork->socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(struct timeval)); // 设置错做模式为非阻塞
 
         sendResult = send(platformNetwork->socket, sendBuf, sendLen - offset, 0);
-        if (sendResult < 0)
+
+        if (sendResult < 0) // 小于零,表示错误,个别错误不代表socket错误
         {
+            // 下列3种表示没问题,但需要推出发送
             if ((errno == EAGAIN ||      // 套接字已标记为非阻塞,而接收操作被阻塞或者接收超时
                  errno == EWOULDBLOCK || // 发送时套接字发送缓冲区已满,或接收时套接字接收缓冲区为空
                  errno == EINTR))        // 操作被信号中断

+ 0 - 6
rtthread/platformNetwork.h → platform/rtthread/platformNetwork.h

@@ -17,7 +17,6 @@ extern "C"
 
 #ifdef RT_USING_SAL
 #include <sys/socket.h>
-#include <sys/ioctl.h>
 #include <sys/errno.h>
 #include <sys/time.h>
 #include "sal_netdb.h"
@@ -30,16 +29,11 @@ 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);

+ 6 - 0
rtthread/platformSystem.c → platform/rtthread/platformSystem.c

@@ -1,6 +1,12 @@
 
 #include "platformSystem.h"
 
+// 存放未初始化
+// #define ccmBss __attribute__((section(".ccmbss")))
+
+// ccmBss static struct rt_thread mqttThreadHandle;
+// ccmBss static char mqttThreadStack[512 * 4];
+
 void *platformMemoryMalloc(size_t size)
 {
     return rt_malloc(size);

+ 0 - 4
rtthread/platformSystem.h → platform/rtthread/platformSystem.h

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

+ 0 - 5
rtthread/platformTimer.c → platform/rtthread/platformTimer.c

@@ -2,11 +2,6 @@
 
 #include "platformTimer.h"
 
-/**
- * @brief 自系统启动以来的毫秒时间戳
- *
- * @return uint32_t
- */
 uint32_t platformUptimeMs(void)
 {
 #if (RT_TICK_PER_SECOND == 1000)

+ 0 - 5
rtthread/platformTimer.h → platform/rtthread/platformTimer.h

@@ -9,17 +9,12 @@ 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);