this is using the mbed os version 5-13-1

Dependencies:   mbed-http

Branch:
PassingRegression
Revision:
122:62166886db5f
Parent:
121:ac4f59839e4f
Child:
123:a49e9ffbaca6
--- a/source/ATCmdManager.cpp	Sat Jun 01 15:29:03 2019 +0000
+++ b/source/ATCmdManager.cpp	Tue Jun 11 20:23:43 2019 +0000
@@ -283,7 +283,9 @@
             {
                 // AT Event state 
                 dbg_printf(LOG, "\n [ATCMD MAN] AT_SOCKET_KEEP_ALIVE OK RESPONSE RECEIVED!!\r\n");
-                sendAtEvent("\r\nCLOUD CONNECTION OK\r\n");
+#ifdef SEND_CLOUD_OK_MSG
+                sendAtConfirmation("\r\nCLOUD CONNECTION OK\r\n");
+#endif
                 at_resp = AT_RESP_NONE;
                 break;
             }
@@ -291,7 +293,9 @@
             {
                 // AT Event state 
                 dbg_printf(LOG, "\n [ATCMD MAN] AT_SOCKET_KEEP_ALIVE FAILED RESPONSE RECEIVED!!\r\n");
+#ifdef SEND_CLOUD_OK_MSG
                 sendAtEvent("\r\nCLOUD CONNECTION FAILED\r\n");
+#endif
                 at_resp = AT_RESP_NONE;
                 break;
             }
@@ -1390,7 +1394,7 @@
             break;
         case AT_EXT_DATA_MODE:
         {
-            outputEDMdata((const uint8_t *) buf, len, AT_MSG_ID, EVENT_MSG_TYPE, BLE_CHANNEL);
+            outputEDMdata((const uint8_t *) buf, len, AT_MSG_ID, EVENT_MSG_TYPE, NO_CHANNEL);
             break;
         }
         default:
@@ -1485,7 +1489,30 @@
     int msWait = (pLen + 5+20)/20;
     wait_ms(msWait);
 }
-
+void ATCmdManager::filterHttpResponse()
+{
+    char * respbuf = (char *) resp_data->buffer;
+    char * strPtr;
+    char * strPtr2;
+    dbg_printf(LOG, "Header before trim:\r\n%s\r\n", respbuf);
+    strPtr  = strstr(respbuf, "Date:"); // find start of the last required entry
+    if(strPtr == NULL) return;
+    strPtr2  = strstr(respbuf, "Connection:"); // find start of the last required entry
+    if(strPtr == NULL) return;
+    if(strPtr2 > strPtr)
+    {
+        strPtr = strPtr2;
+    }
+    strPtr2 = strstr(strPtr, "\r\n"); // find end of the last required entry
+    if(strPtr2 == NULL) return;
+    strPtr  = strstr(strPtr2, "\r\n\r\n"); // find start of body
+    if(strPtr == NULL) return;
+    int hdrLen = (strPtr - respbuf);
+    int bytes2trim = (strPtr - strPtr2);
+    memmove(strPtr2, strPtr, (resp_data->dataLen-(hdrLen-bytes2trim)));
+    resp_data->dataLen -= bytes2trim; // reduce the length by bytes to trim
+    dbg_printf(LOG, "Header after trim:\r\n%s\r\n", respbuf);
+}
 void ATCmdManager::return_response(bool download) {
     char * resp = (char *) resp_data->buffer;
     dbg_printf(LOG, "\n[ATCMD MAN] received response:\n");
@@ -1497,6 +1524,13 @@
     {
         printBufferInHex((uint8_t *)resp, resp_data->dataLen);
     }
+#ifdef TRIM_AWS_HEADER_ENTRIES
+    int offset = resp - strstr(resp,"HTTP/1.1");
+    if(offset >=0 && offset < 2) // must be at start of header
+    {
+        filterHttpResponse();
+    }
+#endif
     outputEDMdata((const uint8_t *)resp, resp_data->dataLen, DATA_MSG_ID, 
                   EVENT_MSG_TYPE, WIFI_CHANNEL);
     _wiFi2ATDatamPool->free(resp_data);