Debug Serial para programa resetar o buffer quando houver tamanhos errados na mensagem

Dependencies:   pulga-lorawan-drv PingPong-P2P-ClickButtonToWork-SX1272

Revision:
15:b27ab44dc2c8
Parent:
14:88373765b9a9
--- a/serial.cpp	Mon Apr 19 13:32:23 2021 +0000
+++ b/serial.cpp	Thu Apr 29 16:54:10 2021 +0000
@@ -30,10 +30,10 @@
             break;
         }
         circ_buffer[wr_index] = pc.getc();
-
+        //pc.printf("gettou o char %c\n", circ_buffer[wr_index]);
         buf_len++;
         wr_index++;
-
+        
         if (wr_index >= sizeof(circ_buffer)) {
             wr_index = 0;
         }
@@ -73,18 +73,26 @@
     j = rd_index;
     msg_incompleta = 1;
     int lenght = circ_buffer[j+2];
-    int new_index = rd_index + lenght;
-    pc.printf("index %d and new_index %d\n", rd_index, new_index);
+    //int new_index = rd_index + lenght;
+    //pc.printf("index %d and new_index %d\n", rd_index, new_index);
     //pc.printf("msg size: %d \n",lenght);
     while (i < buf_len)
     {
-       if (i==lenght+3 && circ_buffer[j] == '>')
+       if (i==lenght+3)
         {
-            pc.printf("msg size = %d \n", i);
-            pc.printf("char = %c \n", circ_buffer[j]);
-            ///encontrou final de cmd
-            msg_incompleta = 0;
-            break;
+            if(circ_buffer[j] == '>'){
+                //pc.printf("msg size = %d \n", i);
+                pc.printf("msgOK\n", circ_buffer[j]);
+                ///encontrou final de cmd
+                msg_incompleta = 0;
+                break;
+            }else{
+                rd_index=0;
+                wr_index=0;
+                buf_len=0;
+                pc.attach(&serial_post_to_queue, RawSerial::RxIrq);
+                return;
+            }
         }
         j++;
         i++;
@@ -130,10 +138,11 @@
             pc.printf("lenght 2 big!");
         }
 
-       if (rd_index==new_index+3 && circ_buffer[rd_index] == '>')
+       //if (rd_index==new_index+3 && circ_buffer[rd_index] == '>')
+       if (buf_len==1 && circ_buffer[rd_index] == '>')
         {
             ///encontrou final de cmd
-            pc.printf("index = %d \n", rd_index);
+            pc.printf("msglen = %d \n", msg_len);
             pc.printf("charchar = %c \n", circ_buffer[rd_index]);
             break;
         }
@@ -143,7 +152,7 @@
 
         if (rd_index >= sizeof(circ_buffer)) {
             rd_index = 0;
-            pc.printf("j>rd_index!");
+            //pc.printf("j>rd_index!");
             
         }
     }