d

Dependencies:   MQTTPacket FP

Files at this revision

API Documentation at this revision

Comitter:
JavierGC
Date:
Sun Mar 20 19:25:46 2022 +0000
Parent:
59:9cff7b6bbd01
Commit message:
Rev1.0

Changed in this revision

MQTTClient.h Show annotated file Show diff for this revision Revisions of this file
MQTTSocket.h Show annotated file Show diff for this revision Revisions of this file
--- a/MQTTClient.h	Thu Nov 02 12:12:41 2017 +0000
+++ b/MQTTClient.h	Sun Mar 20 19:25:46 2022 +0000
@@ -108,7 +108,7 @@
  * @param Network a network class which supports send, receive
  * @param Timer a timer class with the methods:
  */
-template<class Network, class Timer, int MAX_MQTT_PACKET_SIZE = 100, int MAX_MESSAGE_HANDLERS = 5>
+template<class Network, class Timer, int MAX_MQTT_PACKET_SIZE = 100, int MAX_MESSAGE_HANDLERS = 11>
 class Client
 {
 
@@ -428,10 +428,14 @@
             goto exit;
         }
         rc = ipstack.read(&c, 1, timeout);
+        //printf("decode: %d\r\n",rc);
         if (rc != 1)
             goto exit;
         *value += (c & 127) * multiplier;
         multiplier *= 128;
+        //printf("c: %d\r\n",c);
+        //printf("value: %d\r\n",value);
+        //printf("multiplier: %d\r\n",multiplier);
     } while ((c & 128) != 0);
 exit:
     return len;
@@ -454,6 +458,8 @@
 
     /* 1. read the header byte.  This has the packet type in it */
     rc = ipstack.read(readbuf, 1, timer.left_ms());
+    //printf("read: %d\r\n",rc);
+    //printf("%c\r\n",readbuf[0]);
     if (rc != 1)
         goto exit;
 
@@ -564,7 +570,14 @@
     timer.countdown_ms(timeout_ms);
     while (!timer.expired())
     {
-        if (cycle(timer) < 0)
+        //printf("while...\r\n");
+        int ans=cycle(timer);
+        if (ans == -3004)
+        {
+            rc = -3004;
+            break;
+        }
+        else if (ans < 0)
         {
             rc = FAILURE;
             break;
@@ -582,15 +595,22 @@
     int len = 0,
         rc = SUCCESS;
 
+    
     int packet_type = readPacket(timer);    // read the socket, see what work is due
+    //printf("packet_type: %d\r\n",packet_type);
 
     switch (packet_type)
     {
         default:
             // no more data to read, unrecoverable. Or read packet fails due to unexpected network error
             rc = packet_type;
+            //printf("default\r\n");
             goto exit;
         case 0: // timed out reading packet
+            //printf("timeout\r\n");
+            break;
+        case -3001: // timed out reading packet
+            //printf("timeout\r\n");
             break;
         case CONNACK:
         case PUBACK:
--- a/MQTTSocket.h	Thu Nov 02 12:12:41 2017 +0000
+++ b/MQTTSocket.h	Sun Mar 20 19:25:46 2022 +0000
@@ -22,7 +22,8 @@
         open = true;
         mysock.set_blocking(true);
         mysock.set_timeout((unsigned int)timeout);  
-        rc = mysock.connect(hostname, port);
+        SocketAddress socketAddr(hostname,port);
+        rc = mysock.connect(socketAddr);
         mysock.set_blocking(false);  // blocking timeouts seem not to work
         return rc;
     }
@@ -39,7 +40,7 @@
             if (first)
                 first = false;
             else
-                wait_ms(timeout < 100 ? timeout : 100);
+                wait_us((timeout*1000) < 100 ? (timeout*1000) : 100);
             int rc;
             if (read)
                 rc = mysock.recv((char*)buffer, len);
@@ -68,6 +69,16 @@
     {
         return common(buffer, len, timeout, true);
     }
+    
+    
+    /*int read(unsigned char* buffer, int len, int timeout)
+    {
+        mysock.set_timeout(timeout);
+        int rc = mysock.recv((char*)buffer, len);
+        mysock.set_timeout(0);
+        return rc;
+    }
+*/
 
     int write(unsigned char* buffer, int len, int timeout)
     {