Răsfoiți Sursa

Merge pull request #19 from flyucc/master

fix compilation warning
guo 3 ani în urmă
părinte
comite
52b78a7c22
5 a modificat fișierele cu 163 adăugiri și 140 ștergeri
  1. 10 131
      inc/umqtt_internal.h
  2. 142 0
      src/pkgs/umqtt_internal.c
  3. 2 2
      src/pkgs/umqtt_pkgs_decode.c
  4. 2 0
      src/trans/umqtt_transport.c
  5. 7 7
      src/umqtt.c

+ 10 - 131
inc/umqtt_internal.h

@@ -241,137 +241,16 @@ typedef struct umqtt_pkgs_connect MQTTPacket_connectData;
 
 #define MQTTStrlen(c)               ((c == NULL) ? 0 : strlen(c))
 
-static void umqtt_writeChar(unsigned char** pptr, char c)
-{
-    **pptr = c;
-    (*pptr)++;
-}
-
-static char umqtt_readChar(unsigned char** pptr)
-{
-    char c = **pptr;
-    (*pptr)++;
-    return c;
-}
-
-static void umqtt_writeInt(unsigned char** pptr, int anInt)
-{
-    **pptr = (unsigned char)(anInt / 256);
-    (*pptr)++;
-    **pptr = (unsigned char)(anInt % 256);
-    (*pptr)++;
-}
-
-static int umqtt_readInt(unsigned char** pptr)
-{
-    unsigned char* ptr = *pptr;
-    int len = 256*(*ptr) + (*(ptr+1));
-    *pptr += 2;
-    return len;
-}
-
-static void umqtt_writeCString(unsigned char** pptr, const char* string)
-{
-    int len = 0;
-    if (string)
-    {
-        len = strlen(string);
-        umqtt_writeInt(pptr, len);
-        memcpy(*pptr, string, len);
-        *pptr += len;
-    }
-}
-
-static void umqtt_writeMQTTString(unsigned char** pptr, const char* string)
-{
-    int len = 0;
-    if (string)
-    {
-        len = strlen(string);
-        umqtt_writeInt(pptr, len);
-        memcpy(*pptr, string, len);
-        *pptr += len;
-    }
-    else
-    {
-        umqtt_writeInt(pptr, 0);
-    }
-}
-
-static int umqtt_readlenstring(int *str_len, char **p_string, unsigned char **pptr, unsigned char *enddata)
-{
-    int rc = 0;
-
-    if (enddata - (*pptr) > 1)
-    {
-        *str_len = umqtt_readInt(pptr);
-        if (&(*pptr)[*str_len] <= enddata)
-        {
-            *p_string = (char *)*pptr;
-            *pptr += *str_len;
-            rc = 1;
-        }
-    }
-    return rc;
-}
-
-static int umqtt_pkgs_encode(unsigned char* buf, int length)
-{
-    int rc = 0;
-    do {
-        char d = length % 128;
-        length /= 128;
-        /* if there are more digits to encode, set the top bit of this digit */
-        if (length > 0)
-            d |= 0x80;
-        buf[rc++] = d;
-    } while (length > 0);
-    return rc;
-}
-
-static int umqtt_pkgs_decode(int (*getcharfn)(unsigned char*, int), int* value)
-{
-    unsigned char c;
-    int multiplier = 1;
-    int len = 0;
-#define MAX_NO_OF_REMAINING_LENGTH_BYTES 4
-
-    *value = 0;
-    do
-    {
-        int rc = UMQTT_READ_ERROR;
-
-        if (++len > MAX_NO_OF_REMAINING_LENGTH_BYTES)
-        {
-            rc = UMQTT_READ_ERROR;  /* bad data */
-            goto exit;
-        }
-        rc = (*getcharfn)(&c, 1);
-        if (rc != 1)
-            goto exit;
-        *value += (c & 127) * multiplier;
-        multiplier *= 128;
-    } while ((c & 128) != 0);
-exit:
-    return len;
-}
-
-static int umqtt_pkgs_len(int rem_len)
-{
-    rem_len += 1; /* header byte */
-
-    /* now remaining_length field */
-    if (rem_len < 128)
-        rem_len += 1;
-    else if (rem_len < 16384)
-        rem_len += 2;
-    else if (rem_len < 2097151)
-        rem_len += 3;
-    else
-        rem_len += 4;
-
-    return rem_len;
-}
+void umqtt_writeChar(unsigned char** pptr, char c);
+char umqtt_readChar(unsigned char** pptr);
+void umqtt_writeInt(unsigned char** pptr, int anInt);
+int umqtt_readInt(unsigned char** pptr);
+void umqtt_writeCString(unsigned char** pptr, const char* string);
+void umqtt_writeMQTTString(unsigned char** pptr, const char* string);
+int umqtt_readlenstring(int *str_len, char **p_string, unsigned char **pptr, unsigned char *enddata);
+int umqtt_pkgs_encode(unsigned char* buf, int length);
+int umqtt_pkgs_decode(int (*getcharfn)(unsigned char*, int), int* value);
+int umqtt_pkgs_len(int rem_len);
 
 #ifdef __cplusplus
 }

