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

Dependencies:   mbed-http

Revision:
93:06e755a80187
Parent:
92:ec9550034276
Child:
95:290859010c8c
--- a/source/ATCmdManager.cpp	Sat Apr 13 14:17:29 2019 +0000
+++ b/source/ATCmdManager.cpp	Sun Apr 14 14:38:51 2019 +0000
@@ -173,6 +173,14 @@
                 _smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
+            case AT_COMMAND_FAILED:  
+                // AT_HTTP_RESP response state 
+                printf("\n [ATCMD MAN] WIFI COMMAND FAILED!!\n");
+                _smutex.lock();
+                _parser.send("\r\nNACK\r\n");
+                _smutex.unlock();
+                at_resp = AT_RESP_NONE;
+                break;
             default:
                 // UNKNOWN response state
                 _smutex.lock();
@@ -736,9 +744,11 @@
 { 
     int c;
     int sptr = 0;
+    int quoteCnt = 0;
     for(int i=0;i<maxBytes;i++){
         c = _parser.getc();
-        if(c==-1){
+        if(c== '"')quoteCnt++;
+        if(c==-1 || quoteCnt==2){
             buf[sptr] = NULL; // null terminate if string
             return i;
         }
@@ -870,8 +880,6 @@
     wifi_cmd_message_t *wifiCmd = _aT2WiFimPool->alloc();
     if(wifiCmd == NULL){
         printf("[ATCMD MAN] queued memory allocation failed\n");
-        print_memory_info();
-        print_heap_and_isr_stack_info();
         return false;
     }
 #else
@@ -905,6 +913,8 @@
 }
 
 bool  ATCmdManager::queueWiFiDataRequest(wifi_data_msg_t data_req){
+    //print_memory_info();
+    print_heap_and_isr_stack_info();
     wifi_data_msg_t *wifiData = _aT2WiFiDatamPool->alloc();
     wifiData->wifi_cmd        = data_req.wifi_cmd;
     wifiData->dataLen        = data_req.dataLen;
@@ -917,15 +927,29 @@
 
 bool  ATCmdManager::dequeueWiFidataResponse(){
     if(at_resp != AT_RESP_NONE) return false; // busy
+    //print_memory_info();
     osEvent evt = _wiFi2ATDataQueue->get(0);
     if(evt.status == osEventMessage){
         resp_data = (at_data_msg_t*)evt.value.p;
         setNextResponse(resp_data->at_resp);
         //_wiFi2ATDatamPool->free(resp_data);
+        print_heap_and_isr_stack_info();
     }
     return true;
 }
 
+
+void ATCmdManager::sendAtConfirmation(const char *buf)
+{
+    int len =  strlen(buf);
+    outputEDMdata((const uint8_t *) buf, len, AT_MSG_ID, CONFIRMATION_MSG_TYPE, NO_CHANNEL);
+}
+void ATCmdManager::sendAtEvent(const char *buf)
+{
+    int len =  strlen(buf);
+    outputEDMdata((const uint8_t *) buf, len, AT_MSG_ID, EVENT_MSG_TYPE, NO_CHANNEL);
+}
+
 void ATCmdManager::outputEDMdata(const uint8_t *buf, int pLen, 
                                  edm_msg_id_t identifier, edm_msg_type_t type,
                                  channel_id_t channel_id)
@@ -940,8 +964,9 @@
     // send EDM Identifier + Type
     _parser.putc(identifier>>8);
     _parser.putc(identifier%256 | type);
-    // send EDM Identifier + Type
-    _parser.putc(channel_id);
+    // send channel id if valid
+    if(channel_id != NO_CHANNEL)
+        _parser.putc(channel_id);
     // send the data
     _parser.write((const char *)buf, pLen);
     // send EDM Message stop byte
@@ -967,5 +992,6 @@
     _smutex.unlock();
     _wiFi2ATDatamPool->free(resp_data);
     
-    
+    //print_memory_info();
+    print_heap_and_isr_stack_info();   
 }