FRDM-K64F, Avnet M14A2A, Grove Shield, to create smart home system. In use with AT&Ts M2x & Flow.

Dependencies:   mbed FXOS8700CQ MODSERIAL

Files at this revision

API Documentation at this revision

Comitter:
stefanrousseau
Date:
Sat Jul 23 20:25:06 2016 +0000
Parent:
40:aec4d09fde23
Child:
48:93a4ab6ac177
Commit message:
Changed the JSON extract sequence so it is not called when there is no response

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Sat Jul 23 20:13:01 2016 +0000
+++ b/main.cpp	Sat Jul 23 20:25:06 2016 +0000
@@ -353,10 +353,10 @@
     char* endquote;
     beginquote = strchr(search_field, '{'); //start of JSON
     endquote = strchr(search_field, '}'); //end of JSON
-    if (beginquote != 0)
+    if (beginquote)
     {
         uint16_t ifoundlen;
-        if (endquote != 0)
+        if (endquote)
         {
             ifoundlen = (uint16_t) (endquote - beginquote) + 1;
             strncpy(found_string, beginquote, ifoundlen );
@@ -504,29 +504,29 @@
             read_sensors(); //read available external sensors from a PMOD and the on-board motion sensor
             char modem_string[512];
             GenerateModemString(&modem_string[0]);
-            printf(BLU "Sending to modem : %s" DEF "\n", modem_string); 
+            printf(BLU "\r\nSending to modem : %s" DEF "\r\n", modem_string); 
             sockwrite_mdm(modem_string);
-            sockread_mdm(&MySocketData, 1024, 20);
-            
-            // If any non-zero response from server, make it GREEN one-time
-            //  then the actual FLOW responses will set the color.
-            if ((!ledOnce) && (MySocketData.length() > 0))
+            if (sockread_mdm(&MySocketData, 1024, 20))
             {
-                ledOnce = 1;
-                SetLedColor(0x2);
-            }
-            
-            printf(BLU "Read back : %s" DEF "\n", &MySocketData[0]);
-            char myJsonResponse[512];
-            if (extract_JSON(&MySocketData[0], &myJsonResponse[0]))
-            {
-                printf(GRN "JSON : %s" DEF "\n", &myJsonResponse[0]);
-                parse_JSON(&myJsonResponse[0]);
+                // If any non-zero response from server, make it GREEN one-time
+                //  then the actual FLOW responses will set the color.
+                if (!ledOnce)
+                {
+                    ledOnce = 1;
+                    SetLedColor(0x2);
+                }
+                printf(YEL "Read back : %s" DEF "\r\n", &MySocketData[0]);
+                char myJsonResponse[512];
+                char * myJsonInput = (char *)MySocketData.c_str();
+                if (extract_JSON(&myJsonInput[0], &myJsonResponse[0]))
+                {
+                    printf(GRN "JSON : %s" DEF "\n", &myJsonResponse[0]);
+                    parse_JSON(&myJsonResponse[0]);
+                }
             }
             else
             {
-                printf(RED "JSON : %s" DEF "\n", &myJsonResponse[0]); //most likely an incomplete JSON string
-                parse_JSON(&myJsonResponse[0]); //This is risky, as the string may be corrupted
+                printf(RED "No response..." DEF "\r\n");
             }
         } //bTimerExpiredFlag
     } //forever loop