+ 142 - 0
src/pkgs/umqtt_internal.c

@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2022-05-24     Administrator       the first version
+ */
+#include "umqtt_internal.h"
+
+void umqtt_writeChar(unsigned char** pptr, char c)
+{
+    **pptr = c;
+    (*pptr)++;
+}
+
+char umqtt_readChar(unsigned char** pptr)
+{
+    char c = **pptr;
+    (*pptr)++;
+    return c;
+}
+
+void umqtt_writeInt(unsigned char** pptr, int anInt)
+{
+    **pptr = (unsigned char)(anInt / 256);
+    (*pptr)++;
+    **pptr = (unsigned char)(anInt % 256);
+    (*pptr)++;
+}
+
+int umqtt_readInt(unsigned char** pptr)
+{
+    unsigned char* ptr = *pptr;
+    int len = 256*(*ptr) + (*(ptr+1));
+    *pptr += 2;
+    return len;
+}
+
+void umqtt_writeCString(unsigned char** pptr, const char* string)
+{
+    int len = 0;
+    if (string)
+    {
+        len = strlen(string);
+        umqtt_writeInt(pptr, len);
+        memcpy(*pptr, string, len);
+        *pptr += len;
+    }
+}
+
+void umqtt_writeMQTTString(unsigned char** pptr, const char* string)
+{
+    int len = 0;
+    if (string)
+    {
+        len = strlen(string);
+        umqtt_writeInt(pptr, len);
+        memcpy(*pptr, string, len);
+        *pptr += len;
+    }
+    else
+    {
+        umqtt_writeInt(pptr, 0);
+    }
+}
+
+int umqtt_readlenstring(int *str_len, char **p_string, unsigned char **pptr, unsigned char *enddata)
+{
+    int rc = 0;
+
+    if (enddata - (*pptr) > 1)
+    {
+        *str_len = umqtt_readInt(pptr);
+        if (&(*pptr)[*str_len] <= enddata)
+        {
+            *p_string = (char *)*pptr;
+            *pptr += *str_len;
+            rc = 1;
+        }
+    }
+    return rc;
+}
+
+int umqtt_pkgs_encode(unsigned char* buf, int length)
+{
+    int rc = 0;
+    do {
+        char d = length % 128;
+        length /= 128;
+        /* if there are more digits to encode, set the top bit of this digit */
+        if (length > 0)
+            d |= 0x80;
+        buf[rc++] = d;
+    } while (length > 0);
+    return rc;
+}
+
+int umqtt_pkgs_decode(int (*getcharfn)(unsigned char*, int), int* value)
+{
+    unsigned char c;
+    int multiplier = 1;
+    int len = 0;
+#define MAX_NO_OF_REMAINING_LENGTH_BYTES 4
+
+    *value = 0;
+    do
+    {
+        int rc = UMQTT_READ_ERROR;
+
+        if (++len > MAX_NO_OF_REMAINING_LENGTH_BYTES)
+        {
+            rc = UMQTT_READ_ERROR;  /* bad data */
+            goto exit;
+        }
+        rc = (*getcharfn)(&c, 1);
+        if (rc != 1)
+            goto exit;
+        *value += (c & 127) * multiplier;
+        multiplier *= 128;
+    } while ((c & 128) != 0);
+exit:
+    return len;
+}
+
+int umqtt_pkgs_len(int rem_len)
+{
+    rem_len += 1; /* header byte */
+
+    /* now remaining_length field */
+    if (rem_len < 128)
+        rem_len += 1;
+    else if (rem_len < 16384)
+        rem_len += 2;
+    else if (rem_len < 2097151)
+        rem_len += 3;
+    else
+        rem_len += 4;
+
+    return rem_len;
+}

+ 2 - 2
src/pkgs/umqtt_pkgs_decode.c

@@ -55,7 +55,7 @@ static int MQTTDeserialize_publish(struct umqtt_msg *pub_msg, rt_uint8_t *buf, i
     curdata += (rc = umqtt_pkgs_decodeBuf(curdata, &mylen));
     enddata = curdata + mylen;
 
-    if (!umqtt_readlenstring((int *)&(pub_msg->msg.publish.topic_name_len), &(pub_msg->msg.publish.topic_name), &curdata, enddata)
+    if (!umqtt_readlenstring((int *)&(pub_msg->msg.publish.topic_name_len), (char **)(&(pub_msg->msg.publish.topic_name)), &curdata, enddata)
      || (enddata - curdata < 0))
     {
         LOG_E(" decode publish, topic name error!");
@@ -67,7 +67,7 @@ static int MQTTDeserialize_publish(struct umqtt_msg *pub_msg, rt_uint8_t *buf, i
         pub_msg->msg.publish.packet_id = umqtt_readInt(&curdata);
 
     pub_msg->msg.publish.payload_len = enddata - curdata;
-    pub_msg->msg.publish.payload = curdata;
+    pub_msg->msg.publish.payload = (const char *)curdata;
 exit:
     return rc;
 }

+ 2 - 0
src/trans/umqtt_transport.c

@@ -16,6 +16,8 @@
 
 #include <rtthread.h>
 #include <sys/socket.h>
+#include <sys/ioctl.h>
+#include <sys/errno.h>
 #include <netdb.h>
 #include <sal_tls.h>
 

+ 7 - 7
src/umqtt.c

@@ -12,7 +12,7 @@
 
 #include <rtthread.h>
 #include <rtdef.h>
-
+#include <sys/errno.h>
 #include "umqtt_cfg.h"
 #include "umqtt_internal.h"
 #include "umqtt.h"
@@ -183,7 +183,7 @@ static int add_one_qos2_msg(struct umqtt_client *client, struct umqtt_pkgs_publi
         rt_list_insert_after(&client->qos2_msg_list, &msg->next_list);
     }
 
-_exit:
+//_exit:
     if (_ret == UMQTT_MEM_FULL)
     {
         if (msg)
@@ -382,7 +382,7 @@ static int umqtt_connect(struct umqtt_client *client, int block)
 {
     int _ret = 0, _length = 0, _cnt = 0;
     struct umqtt_msg encode_msg = { 0 };
-    struct umqtt_msg_ack msg_ack = { 0 };
+    //struct umqtt_msg_ack msg_ack = { 0 };
     RT_ASSERT(client);
 
 _reconnect:
@@ -638,7 +638,7 @@ exit:
 
 static int umqtt_handle_readpacket(struct umqtt_client *client)
 {
-    int _ret = 0, _onedata = 0, _cnt = 0, _loop_cnt = 0, _remain_len = 0;
+    int _ret = 0, _onedata = 0, _cnt = 0, _loop_cnt = 0;// _remain_len = 0;
     int _temp_ret = 0;
     int _pkt_len = 0;
     int _multiplier = 1;
@@ -1222,7 +1222,7 @@ umqtt_client_t umqtt_create(const struct umqtt_info *info)
             _length = strlen(mqtt_client->mqtt_info.lwt_topic) + 1;
             p_subtop->topicfilter = (char *)rt_calloc(1, sizeof(char) * _length);
             rt_strncpy(p_subtop->topicfilter, mqtt_client->mqtt_info.lwt_topic, _length);
-            p_subtop->callback = mqtt_client->mqtt_info.lwt_cb;
+            p_subtop->callback = (void (*)(void *, void *))(mqtt_client->mqtt_info.lwt_cb);
             rt_list_insert_after(&mqtt_client->sub_recv_list, &p_subtop->next_list);
         }
     }
@@ -1732,7 +1732,7 @@ int umqtt_subscribe(struct umqtt_client *client, const char *topic, enum umqtt_q
                 p_subtop->qos = qos;
                 if (callback)
                 {
-                    p_subtop->callback = callback;
+                    p_subtop->callback = (void (*)(void *, void *))callback;
                 }
                 rt_list_insert_after(&client->sub_recv_list, &p_subtop->next_list);
                 set_uplink_recon_tick(client, UPLINK_NEXT_TICK);
@@ -1931,7 +1931,7 @@ int umqtt_control(struct umqtt_client *client, enum umqtt_cmd cmd, void *params)
     struct subtop_recv_handler *p_subtop = RT_NULL;
     rt_list_t *node = RT_NULL;
     char *topic = RT_NULL;
-    int _ret = 0;
+    //int _ret = 0;
     RT_ASSERT(client);
     switch(cmd)
     {