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

Dependencies:   mbed-http

Files at this revision

API Documentation at this revision

Comitter:
ocomeni
Date:
Sat May 11 11:55:29 2019 +0000
Branch:
PassingRegression
Parent:
111:3ab1d9644835
Child:
113:888e262ff0a9
Commit message:
first pass code cleanup

Changed in this revision

source/ATCmdManager.cpp Show annotated file Show diff for this revision Revisions of this file
source/WiFiManager.cpp Show annotated file Show diff for this revision Revisions of this file
source/main-http-ipv6.cpp Show diff for this revision Revisions of this file
source/main-http-socket-reuse.cpp Show diff for this revision Revisions of this file
source/main-http.cpp Show diff for this revision Revisions of this file
source/main-https-chunked-request.cpp Show diff for this revision Revisions of this file
source/main-https-socket-reuse.cpp Show diff for this revision Revisions of this file
source/main-https.cpp Show annotated file Show diff for this revision Revisions of this file
source/main.cpp Show diff for this revision Revisions of this file
--- a/source/ATCmdManager.cpp	Fri May 10 13:45:50 2019 +0000
+++ b/source/ATCmdManager.cpp	Sat May 11 11:55:29 2019 +0000
@@ -117,9 +117,6 @@
             case AT_SCAN_RESP:
                 // AT_SCAN_RESP response state
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI SCAN RESPONSE RECEIVED!!\r\n");
-                //_smutex.lock();
-                //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
                 at_resp = AT_RESP_NONE;
@@ -135,7 +132,6 @@
             {
                 // AT_CONNECT_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI CONNECT RESPONSE RECEIVED!!\r\n");
-                //_smutex.lock();
                 sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
@@ -143,33 +139,24 @@
                 sprintf(urc, "\r\n%s:%d\r\n", NETWORK_UP_URC, WIFI_INTERFACE_ID);
                 sendAtEvent(urc);
                 delete urc;
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             }
             case AT_DISCONNECT_RESP:  
                 // AT_DISCONNECT_RESP response state 
-                //////_smutex.lock();
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI DISCONNECT RESPONSE RECEIVED!!\r\n");
-                //_smutex.lock();
-                //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_CONFIG_RESP:  
                 // AT_CONFIG_RESP response state 
-                //////_smutex.lock();
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI CONFIG RESPONSE RECEIVED!!\r\n");
-                //_smutex.lock();
                 sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_NETWORK_STATUS_RESP:  
                 // AT_CONFIG_RESP response state 
-                //////_smutex.lock();
                 dbg_printf(LOG, "\n [ATCMD MAN] NETWORK STATUS RESPONSE RECEIVED!!\r\n");
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
@@ -177,7 +164,6 @@
                 break;
             case AT_WIFI_STATUS_RESP:  
                 // AT_CONFIG_RESP response state 
-                //////_smutex.lock();
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI RESPONSE RECEIVED!!\r\n");
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
@@ -186,47 +172,32 @@
             case AT_INTERNET_CONFIG_RESP:  
                 // AT_CONFIG_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI INTERNET_CONFIG RESPONSE RECEIVED!!\r\n");
-                //_smutex.lock();
                 sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
-                //respStr = (char *) resp_data->buffer;
-                //sendAtConfirmationFreeMpool(respStr);
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_HTTPS_RESP:  
                 // AT_HTTP_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI HTTPS RESPONSE RECEIVED!!\r\n");
                 return_response();
-                //_smutex.lock();
                 sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_HTTPS_RESP_DOWNLOAD:  
                 // AT_HTTPS_RESP_DOWNLOAD response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI HTTPS DOWNLOAD RESPONSE RECEIVED!!\r\n");
                 return_response(true); // set download paramter to true
-                //_smutex.lock();
-                //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_HTTP_RESP:  
                 // AT_HTTP_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI HTTP RESPONSE RECEIVED!!\r\n");
                 return_response(); 
-                //_smutex.lock();
-                //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             case AT_HTTP_RESP_DOWNLOAD:  
                 // AT_HTTP_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI HTTP RESPONSE RECEIVED!!\r\n");
                 return_response(true); // set download paramter to true
-                //_smutex.lock();
-                //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
             case CONNECT_EVENT:  
@@ -250,9 +221,6 @@
             {
                 // AT_HTTP_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI Watchdog message!!\r\n");
-                //_smutex.lock();
-                //_parser.send("\r\nNACK\r\n");
-                //_smutex.unlock();
                 respStr = (char *) resp_data->buffer;
                 sendConnectIndicationFreeMpool(respStr);
                 at_resp = AT_RESP_NONE;
@@ -262,9 +230,6 @@
             {
                 // AT_HTTP_RESP response state 
                 dbg_printf(LOG, "\n [ATCMD MAN] WIFI COMMAND FAILED!!\r\n");
-                //_smutex.lock();
-                //_parser.send("\r\nNACK\r\n");
-                //_smutex.unlock();
                 respStr = (char *) resp_data->buffer;
                 sendAtConfirmationFreeMpool(respStr);
                 at_resp = AT_RESP_NONE;
@@ -272,10 +237,8 @@
             }
             default:
                  //UNKNOWN response state
-                //_smutex.lock();
                 dbg_printf(LOG, "\n [ATCMD MAN] UNKNOWN RESPONSE RECEIVED!!\r\n");
                 sendAtConfirmationFreeMpool(ERROR_RESP);   //_parser.send(OK_RESP);
-                //_smutex.unlock();
                 at_resp = AT_RESP_NONE;
                 break;
         }
@@ -410,7 +373,6 @@
             outPtr = http_req->http_version + len; // point output buffer ptr to after 2nd string
         }
         else{ // scan header pairs
-            //n = sscanf(nxtPtr,"%s %s", &s1[0], &s2[0]);
             n = sscanf(nxtPtr,"%s %s", s1, s2);
             if(n!=2) return false; // error in input abort
             p = strstr(s1,":");
@@ -456,7 +418,6 @@
                 outPtr += len; // point output buffer ptr to after current string
             }
             else if(strstr(s1, "Content-Length")!= NULL){
-                //http_req.contentLen.assign(s2);
                 http_req->contentLen = outPtr;
                 len = strlen(s2)+1;                
                 strncpy(outPtr, s2, len);
@@ -506,13 +467,10 @@
 // OOB processing
 void ATCmdManager::_process_oob(uint32_t timeout, bool all){
     set_timeout(timeout);
-    //int cnt = 0;
     int start;
-    //channel_id_t chan_id;
     if(dataMode == AT_EXT_DATA_MODE)
     {
         int n;
-        //if(cnt++ % 10 == 0)dbg_printf(LOG, "In EDM mode\n");
         uint8_t edm[EDM_HDR_LEN];
         char cmdType[16];
         // Poll for edm packets
@@ -537,7 +495,6 @@
                 pT = 1;
                 strcpy(cmdType, "AT REQUEST");
             }
-            //dbg_printf(LOG, "%d bytes read! : type = %s\n", n, cmdType2str(edm_hdr.payloadID));
             dbg_printf(LOG, "%d bytes read! : CMD type = %s\n", n, cmdType);
             if(n==(EDM_HDR_LEN-pT))
             dbg_printf(LOG, "Start = %d, payloadID = %d len = %d chan_id = %d\n", edm_hdr.startByte, 
@@ -548,7 +505,6 @@
             {
                 if(edm_hdr.payloadID == AT_REQUEST_ID)
                 {
-                    //_parser.process_oob();
                     while (_parser.process_oob() && all) {
                     }
                     break;
@@ -585,7 +541,6 @@
                         case DATA_COMMAND_ID:
                         {
                             dbg_printf(LOG, "DATA_COMMAND received!\n");
-                            //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
                             if(createHttpRequest() == false)
                             {
 #ifdef SEND_DEBUG_MESSAGES
@@ -612,7 +567,6 @@
                             break;
                     }
                 }
-                //_parser.process_oob();
             }
             else // incorrect # of bytes received abort!!
             {
@@ -623,10 +577,9 @@
     else
     {
         // Poll for inbound packets
-        static int msgCnt = 0;
+#ifdef BOX_UBLOX_DEMO_TESTING
         static char * ATCMD = new char[32];
         int n = 0;
-#ifdef BOX_UBLOX_DEMO_TESTING
         if(check_for_at_cmd)
         {
             while (n>=0 && all) {
@@ -683,9 +636,7 @@
 }
 
 void ATCmdManager::_oob_ok_hdlr(){
-    //_smutex.lock();
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 
@@ -718,18 +669,14 @@
 #define TTP_DEBUGGING_UART_NOCHANGE
 void ATCmdManager::_oob_uart_setup(){
     int uOpts[NUM_UART_OPTIONS];
-    //if(_parser.recv("=%d,%d,%d,%d,%d,%d", &uOpts[0], &uOpts[1], &uOpts[2], &uOpts[3], &uOpts[4], &uOpts[5])) {
     if(_parser.scanf("=%d,%d,%d,%d,%d,%d", &uOpts[0], &uOpts[1], &uOpts[2], &uOpts[3], &uOpts[4], &uOpts[5]) >0) {
         dbg_printf(LOG, "\nATCmdParser: Uart Options=%d,%d,%d,%d,%d,%d\n", uOpts[0], uOpts[1], uOpts[2], uOpts[3], uOpts[4], uOpts[5]);
-        //printf("\nATCmdParser: Uart Options=%d,%d,%d,%d,%d,%d\n", uOpts[0], uOpts[1], uOpts[2], uOpts[3], uOpts[4], uOpts[5]);
-       //AT+UMRS=230400,2,8,1,1,1
         dbg_printf(LOG, "\n Changing Baud Rate to %d\n", uOpts[0]);
 #ifdef TTP_DEBUGGING_UART_NOCHANGE
     sendAtConfirmation(OK_RESP);
 #else
 
         sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-        //wait(0.1);
         _serial.set_baud(uOpts[0]);
         wait(0.1);
         dbg_printf(LOG, "\n Baud Rate now %d\n", uOpts[0]);
@@ -751,29 +698,23 @@
 
 void ATCmdManager::_oob_echo_off()
 {
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received ATEO OOB command!!\n");
     dbg_printf(LOG, "\n turning echo OFF!!\n");
-    //printf("\n turning echo OFF!!\n");
     _parser.debug_on(false);
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 
 void ATCmdManager::_oob_echo_on()
 {
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received ATE1 OOB command!!\n");
     dbg_printf(LOG, "\n turning echo ON!!\n");
     _parser.debug_on(true);
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 
 void ATCmdManager::_oob_data_mode(){
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received EDM mode command!!\n");
     int dmode;
     if(_parser.scanf("%d", &dmode) >0) {
@@ -802,12 +743,10 @@
     } else {
         dbg_printf(LOG, "\nATCmdParser: Retrieving Uart Options failed\n");
     }
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_get_mac_addr(){
     int bleOrWifi;
-    //_smutex.lock();
     if(_parser.scanf("=%d", &bleOrWifi) >0) {
         switch(bleOrWifi)
         {
@@ -825,31 +764,22 @@
         dbg_printf(LOG, "\nATCmdParser: Retrieving Uart Options failed");
     }
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_get_ble_role(){
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received get BLE role command!!\n");
-    //printf("\n Received get BLE role command!!\n");
     sendAtConfirmation("+UBTLE:2\r\nOK\r\n");   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_ena_ble_peri(){
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received enable BLE Peripheral command!!\n");
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_reboot(){
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received reboot command!!\n");
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_parser.send("System Resetting....\n");
     system_reset();
-    //_smutex.unlock();
 }
 
 const char * ATCmdManager::sec2str(nsapi_security_t sec)
@@ -882,10 +812,8 @@
 
 
 void ATCmdManager::_oob_scanWiFiNetworks(){
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received scanWiFiNetworks command!!\n");
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    //_smutex.unlock();
     wifi_cmd_t cmd = WIFI_CMD_SCAN;
     // queue next command
     queueWiFiCommand(cmd);
@@ -899,9 +827,7 @@
     int if_id; // interface id for request
     int aId; // interface id for request
     _parser.recv("%d,%d", &if_id, &aId);
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received WiFi Configuration Action command %d %d!!\r\n", if_id, aId);
-    //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
     if(if_id == WIFI_CONFIG_ID && aId <5){
         wifi_cmd_t cmd;
         action_id_t action_id = (action_id_t) aId;
@@ -915,36 +841,26 @@
             case WIFI_CONFIG_ACTIVATE:
                 cmd = WIFI_CMD_CONNECT;
                 dbg_printf(LOG, "\n About to Queue wifi cmd = %d!!\n", cmd);
-                //_smutex.unlock();
-                // queue next command
                 queueWiFiCommand(cmd);
                 break;
             case WIFI_CONFIG_DEACTIVATE:
                 cmd = WIFI_CMD_DISCONNECT;
                 dbg_printf(LOG, "\n About to Queue wifi cmd = %d!!\n", cmd);
-                //_smutex.unlock();
-                // queue next command
                 queueWiFiCommand(cmd);
                 break;
             default:
                 break;
         }
     }
-    if(debug_flag>0){
-        dbg_printf(LOG, "finished queuing WIFI CONNECT CMD \r\n");
-    }
     return;
 }
 
 
 void ATCmdManager::_oob_disconnectWiFiNetwork()
 {
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received WiFi Disconnect command!!\n");
     sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
     wifi_cmd_t cmd = WIFI_CMD_DISCONNECT;
-    //_smutex.unlock();
-    // queue next command
     queueWiFiCommand(cmd);
     return;
 }
@@ -955,15 +871,17 @@
     char url[MAX_URL_LEN];
     int n;
     internet_config_t internet_config;
-    //_smutex.lock();
     dbg_printf(LOG, "sizeof internet_config_t = %d\n", sizeof(internet_config_t));
     n = ReadBytes((uint8_t *)str, MAX_URL_LEN);
     str[n]=NULL;
+    int id;
+    int scheme;
     dbg_printf(LOG, "\n read string = %s , n = %d\n", str, n);
-    //n = sscanf(str, "=%1d,%199[^,],%1d", &(uint8_t)internet_config.peer_id, 
-    n = sscanf(str, "=%1d,%99[^,],%1d", &internet_config.peer_id, 
+    n = sscanf(str, "=%1d,%99[^,],%1d", &id, 
                                          url, //internet_config.url,    
-                                        &internet_config.connectionScheme);
+                                        &scheme);
+    internet_config.peer_id = (uint8_t) id;
+    internet_config.connectionScheme = (conn_scheme_t) scheme;
 #ifdef BOX_UBLOX_DEMO_TESTING
     char *p = strstr(url,"/https:"); 
 #else
@@ -991,7 +909,6 @@
         data_msg.dataLen = sizeof(internet_config_t); // + strlen(internet_config.url);
         dbg_printf(LOG, "\n url size = %d url str = %s\n",strlen(internet_config.url), internet_config.url );
         memcpy(data_msg.buffer,&internet_config, data_msg.dataLen);
-        //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
         // queue next data request
         queueWiFiDataRequest(data_msg);
         print_memory_info();
@@ -999,7 +916,6 @@
         dbg_printf(LOG, "\n[ATCMD MAN]: internet configuration failed %d fields parsed \r\n", n);
         _parser.send("NAK\n");
     }
-    //_smutex.unlock();
 }
 
 wifi_config_t ATCmdManager::init_wifi_config()
@@ -1010,6 +926,7 @@
     wifi_cfg.security = NSAPI_SECURITY_UNKNOWN;
     return wifi_cfg;    
 }
+
 /*  read ASCII characters into buffer and null terminate */
 int ATCmdManager::readStringBytes(uint8_t *buf, int maxBytes)
 { 
@@ -1048,7 +965,6 @@
 {
     int n;
     wifi_config_t wifi_cfg = init_wifi_config();
-    //_smutex.lock();
     n = readStringBytes((uint8_t *)wifi_cfg.ssid, 32);
     dbg_printf(LOG, "[ATCMD MAN]: number of bytes read = %d\n", n);
     if(n>0) 
@@ -1059,21 +975,17 @@
         data_msg.wifi_cmd = WIFI_CMD_CONFIG;
         data_msg.dataLen = sizeof(wifi_config_t);
         memcpy(data_msg.buffer,&wifi_cfg, data_msg.dataLen);
-        //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
         queueWiFiDataRequest(data_msg);
     } else {
         dbg_printf(LOG, "\n[ATCMD MAN]: wifi configuration failed  \n");
         _parser.send("NAK\n");
     }
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_setWiFiPWD()
 {
     int n;
     wifi_config_t wifi_cfg = init_wifi_config();
-    //_smutex.lock();
-    //n = _parser.scanf("%31[^\r\n]", wifi_cfg.pass);
     n = readStringBytes((uint8_t *)wifi_cfg.pass, 32);
     if(n>0) 
     {
@@ -1083,31 +995,28 @@
         data_msg.wifi_cmd = WIFI_CMD_CONFIG;
         data_msg.dataLen = sizeof(wifi_config_t);
         memcpy(data_msg.buffer,&wifi_cfg, data_msg.dataLen);
-        //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
         queueWiFiDataRequest(data_msg);
     } else {
         dbg_printf(LOG, "\n[ATCMD MAN]: wifi configuration failed  \n");
         _parser.send("NAK\n");
     }
-    //_smutex.unlock();
 }
 
 void ATCmdManager::_oob_setWiFiSecurity()
 {
     int n;
     wifi_config_t wifi_cfg = init_wifi_config();
-    _smutex.lock();
-    n = _parser.scanf(",%d", &wifi_cfg.security);
-    _smutex.unlock();
+    int security;
+    n = _parser.scanf(",%d", &security);
     if(n>0) 
     {
+        wifi_cfg.security = (nsapi_security_t) security;
         dbg_printf(LOG, "ATCMD MAN]: wifi_cfg.security = %s\n", sec2str(wifi_cfg.security));
         // package and send on wifi data queue
         wifi_data_msg_t data_msg;
         data_msg.wifi_cmd = WIFI_CMD_CONFIG;
         data_msg.dataLen = sizeof(wifi_config_t);
         memcpy(data_msg.buffer,&wifi_cfg, data_msg.dataLen);
-        //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
         queueWiFiDataRequest(data_msg);
     } else {
         dbg_printf(LOG, "\n[ATCMD MAN]: wifi configuration failed  \n");
@@ -1115,23 +1024,18 @@
         _parser.send("NAK\n");
         _smutex.unlock();
     }
-    //_smutex.unlock();
 }
 
 
 
 void ATCmdManager::_oob_getNetworkStatus()
 {
-    uint8_t if_id; // interface id for request
+    int if_id; // interface id for request
     _parser.scanf(",%d", &if_id);
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received Get Network Status command!!\n");
-    //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
     if(if_id == WIFI_INTERFACE_ID){
         wifi_cmd_t cmd = WIFI_CMD_NETWORK_STATUS;
         dbg_printf(LOG, "\n About to Queue wifi cmd = %d!!\n", cmd);
-        //_smutex.unlock();
-        // queue next command
         queueWiFiCommand(cmd);
     }
     return;
@@ -1140,12 +1044,9 @@
 
 void ATCmdManager::_oob_WiFiNetworkStatus()
 {
-    //_smutex.lock();
     dbg_printf(LOG, "\n Received Get WiFi Network Status command!!\n");
-    //sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
     wifi_cmd_t cmd = WIFI_CMD_WIFI_STATUS;
     dbg_printf(LOG, "\n About to Queue wifi cmd = %d!!\n", cmd);
-    //_smutex.unlock();
     // queue next command
     queueWiFiCommand(cmd);
     return;
@@ -1153,28 +1054,6 @@
 
 void ATCmdManager::_oob_sendHttpMessage()
 {
-    int n;
-    http_request_t http_post_request;
-    //_smutex.lock();
-    /*
-    n = _parser.scanf(",%d", &wifi_cfg.security);
-    if(n>0) 
-    {
-        dbg_printf(LOG, "ATCMD MAN]: wifi_cfg.security = %s\n", sec2str(wifi_cfg.security));
-        // package and send on wifi data queue
-        wifi_data_msg_t data_msg;
-        data_msg.wifi_cmd = WIFI_CMD_CONFIG;
-        data_msg.dataLen = sizeof(wifi_config_t);
-        memcpy(data_msg.buffer,&wifi_cfg, data_msg.dataLen);
-        queueWiFiDataRequest(data_msg);
-        sendAtConfirmation(OK_RESP);   //_parser.send(OK_RESP);
-    } else {
-        dbg_printf(LOG, "\n[ATCMD MAN]: wifi configuration failed  \n");
-        _parser.send("NAK\n");
-    }
-    */
-    //_smutex.unlock();
-
 }
 
 bool  ATCmdManager::queueWiFiCommand(wifi_cmd_t cmd){
@@ -1189,10 +1068,6 @@
     wifi_cmd_message_t *wifiCmd = (wifi_cmd_message_t *) malloc(sizeof(wifi_cmd_message_t));
     if(wifiCmd == NULL){
         dbg_printf(LOG, "[ATCMD MAN] try malloc() : queued memory allocation failed\n");
-        //_event_queue.call_in(10, &print_memory_info);
-        //_event_queue.call_in(10, &print_heap_and_isr_stack_info);
-        //print_memory_info();
-        //print_heap_and_isr_stack_info();
         return false;
     }
 #endif
@@ -1224,13 +1099,9 @@
 
 bool  ATCmdManager::queueWiFiDataRequest(wifi_data_msg_t data_req){
     static bool memFull = false;
-    //print_memory_info();
-    //_event_queue.call_in(10, &print_heap_and_isr_stack_info);
-    //print_heap_and_isr_stack_info();
     wifi_data_msg_t *wifiData = _aT2WiFiDatamPool->alloc();
     if(wifiData == NULL)
     {
-        //_parser.send("\r\nQUEUE MEMORY FULL\r\n");
 #ifdef SEND_DEBUG_MESSAGES
         sendAtConfirmation("\r\nQUEUE MEMORY FULL\r\n");
 #endif
@@ -1249,7 +1120,6 @@
     memcpy(wifiData->buffer, data_req.buffer, data_req.dataLen);
     _aT2WiFiDataQueue->put(wifiData);
     dbg_printf(LOG, "[ATCMD MAN] queued data size = %d : wifi_cmd = %d\n", data_req.dataLen, data_req.wifi_cmd);
-    //free(&data_req);
     return true;
 }
 
@@ -1260,8 +1130,6 @@
         resp_data = (at_data_msg_t*)evt.value.p;
         setNextResponse(resp_data->at_resp);
         dbg_printf(LOG, "[ATCMD MAN] dequeued data size = %d : at_resp = %d\n", resp_data->dataLen, resp_data->at_resp);
-        //_event_queue.call_in(10, &print_heap_and_isr_stack_info);
-        //print_heap_and_isr_stack_info();
     }
     return true;
 }
@@ -1287,7 +1155,6 @@
             _parser.send("%s", buf);
             break;
     }
-    //wait_ms(1);
     _smutex.unlock();
 }
 void ATCmdManager::sendAtEvent(const char *buf)
@@ -1318,7 +1185,6 @@
 
 void ATCmdManager::sendConnectEvent(const uint8_t *buf, int len)
 {
-    //_smutex.lock();
     switch(dataMode){
         case AT_CMD_DATA_MODE:
             _parser.send((const char*) buf);
@@ -1366,7 +1232,6 @@
 
 void ATCmdManager::return_response(bool download) {
     char * resp = (char *) resp_data->buffer;
-    //_smutex.lock();
     dbg_printf(LOG, "\n[ATCMD MAN] received response:\n");
     if(download == false) // not download must be ascii header
     {
@@ -1376,13 +1241,8 @@
     {
         printBufferInHex((uint8_t *)resp, resp_data->dataLen);
     }
-    //_parser.write(resp, resp_data->dataLen);
     outputEDMdata((const uint8_t *)resp, resp_data->dataLen, DATA_MSG_ID, 
                   EVENT_MSG_TYPE, WIFI_CHANNEL);
-    //_smutex.unlock();
     _wiFi2ATDatamPool->free(resp_data);
     resp_data = NULL;
-    //print_memory_info();
-    //_event_queue.call_in(10, &print_heap_and_isr_stack_info);
-    //print_heap_and_isr_stack_info();   
 }
--- a/source/WiFiManager.cpp	Fri May 10 13:45:50 2019 +0000
+++ b/source/WiFiManager.cpp	Sat May 11 11:55:29 2019 +0000
@@ -43,7 +43,8 @@
     wifiWatchdogTimer.start();
     watchdogCnt = 0;
     //_event_queue.call_every(10000, this, &WiFiManager::callWifiWatchDog);
-    watchDogTick.attach(this, &WiFiManager::callWifiWatchDogIsr, 10000.0); // call flip function every 2 seconds
+    watchDogTick.attach(callback(this, &WiFiManager::callWifiWatchDogIsr), 10000.0); // call flip function every 10 seconds
+    
 }
 
 WiFiManager::~WiFiManager()
@@ -70,7 +71,7 @@
         sendATresponseString(WIFI_WATCH_DOG);
         watchdogCnt = 0;
     }
-    else if(wifiWatchdogTimer.read() > 30.0 && responseString==NULL)
+    else if(wifiWatchdogTimer.read() > 30 && responseString==NULL)
     {
         if(wifiCmd == WIFI_CMD_NONE)
             inactivity_monitor++;
@@ -430,11 +431,8 @@
     WiFiAccessPoint       *ap;
     nsapi_size_or_error_t count;
     count = ncount;
-    //count = wiFiManager->scanNetworks();
     if (count <= 0) {
-        //_smutex.lock();
         dbg_printf(LOG, "[WIFI-MAN] scan() failed with return value: %d\n", count);
-        //_smutex.unlock();
         return 0;
     }
     /* Limit number of network arbitrary to 15 */
@@ -692,12 +690,9 @@
 {
     dbg_printf(LOG, "[WIFI-MAN] about to call status_callback_event... \r\n");
     _event_queue.call_in(50, this, &WiFiManager::status_callback_event, status, param);
-    //status_callback_event(status, param);
 }
 void WiFiManager::status_callback_event(nsapi_event_t status, intptr_t param)
 {
-    //if (status == NSAPI_EVENT_CONNECTION_STATUS_CHANGE) {
-    //}
     switch(param) {
         case NSAPI_STATUS_LOCAL_UP:
             dbg_printf(LOG, "[WIFI-MAN] Local IP address set!\r\n");
@@ -720,7 +715,6 @@
             dbg_printf(LOG, "No connection to network!\r\n");
             dbg_printf(LOG, "\n [WIFI-MAN] No connection to network!\n");
             is_connected = false;
-            //queueATresponse(AT_DISCONNECT_RESP);
             // attempt reconnection if always connected scheme is set
             if(internet_config.connectionScheme == ALWAYS_CONNECTED)
             {
@@ -741,11 +735,6 @@
 
 
 
-   //     NSAPI_STATUS_LOCAL_UP           = 0,        /*!< local IP address set */
-   //     NSAPI_STATUS_GLOBAL_UP          = 1,        /*!< global IP address set */
-   //     NSAPI_STATUS_DISCONNECTED       = 2,        /*!< no connection to network */
-   //     NSAPI_STATUS_CONNECTING         = 3,        /*!< connecting to network */
-   //     NSAPI_STATUS_ERROR_UNSUPPORTED  = NSAPI_ERROR_UNSUPPORTED   
    
 nsapi_error_t WiFiManager::connect()
 {
@@ -817,9 +806,9 @@
         dbg_printf(LOG, "\r\nHOSTNAME TRANSLATION FAILURE : error code = %d \r\n", result);
         if(responseString == NULL)
         {
-            //responseString = (char *) malloc(100);
-            //sprintf(responseString, "\r\nHOSTNAME TRANSLATION FAILURE : error code = %d \r\n", result);
-            //sendATresponseString(AT_EVENT);
+            responseString = (char *) malloc(100);
+            sprintf(responseString, "\r\nHOSTNAME TRANSLATION FAILURE : error code = %d \r\n", result);
+            sendATresponseString(AT_EVENT);
         }
    }
     wifiBusy = 0;
@@ -854,11 +843,7 @@
 void WiFiManager::sendResponseDownloadData(at_cmd_resp_t at_cmd, const uint8_t * buf, int bufLen)
 {    
 
-    //dbg_printf(LOG, "before call to new at_data_msg_t \n");
-    //print_memory_info();
     at_data_resp = new at_data_msg_t;
-    //dbg_printf(LOG, "after call to new at_data_msg_t \n");
-    //print_memory_info();
     at_data_resp->at_resp = at_cmd;
     size_t bufSize = sizeof(at_data_resp->buffer);
     int pos = 0;
@@ -982,11 +967,6 @@
 
 void WiFiManager::printBufferInHex(const uint8_t *buf, int pLen)
 {
-    //for(int i =0;i<pLen;i++){
-    //    if(i%8==0) dbg_printf(LOG, "\n[%3d]",i);
-    //    dbg_printf(LOG, "%02x ", buf[i]);
-    //}
-    //dbg_printf(LOG, "\n");
     print_debug_hex(buf, pLen);
 }
 
@@ -1044,7 +1024,6 @@
         char errstr[100];
         mbedtls_strerror(r, errstr, 100);
         dbg_printf(LOG, "TLS connect failed (err = %d) for hostname '%s' -- ERROR = %s !!\n", r, hostName, errstr);
-        //printf("TLS connect failed for hostname %s -- ERROR = %s !!\n", hostName, errstr);
         socket->close();
         return false;
     }
@@ -1129,11 +1108,8 @@
                                        callback(this, &WiFiManager::body_callback));
         setHttpHeader("Host", http_req_cfg->hostName);
         setHttpHeader("Accept", http_req_cfg->AcceptVal);
-        //dbg_printf(LOG, "http_req_cfg->method = %d\n", http_req_cfg->method);
         if(http_req_cfg->method == HTTP_GET){
             dbg_printf(LOG, "HTTP_GET -- ignoring body\n");
-            //setHttpHeader("Content-Type", http_req_cfg->contentType);
-            //setHttpHeader("Content-Length", http_req_cfg->contentLen);
             http_response = http_request->send(NULL, 0);
         }
         else{
@@ -1146,7 +1122,6 @@
             char buf[100];
             mbedtls_strerror(http_request->get_error(), buf, 100);
             dbg_printf(LOG, "HttpRequest failed (error code %s)\n", buf);
-            //dbg_printf(LOG, "HttpsRequest failed (error code %d)\n", https_request->get_error());
             delete http_request; // free the memory
             return false;
         }
@@ -1180,17 +1155,9 @@
             updateRemotePeerDetails();
             // send socket connection event before proceeding to send https request
             // give about 2 ms
-            //_event_queue.call(this, &WiFiManager::sendSocketConnectionEvent);
             sendSocketConnectionEvent();
-            //https_connection_active = true; // set true whenever connection succeeds
-            //return true;
-            //dbg_printf(LOG, "[create https] TLS connection successful for https site :  %s\n", host);
-            //dbg_printf(LOG, "after call to createTLSconnection \n");
-            //print_memory_info();
         }        
         // Pass in `socket`, instead of `network` as first argument, and omit the `SSL_CA_PEM` argument
-        //HttpsRequest* get_req = new HttpsRequest(socket, HTTP_GET, "https://httpbin.org/status/418");
-        //_wmutex.lock();
         stoptime = Kernel::get_ms_count();
         dbg_printf(LOG, "\r\nTLS connection time : %d ms\r\n", (stoptime - starttime));
         starttime = Kernel::get_ms_count();
@@ -1216,33 +1183,17 @@
             dbg_printf(LOG, "HTTP_GET -- ignoring body\n");
             setHttpsHeader("Host", http_req_cfg->hostName);
             setHttpsHeader("Accept", http_req_cfg->AcceptVal);
-            //setHttpHeader("Content-Type", http_req_cfg->contentType);
-            //setHttpHeader("Content-Length", http_req_cfg->contentLen);
             http_response = https_request->send(NULL, 0);
         }
         else{
-            //dbg_printf(LOG, "about to setup https headers\r\n");
             setHttpsHeader("Host", http_req_cfg->hostName);
             setHttpsHeader("Accept", http_req_cfg->AcceptVal);
             setHttpsHeader("Content-Type", http_req_cfg->contentType);
             setHttpsHeader("Content-Length", http_req_cfg->contentLen);
             dbg_printf(LOG, "https headers setup - about to send request\r\n");
             // Grab the heap statistics
-            //mbed_stats_heap_t heap_stats;
-            //mbed_stats_heap_get(&heap_stats);
             dbg_printf(LOG, "Heap size: %lu / %lu bytes\r\n", heap_stats.current_size, heap_stats.reserved_size);
-#ifdef SEND_DEBUG_MESSAGES
-            responseString = (char *) malloc(200);
-            sprintf(responseString, "\r\nABOUT TO SEND HTTP REQUEST\r\n");
-            sendDebugMessage();
-            responseString = (char *) malloc(200);
-            sprintf(responseString, "Heap size= %lu / %lu bytes\r\n", heap_stats.current_size, heap_stats.reserved_size);
-            sendDebugMessage();
             http_response = https_request->send(http_req_cfg->body, bodyLen);
-            responseString = (char *) malloc(100);
-            sprintf(responseString, "\r\nRETURNED FROM SENDING HTTP REQUEST\r\n");
-            sendDebugMessage();
-#endif
         }
 #else
         setHttpsHeader("Host", http_req_cfg->hostName);
--- a/source/main-http-ipv6.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,48 +0,0 @@
-#include "select-demo.h"
-
-#if DEMO == DEMO_HTTP_IPV6
-
-#include "mbed.h"
-#include "network-helper.h"
-#include "http_request.h"
-
-void dump_response(HttpResponse* res) {
-    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
-    printf("Headers:\n");
-    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
-        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
-    }
-    printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-int main() {
-    NetworkInterface* network = connect_to_default_network_interface();
-    if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
-        return 1;
-    }
-
-    // Do a GET request to icanhazip.com which returns the public IPv6 address for the device
-    // This page is only accessible over IPv6
-    {
-        // By default the body is automatically parsed and stored in a buffer, this is memory heavy.
-        // To receive chunked response, pass in a callback as last parameter to the constructor.
-        HttpRequest* get_req = new HttpRequest(network, HTTP_GET, "http://ipv6.icanhazip.com");
-
-        HttpResponse* get_res = get_req->send();
-        if (!get_res) {
-            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTP GET response -----\n");
-        dump_response(get_res);
-
-        delete get_req;
-    }
-
-    wait(osWaitForever);
-}
-
-#endif
--- a/source/main-http-socket-reuse.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-#include "select-demo.h"
-
-#if DEMO == DEMO_HTTP_SOCKET_REUSE
-
-#include "mbed.h"
-#include "network-helper.h"
-#include "http_request.h"
-
-void dump_response(HttpResponse* res) {
-    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
-    printf("Headers:\n");
-    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
-        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
-    }
-    printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-int main() {
-    NetworkInterface* network = connect_to_default_network_interface();
-    if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
-        return 1;
-    }
-
-    // Create a TCP socket
-    printf("\n----- Setting up TCP connection -----\n");
-
-    TCPSocket* socket = new TCPSocket();
-    nsapi_error_t open_result = socket->open(network);
-    if (open_result != 0) {
-        printf("Opening TCPSocket failed... %d\n", open_result);
-        return 1;
-    }
-
-    nsapi_error_t connect_result = socket->connect("httpbin.org", 80);
-    if (connect_result != 0) {
-        printf("Connecting over TCPSocket failed... %d\n", connect_result);
-        return 1;
-    }
-
-    printf("Connected over TCP to httpbin.org:80\n");
-
-    // Do a GET request to httpbin.org
-    {
-        HttpRequest* get_req = new HttpRequest(socket, HTTP_GET, "http://httpbin.org/status/418");
-
-        // By default the body is automatically parsed and stored in a string, this is memory heavy.
-        // To receive chunked response, pass in a callback as third parameter to 'send'.
-        HttpResponse* get_res = get_req->send();
-        if (!get_res) {
-            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTP GET response -----\n");
-        dump_response(get_res);
-
-        delete get_req;
-    }
-
-    // POST request to httpbin.org
-    {
-        HttpRequest* post_req = new HttpRequest(socket, HTTP_POST, "http://httpbin.org/post");
-        post_req->set_header("Content-Type", "application/json");
-
-        const char body[] = "{\"hello\":\"world\"}";
-
-        HttpResponse* post_res = post_req->send(body, strlen(body));
-        if (!post_res) {
-            printf("HttpRequest failed (error code %d)\n", post_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTP POST response -----\n");
-        dump_response(post_res);
-
-        delete post_req;
-    }
-
-    socket->close();
-    delete socket;
-
-    wait(osWaitForever);
-}
-
-#endif
--- a/source/main-http.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,69 +0,0 @@
-#include "select-demo.h"
-
-#if DEMO == DEMO_HTTP
-
-#include "mbed.h"
-#include "http_request.h"
-#include "network-helper.h"
-#include "mbed_mem_trace.h"
-
-void dump_response(HttpResponse* res) {
-    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
-    printf("Headers:\n");
-    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
-        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
-    }
-    printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-int main() {
-    // Connect to the network with the default networking interface
-    // if you use WiFi: see mbed_app.json for the credentials
-    NetworkInterface* network = connect_to_default_network_interface();
-    if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
-        return 1;
-    }
-
-    // Do a GET request to httpbin.org
-    {
-        // By default the body is automatically parsed and stored in a buffer, this is memory heavy.
-        // To receive chunked response, pass in a callback as last parameter to the constructor.
-        HttpRequest* get_req = new HttpRequest(network, HTTP_GET, "http://httpbin.org/status/418");
-
-        HttpResponse* get_res = get_req->send();
-        if (!get_res) {
-            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTP GET response -----\n");
-        dump_response(get_res);
-
-        delete get_req;
-    }
-
-    // POST request to httpbin.org
-    {
-        HttpRequest* post_req = new HttpRequest(network, HTTP_POST, "http://httpbin.org/post");
-        post_req->set_header("Content-Type", "application/json");
-
-        const char body[] = "{\"hello\":\"world\"}";
-
-        HttpResponse* post_res = post_req->send(body, strlen(body));
-        if (!post_res) {
-            printf("HttpRequest failed (error code %d)\n", post_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTP POST response -----\n");
-        dump_response(post_res);
-
-        delete post_req;
-    }
-
-    wait(osWaitForever);
-}
-
-#endif
--- a/source/main-https-chunked-request.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,113 +0,0 @@
-/**
- * This is an example of doing chunked requests, where you do not need to load the full request body
- * into memory. You do this by adding a callback to the `send` function of the HTTP/HTTPS request.
- */
-
-#include "select-demo.h"
-
-#if DEMO == DEMO_HTTPS_CHUNKED_REQUEST
-
-#include "mbed.h"
-#include "mbed_trace.h"
-#include "https_request.h"
-#include "network-helper.h"
-
-/* List of trusted root CA certificates
- * currently one: Comodo, the CA for reqres.in
- *
- * To add more root certificates, just concatenate them.
- */
-const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n"
-    "MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTEL\n"
-    "MAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE\n"
-    "BxMHU2FsZm9yZDEaMBgGA1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMT\n"
-    "IkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDgwMzA2MDAw\n"
-    "MDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdy\n"
-    "ZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMRQ09N\n"
-    "T0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlv\n"
-    "biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSR\n"
-    "FtSrYpn1PlILBs5BAH+X4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0J\n"
-    "cfRK9ChQtP6IHG4/bC8vCVlbpVsLM5niwz2J+Wos77LTBumjQjBAMB0GA1UdDgQW\n"
-    "BBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/\n"
-    "BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VGFAkK+qDm\n"
-    "fQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdv\n"
-    "GDeAU/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=\n"
-    "-----END CERTIFICATE-----\n";
-
-void dump_response(HttpResponse* res) {
-    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
-    printf("Headers:\n");
-    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
-        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
-    }
-    printf("\nBody (%lu bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-// Spread the message out over 3 different chunks
-const char * chunks[] = {
-    "{\"message\":",
-    "\"this is an example",
-    " of chunked encoding\"}"
-};
-
-int chunk_ix = 0;
-
-// Callback function, grab the next chunk and return it
-const void * get_chunk(uint32_t* out_size) {
-    // If you don't have any data left, set out_size to 0 and return a null pointer
-    if (chunk_ix == (sizeof(chunks) / sizeof(chunks[0]))) {
-        *out_size = 0;
-        return NULL;
-    }
-    const char *chunk = chunks[chunk_ix];
-    *out_size = strlen(chunk);
-    chunk_ix++;
-
-    return chunk;
-}
-
-int main() {
-    NetworkInterface* network = connect_to_default_network_interface();
-    if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
-        return 1;
-    }
-
-    mbed_trace_init();
-
-    // This example also logs the raw request, you can do this by calling 'set_request_log_buffer' on the request
-    uint8_t *request_buffer = (uint8_t*)calloc(2048, 1);
-
-    // POST request to reqres.in
-    {
-        HttpsRequest* post_req = new HttpsRequest(network, SSL_CA_PEM, HTTP_POST, "https://reqres.in/api/users");
-        post_req->set_header("Content-Type", "application/json");
-        post_req->set_request_log_buffer(request_buffer, 2048);
-
-        // If you pass a callback here, the Transfer-Encoding header is automatically set to chunked
-        HttpResponse* post_res = post_req->send(&get_chunk);
-        if (!post_res) {
-            printf("HttpsRequest failed (error code %d)\n", post_req->get_error());
-            return 1;
-        }
-
-        // Log the raw request that went over the line (if you decode the hex you can see the chunked parts)
-        // e.g. in Node.js (take the output from below):
-        // '50 4f 53 54 20'.split(' ').map(c=>parseInt(c,16)).map(c=>String.fromCharCode(c)).join('')
-        printf("\n----- Request buffer -----\n");
-        for (size_t ix = 0; ix < post_req->get_request_log_buffer_length(); ix++) {
-            printf("%02x ", request_buffer[ix]);
-        }
-        printf("\n");
-
-        printf("\n----- HTTPS POST response -----\n");
-        dump_response(post_res);
-
-        delete post_req;
-    }
-
-    wait(osWaitForever);
-}
-
-#endif
--- a/source/main-https-socket-reuse.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,125 +0,0 @@
-#include "select-demo.h"
-
-/**
- * This demo shows how to re-use sockets, so the TLS handshake only has to happen once
- */
-
-#if DEMO == DEMO_HTTPS_SOCKET_REUSE
-
-#include "mbed.h"
-#include "mbed_trace.h"
-#include "https_request.h"
-#include "network-helper.h"
-
-/* List of trusted root CA certificates
- * currently one: Let's Encrypt, the CA for httpbin.org
- *
- * To add more root certificates, just concatenate them.
- */
-const char SSL_CA_PEM[] = "-----BEGIN CERTIFICATE-----\n"
-    "MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n"
-    "MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n"
-    "DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n"
-    "SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n"
-    "GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n"
-    "AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n"
-    "q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n"
-    "SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n"
-    "Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n"
-    "a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n"
-    "/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n"
-    "AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n"
-    "CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n"
-    "bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n"
-    "c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n"
-    "VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n"
-    "ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n"
-    "MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n"
-    "Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n"
-    "AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n"
-    "uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n"
-    "wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n"
-    "X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n"
-    "PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n"
-    "KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n"
-    "-----END CERTIFICATE-----\n";
-
-void dump_response(HttpResponse* res) {
-    printf("Status: %d - %s\n", res->get_status_code(), res->get_status_message().c_str());
-
-    printf("Headers:\n");
-    for (size_t ix = 0; ix < res->get_headers_length(); ix++) {
-        printf("\t%s: %s\n", res->get_headers_fields()[ix]->c_str(), res->get_headers_values()[ix]->c_str());
-    }
-    printf("\nBody (%d bytes):\n\n%s\n", res->get_body_length(), res->get_body_as_string().c_str());
-}
-
-int main() {
-    NetworkInterface* network = connect_to_default_network_interface();
-    if (!network) {
-        printf("Cannot connect to the network, see serial output\n");
-        return 1;
-    }
-
-    mbed_trace_init();
-
-    // Create a TLS socket (which holds a TCPSocket)
-    printf("\n----- Setting up TLS connection -----\n");
-
-    nsapi_error_t r;
-
-    TLSSocket* socket = new TLSSocket();
-    if ((r = socket->open(network)) != NSAPI_ERROR_OK) {
-        printf("TLS socket open failed (%d)\n", r);
-        return 1;
-    }
-    if ((r = socket->set_root_ca_cert(SSL_CA_PEM)) != NSAPI_ERROR_OK) {
-        printf("TLS socket set_root_ca_cert failed (%d)\n", r);
-        return 1;
-    }
-    if ((r = socket->connect("httpbin.org", 443)) != NSAPI_ERROR_OK) {
-        printf("TLS socket connect failed (%d)\n", r);
-        return 1;
-    }
-
-    // GET request to httpbin.org
-    {
-        HttpsRequest* get_req = new HttpsRequest(socket, HTTP_GET, "https://httpbin.org/status/418");
-
-        HttpResponse* get_res = get_req->send();
-        if (!get_res) {
-            printf("HttpRequest failed (error code %d)\n", get_req->get_error());
-            return 1;
-        }
-        printf("\n----- HTTPS GET response -----\n");
-        dump_response(get_res);
-
-        delete get_req;
-    }
-
-    // POST request to httpbin.org
-    {
-        HttpsRequest* post_req = new HttpsRequest(socket, HTTP_POST, "https://httpbin.org/post");
-        post_req->set_header("Content-Type", "application/json");
-
-        const char body[] = "{\"hello\":\"world\"}";
-
-        HttpResponse* post_res = post_req->send(body, strlen(body));
-        if (!post_res) {
-            printf("HttpRequest failed (error code %d)\n", post_req->get_error());
-            return 1;
-        }
-
-        printf("\n----- HTTPS POST response -----\n");
-        dump_response(post_res);
-
-        delete post_req;
-    }
-
-    socket->close();
-    delete socket;
-
-    wait(osWaitForever);
-}
-
-#endif
--- a/source/main-https.cpp	Fri May 10 13:45:50 2019 +0000
+++ b/source/main-https.cpp	Sat May 11 11:55:29 2019 +0000
@@ -5,15 +5,12 @@
 
 #if DEMO == DEMO_HTTPS
 
-//#include "mbed.h"
 #include <events/mbed_events.h>
 #include <mbed.h>
 #include "ble/BLE.h"
 #include "fault_handlers.h"
-//#include "BLE.h"
 #include "ATCmdParser.h"
 
-//#include "BLEDevice.h"
 
 #include "LEDService.h"
 #include "ble/services/UARTService.h"
@@ -25,8 +22,6 @@
 #include "mbed_memory_status.h"
 UARTService *uart;
 
-//DigitalOut alivenessLED(LED1, 0);
-//DigitalOut actuatedLED(LED2, 0);
 DigitalOut led1(LED1);
 DigitalOut led2(LED2);
 DigitalOut led3(LED3);
@@ -45,23 +40,14 @@
 // BLE configuration
 static ble_config_t ble_config;
 const uint8_t pairingPassword[6] = "1101";
-// BLE interface pointer 
-//BLE &_ble;
 // BLE peripheral pointer
 static SMDevicePeripheral *peripheral;
 
 const static char     DEVICE_NAME_MAIN[] = "UBLOX-BLE";
-static const uint16_t uuid16_list[] = {LEDService::LED_SERVICE_UUID};
 char buffer[BUFFER_LEN];
-#ifdef ENABLE_UART_BACKGRND_DEMO
-uint8_t TxBuffer[TX_BUFFER_LEN];
-uint8_t RxBuffer[RX_BUFFER_LEN];
-#endif
 static EventQueue eventQueue_atcmd(/* event count */ 32 * EVENTS_EVENT_SIZE);
 static EventQueue eventQueue_wifi(/* event count */ 32 * EVENTS_EVENT_SIZE);
 
-LEDService *ledServicePtr;
-
 /*  Queue and memory pool for AT to Wifi commands */
 static MemoryPool<wifi_cmd_message_t, 16> aT2WiFimPool;
 static Queue<wifi_cmd_message_t, 16> aT2WiFiCmdQueue;
@@ -82,11 +68,6 @@
 
 
 
-/* allocate statically stacks for the three threads */
-//unsigned char rt_stk[1024];
-//unsigned char hp_stk[1024];
-//unsigned char lp_stk[1024];
-
 /* creates three tread objects with different priorities */
 //Thread real_time_thread(osPriorityRealtime, 1024, &rt_stk[0]);
 //Thread high_prio_thread(osPriorityHigh, 1024, &hp_stk[0]);
@@ -125,156 +106,10 @@
 #include "wifi_demo.h"
 
 Mutex _smutex; // Protect memory access
-// check free memory
-
-void performFreeMemoryCheck()
-{
-    _smutex.lock();
-       // perform free memory check
-    int blockSize = 16;
-    int i = 1;
-    dbg_printf(LOG, "Checking memory with blocksize %d char ...\n", blockSize);
-    while (true) {
-        char *p = (char *) malloc(i * blockSize);
-        if (p == NULL)
-            break;
-        free(p);
-        ++i;
-    }
-    dbg_printf(LOG, "Ok for %d char\n", (i - 1) * blockSize);
-    _smutex.unlock();
-
-}
-#ifdef ENABLE_UART_BACKGRND_DEMO
-static int uartExpectedRcvCount = 0;
-static int uartCharRcvCount = 0;
-static bool UartBusy = false;
-int WriteUartBytes(const uint8_t * txBuffer, size_t bufSize, int txLen)
-{
-    if(txLen > bufSize)
-    {
-        txLen = bufSize;
-    }
-    //int goodTxLen;
-    //goodTxLen = _parser.write((const char *) txBuffer, txLen);
-    for(int i=0;i<txLen;i++)
-    {
-        device->putc(txBuffer[i]);
-    }
-    // return number of bytes written to UART
-    return (int) txLen;
-}
-
-void printUartRxResult()
-{
-    
-    if(uartCharRcvCount == 0)
-    {
-        dbg_printf(LOG, "\nFirst Call to UART attach callback!!\n");
-    }
-    else if(uartCharRcvCount >= uartExpectedRcvCount)
-    {
-        dbg_printf(LOG, "\nNumber of Received Bytes = %d\n\n", uartCharRcvCount);
-        dbg_printf(LOG, "--- Writing back received bytes --- \n");
-        int n;
-        n = WriteUartBytes(RxBuffer, TX_BUFFER_LEN, uartCharRcvCount);
-        UartBusy = false;
-    }
-}
-
-
-void UartRxcallback_ex() {
-    if(uartCharRcvCount >= uartExpectedRcvCount)
-    {
-        int x = device->getc();
-        return;
-    }
-    if(uartCharRcvCount == 0)
-    {
-        eventQueue.call(printUartRxResult);
-    }
-    // Note: you need to actually read from the serial to clear the RX interrupt
-    RxBuffer[uartCharRcvCount] = (uint8_t) device->getc();
-    uartCharRcvCount++;
-    if(uartCharRcvCount >= uartExpectedRcvCount)
-    {
-        //alivenessLED = !alivenessLED; /* Do blinky on LED1 to indicate system aliveness. */
-        eventQueue.call(printUartRxResult);
-    }
-}
-void BackGndUartRead(uint8_t * rxBuffer, size_t bufSize, int rxLen)
-{
-    UartBusy = true;
-    dbg_printf(LOG, "Setting up background UART read -  rxLen = %d\n", rxLen);
-    uartCharRcvCount = 0;
-    if(rxLen > bufSize)
-    {
-        rxLen = bufSize;
-    }
-    uartExpectedRcvCount = rxLen;
-    dbg_printf(LOG, "\nattaching to device UART\n\n");
-    device->attach(&UartRxcallback_ex);
-    dbg_printf(LOG, "\nBackground UART read setup completed\n\n");
-}
-
-int ReadUartBytes(uint8_t * rxBuffer, size_t bufSize, int rxLen, bool echo)
-{
-    UartBusy = true;
-    if(rxLen > bufSize)
-    {
-        rxLen = bufSize;
-    }
-    for(int i=0;i<rxLen;i++)
-    {
-        rxBuffer[i] = (uint8_t) device->getc();
-        if(echo)device->putc(rxBuffer[i]);
-    }
-    UartBusy = false;
-    //return number of bytes written to UART
-    return rxLen;
-}
-
-
-void checkUartReceive()
-{
-    //dbg_printf(LOG, "Hello World!\n\r");
-    char cbuf[100];
-    int rxCnt=0;
-    while(device->readable()) {
-        //dbg_printf(LOG, "uartCharRcvCount = %d\n\r", uartCharRcvCount++);
-        cbuf[rxCnt++] = device->getc();
-        //putc(getc() + 1); // echo input back to terminal
-    }
-    cbuf[rxCnt] = NULL;
-    if(rxCnt > 0)
-    {
-        dbg_printf(LOG, "received %d chars\n", rxCnt);
-        dbg_printf(LOG, "%s\n", cbuf);
-    }
-
-}
-#endif
 
 uint64_t lastTime = 0;
 uint64_t now = 0;
 uint32_t callCount = 0;
-void HelloUart()
-{
-    //if(UartBusy)return;
-    // 64-bit time doesn't wrap for half a billion years, at least
-    lastTime = now;
-    now = Kernel::get_ms_count();
-    callCount++;
-    dbg_printf(LOG, "\nHello : %d secs elapsed : CallCount = %d \n", uint32_t(now - lastTime), callCount);
-}
-
-
-
-
-//Serial device(USBTX, USBRX); // tx, rx
-//RawSerial device(MBED_CONF_APP_UART1_TX, MBED_CONF_APP_UART1_RX); // tx, rx
-
-
 
 
 // Wifi-demo
@@ -296,16 +131,6 @@
     }
 }
 
-void printWait(int numSecs)
-{
-    dbg_printf(LOG, "Waiting for %d seconds...\n", numSecs);
-    for(int i=0;i<numSecs;i++){
-        dbg_printf(LOG, "%d", i);
-        dbg_printf(LOG, "\n");
-        wait(0.5);
-        eventQueue_atcmd.dispatch(500);        // Dispatch time - 500msec
-    }
-}
 
 void printWaitAbortKeyPress(int numSecs)
 {
@@ -388,11 +213,6 @@
         led3 = !led3;
 }
 
-//#define DISABLE_WIFI
-#define DISABLE_WIFI_DEMO
-#define SKIP_WIFI_SCAN_DEMO
-#define BLE_STOP_START_ADV_SCAN_DEMO
-#define SKIP_WIFI_CONNECT_DEMO
 #define PAUSE_SECONDS   0
 #define PAUSE_SECONDS_BLE 0
 int main() {
@@ -403,11 +223,7 @@
 #endif
     
     reset_counter++;
-    print_memory_info();
     dbg_printf(LOG, "\r\n ++++++ PROGRAM STARTING -- reset count = %d ++++++ \r\n", reset_counter);
-    //device = new RawSerial(PA_9, PA_10, DEFAULT_BAUD_RATE);
-    
-    dbg_printf(LOG, "*** HELLO MESSAGE *** \n %s", (char *)&hello_msg[6]);
     setupDefaultWiFiConfig();
     setupDefaultBleConfig();
     BLE& _ble = BLE::Instance();
@@ -419,20 +235,13 @@
         dbg_printf(LOG, "Filesystem creation failed, will use memory storage\r\n");
     }
 #endif
-    print_memory_info();
     dbg_printf(LOG, "\r\n PERIPHERAL \r\n\r\n");
     peripheral = new SMDevicePeripheral(_ble, queue, peer_address, ble_config);
-    print_memory_info();
 
     peripheral->run();
     btle_thread.start(callback(&queue, &EventQueue::dispatch_forever));
-    print_memory_info();
-    printWaitAbortKeyPress(PAUSE_SECONDS_BLE); // give BLE time to settle
-    //peripheral->stopAdvertising();
 
-#ifndef DISABLE_WIFI // comment out wifi part
     int start = Kernel::get_ms_count();
-#ifdef DISABLE_WIFI_DEMO
     network = WiFiInterface::get_default_instance();
     if (!network) {
         dbg_printf(LOG, "ERROR: No WiFiInterface found.\n");
@@ -444,96 +253,14 @@
                                   &aT2WiFiDatamPool, &aT2WiFiDataQueue,
                                   &wiFi2ATDatamPool, &wiFi2ATDataQueue
                                   );
-#else
-    NetworkInterface* network = connect_to_default_network_interface();
-    int stop = Kernel::get_ms_count();
-    dbg_printf(LOG, "\n The Wifi Network scan took %d ms or %4.1f seconds\n", (stop - start), (float)((stop - start)/1000.0));
-    // run on separate thread;
-    wifi_evt_thread.start(callback(wifi_demo, network));
-    wifi_evt_thread.join(); 
-    network->disconnect(); 
-    delete network;
-    dbg_printf(LOG, "\n Wifi-Demo completed - restarting BLE  \n\n");
-#endif /// endif DISABLE_WIFI_DEMO
-
-#else
-    dbg_printf(LOG, "\n Wifi Demo disabled so just waiting it out...  \n\n");
-    printWait(2); // lets wait for a minute before turning BLE back on
-    dbg_printf(LOG, "\n ++++++ restarting BLE ++++++ \n\n");
-#endif  /// endif DISABLE_WIFI
-    printWaitAbortKeyPress(PAUSE_SECONDS);
-    //peripheral->startAdvertising();
-#ifdef ENABLE_UART_BACKGRND_DEMO
-    for(int i=0;i<255;i++)
-    {
-        device->putc(i);
-    }
-    reportGapState();
-    dbg_printf(LOG, "\n\n\nEnter # of expected bytes: ");
-    ReadUartBytes(RxBuffer, RX_BUFFER_LEN, 4, true);
-    uint8_t rxLen = (uint8_t) (100*(RxBuffer[0]-'0') + 10*(RxBuffer[1]-'0') + (RxBuffer[2]-'0')) %256;
-    dbg_printf(LOG, "\n\nExpected # of Received Bytes = %d\n", rxLen);
-    BackGndUartRead(RxBuffer, RX_BUFFER_LEN, (int) rxLen);
-
-    dbg_printf(LOG, "\n Waiting for 5 seconds ");
-    printWait(5);
-    dbg_printf(LOG, "\n Waiting finished!!!\n Now waiting for expected bytes to be received \n\n");
-    while(UartBusy){
-        wait(0.1);
-    }
-#endif 
-
-    dbg_printf(LOG, "\r\n++++++ Press key for Wifi demo test ++++++ \r\n");
-    printWaitAbortKeyPress(PAUSE_SECONDS);
-#ifndef SKIP_WIFI_SCAN_DEMO
-    dbg_printf(LOG, "\r\n++++++ Test WiFi Manager Network Scan ++++++ \r\n");
-    int count;
-    count = wiFiManager->scanNetworks();
-    if (count <= 0) {
-        dbg_printf(LOG, "scan() failed with return value: %d\n", count);
-    }
-    else {
-        dbg_printf(LOG, "\r\n++++++ Test WiFi Scan found %d networks ++++++ \r\n ++++ SUCCESS ++++\r\n", count);
-    }
-#endif    
-
-#ifndef SKIP_WIFI_CONNECT_DEMO
-    dbg_printf(LOG, "\r\n++++++ Test WiFi Manager Network connect ++++++ \r\n");
-    nsapi_error_t werror;
-    werror = wiFiManager->connect();
-    if (werror < 0) {
-        dbg_printf(LOG, "connect() failed with return value: %d\n", werror);
-    }
-    else {
-        dbg_printf(LOG, "\r\n++++++ Test WiFi connect SUCCESSFUL ++++++ \r\n");
-    }
-    if(!werror) // connect successful - test dicsonnection
-    {
-        dbg_printf(LOG, "\r\n++++++ Test WiFi Manager Network disconnect ++++++ \r\n");
-        werror = wiFiManager->disconnect();
-        if (werror) {
-            dbg_printf(LOG, "disconnect() failed with return value: %d\n", werror);
-        }
-        else {
-            dbg_printf(LOG, "\r\n++++++ Test WiFi disconnect SUCCESSFUL ++++++ \r\n");
-        }
-    }
-#endif    
-    //wiFiManager->runMain();
-    dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
-    dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
     dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
     dbg_printf(LOG, "\r\n++++++ Test WiFi Manager Network scan from thread ++++++ \r\n");
     dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
-    dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
-    dbg_printf(LOG, "\r\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++ \r\n");
     wifi_thread.start(callback(wiFiManager, &WiFiManager::runMain));
     dbg_printf(LOG, "\r\n after starting wifi thread \r\n");
-    print_memory_info();
-    // dispatch event queue on event thread
-    dbg_printf(LOG, "\r\n [MAIN THREAD]  Thread Id = %X\r\n", (uint32_t)ThisThread::get_id());
-    dbg_printf(LOG, "\r\n [EVENT THREAD]  Thread Id = %X\r\n", (uint32_t)wifi_evt_thread.get_id());
+    // dispatch wifi event queue on event thread
     wifi_evt_thread.start(callback(&eventQueue_wifi, &EventQueue::dispatch_forever));
+    // dispatch atcmd event queue on event thread
     atcmd_evt_thread.start(callback(&eventQueue_atcmd, &EventQueue::dispatch_forever));
     dbg_printf(LOG, "\r\n++++++ Starting ATCmdmanager ++++++ \r\n");
     ATCmdManager *aTCmdManager = new ATCmdManager(USBTX, USBRX, peripheral, 
@@ -543,23 +270,13 @@
                                                 &aT2WiFiDatamPool, &aT2WiFiDataQueue,
                                                 &wiFi2ATDatamPool, &wiFi2ATDataQueue,
                                                 false);
-    //aTCmdManager->runMain();
     atcmd_thread.start(callback(aTCmdManager, &ATCmdManager::runMain));
     dbg_printf(LOG, "\r\n after starting atcmd thread \r\n");
     print_memory_info();
-    //SCB->SHCSR |= 0x00070000;//Enable fault handler.
-    //wiFiManager->runMain();
     while(1)
     {
         wait(0.1);
     }
-    //performFreeMemoryCheck();
-
-    //eventQueue.dispatch_forever();
-    //t.start(callback(&eventQueue, &EventQueue::dispatch_forever));
-    //eventQueue2.dispatch_forever();
-
-    return 0;
 }
 
 #endif
--- a/source/main.cpp	Fri May 10 13:45:50 2019 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/* mbed Microcontroller Library
- * Copyright (c) 2006-2013 ARM Limited
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#ifdef OBSOLETE_MAIN
-#include <events/mbed_events.h>
-#include <mbed.h>
-#include "ble/BLE.h"
-#include "LEDService.h"
-#include "ble/services/UARTService.h"
-
-UARTService *uart;
-
-DigitalOut alivenessLED(LED1, 0);
-DigitalOut actuatedLED(LED2, 0);
-RawSerial pc(USBTX, USBRX); // tx, rx
-const static char     DEVICE_NAME[] = "BLE-UART";
-static const uint16_t uuid16_list[] = {LEDService::LED_SERVICE_UUID};
-#define BUFFER_LEN 256
-#define TX_BUFFER_LEN 4*256
-#define RX_BUFFER_LEN 4*256
-char buffer[BUFFER_LEN];
-uint8_t TxBuffer[TX_BUFFER_LEN];
-uint8_t RxBuffer[RX_BUFFER_LEN];
-static EventQueue eventQueue(/* event count */ 10 * EVENTS_EVENT_SIZE);
-
-LEDService *ledServicePtr;
-
-void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
-{
-    (void) params;
-    BLE::Instance().gap().startAdvertising();
-}
-
-void blinkCallback(void)
-{
-    alivenessLED = !alivenessLED; /* Do blinky on LED1 to indicate system aliveness. */
-}
-
-void EchoBleUartReceived()
-{
-    uart->writeString(buffer);
-    uart->writeString("\n");    //flushes uart output buffer and sends data    
-}
-
-
-/**
- * This callback allows the LEDService to receive updates to the ledState Characteristic.
- *
- * @param[in] params
- *     Information about the characterisitc being updated.
- */
-void onDataWrittenCallback(const GattWriteCallbackParams *params) {
-    if ((params->handle == ledServicePtr->getValueHandle()) && (params->len == 1)) {
-        actuatedLED = *(params->data);
-    }
-    else if ((uart != NULL) && (params->handle == uart->getTXCharacteristicHandle())) {
-        uint16_t bytesRead = params->len;
-        
-        pc.printf("received %u bytes\n\r ", bytesRead);
-        
-        if(bytesRead >= 255){
-            pc.printf("Overflow command %u n\r ", bytesRead);
-            bytesRead = 255;
-        }
-        
-        unsigned index = 0;
-        for (; index < bytesRead; index++) {
-            buffer[index] = params->data[index];
-        }
-        
-        buffer[index++] = 0;
-        
-        pc.printf("Data : %s ",buffer);
-        pc.printf("\r\n");
-        eventQueue.call(EchoBleUartReceived);
-
-    }
-}
-
-
-/**
- * This function is called when the ble initialization process has failled
- */
-void onBleInitError(BLE &ble, ble_error_t error)
-{
-    /* Initialization error handling should go here */
-}
-
-void printMacAddress()
-{
-    /* Print out device MAC address to the console*/
-    Gap::AddressType_t addr_type;
-    Gap::Address_t address;
-    BLE::Instance().gap().getAddress(&addr_type, address);
-    pc.printf("DEVICE MAC ADDRESS: ");
-    for (int i = 5; i >= 1; i--){
-        pc.printf("%02x:", address[i]);
-    }
-    pc.printf("%02x\r\n", address[0]);
-}
-
-/**
- * Callback triggered when the ble initialization process has finished
- */
-void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
-{
-    BLE&        ble   = params->ble;
-    ble_error_t error = params->error;
-    if (error != BLE_ERROR_NONE) {
-        /* In case of error, forward the error handling to onBleInitError */
-        onBleInitError(ble, error);
-        return;
-    }
-
-    /* Ensure that it is the default instance of BLE */
-    if(ble.getInstanceID() != BLE::DEFAULT_INSTANCE) {
-        return;
-    }
-
-    ble.gap().onDisconnection(disconnectionCallback);
-    ble.gattServer().onDataWritten(onDataWrittenCallback);
-
-    bool initialValueForLEDCharacteristic = false;
-    ledServicePtr = new LEDService(ble, initialValueForLEDCharacteristic);
-    /* Setup primary service */
-    uart = new UARTService(ble);
-
-    /* setup security */
-    error = ble.securityManager().init();
-    if(error != BLE_ERROR_NONE)
-    {
-        pc.printf("\nBLE Security manager initialization failed!!\n");
-    }
-    /* setup advertising */
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
-    //ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
-    /* set up the services that can be discovered */
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,(const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
-    ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
-    ble.gap().setAdvertisingInterval(1000); /* 1000ms. */
-    ble.gap().startAdvertising();
-
-    printMacAddress();
-}
-
-void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) {
-    BLE &ble = BLE::Instance();
-    eventQueue.call(Callback<void()>(&ble, &BLE::processEvents));
-}
-
-static int uartExpectedRcvCount = 0;
-static int uartCharRcvCount = 0;
-static bool UartBusy = false;
-int WriteUartBytes(const uint8_t * txBuffer, size_t bufSize, int txLen)
-{
-    if(txLen > bufSize)
-    {
-        txLen = bufSize;
-    }
-    for(int i=0;i<txLen;i++)
-    {
-        pc.putc(txBuffer[i]);
-    }
-    // return number of bytes written to UART
-    return txLen;
-}
-
-void UartRxcallback_ex() {
-    if(uartCharRcvCount >= uartExpectedRcvCount)
-    {
-        int x = pc.getc();
-        return;
-    }
-    if(uartCharRcvCount == 0)
-    {
-        pc.printf("\nFirst Call to UART attach callback!!\n");
-    }
-    // Note: you need to actually read from the serial to clear the RX interrupt
-    RxBuffer[uartCharRcvCount] = (uint8_t) pc.getc();
-    uartCharRcvCount++;
-    if(uartCharRcvCount >= uartExpectedRcvCount)
-    {
-        alivenessLED = !alivenessLED; /* Do blinky on LED1 to indicate system aliveness. */
-        pc.printf("\nNumber of Received Bytes = %d\n\n", uartCharRcvCount);
-        pc.printf("--- Writing back received bytes --- \n");
-        int n;
-        n = WriteUartBytes(RxBuffer, TX_BUFFER_LEN, uartCharRcvCount);
-        UartBusy = false;
-    }
-}
-
-void BackGndUartRead(uint8_t * rxBuffer, size_t bufSize, int rxLen)
-{
-    UartBusy = true;
-    pc.printf("Setting up background UART read -  rxLen = %d\n", rxLen);
-    uartCharRcvCount = 0;
-    if(rxLen > bufSize)
-    {
-        rxLen = bufSize;
-    }
-    uartExpectedRcvCount = rxLen;
-    pc.attach(&UartRxcallback_ex);
-    pc.printf("\nBackground UART read setup completed\n\n");
-    //for(int i=0;i<rxLen;i++)
-    //{
-    //    rxBuffer[i] = (uint8_t) pc.getc();
-    //}
-    // return number of bytes written to UART
-    //return rxLen;
-}
-
-int ReadUartBytes(uint8_t * rxBuffer, size_t bufSize, int rxLen, bool echo)
-{
-    UartBusy = true;
-    if(rxLen > bufSize)
-    {
-        rxLen = bufSize;
-    }
-    for(int i=0;i<rxLen;i++)
-    {
-        rxBuffer[i] = (uint8_t) pc.getc();
-        if(echo)pc.putc(rxBuffer[i]);
-    }
-    UartBusy = false;
-    //return number of bytes written to UART
-    return rxLen;
-}
-
-
-void checkUartReceive()
-{
-    //pc.printf("Hello World!\n\r");
-    char cbuf[100];
-    int rxCnt=0;
-    while(pc.readable()) {
-        //pc.printf("uartCharRcvCount = %d\n\r", uartCharRcvCount++);
-        cbuf[rxCnt++] = pc.getc();
-        //pc.putc(pc.getc() + 1); // echo input back to terminal
-    }
-    cbuf[rxCnt] = NULL;
-    if(rxCnt > 0)
-    {
-        pc.printf("received %d chars\n", rxCnt);
-        pc.printf("%s\n", cbuf);
-    }
-    
-}
-uint64_t lastTime = 0;
-uint64_t now = 0;
-uint32_t callCount = 0;
-void HelloUart()
-{
-    //if(UartBusy)return;
-    // 64-bit time doesn't wrap for half a billion years, at least
-    lastTime = now;
-    now = Kernel::get_ms_count();
-    callCount++;
-    pc.printf("\nHello : %d secs elapsed : CallCount = %d \n", uint32_t(now - lastTime), callCount);
-}
-
-Thread t;
-int main()
-{
-    pc.baud(115200);
-    eventQueue.call_every(500, blinkCallback);
-    eventQueue.call_every(60000, HelloUart);
-    //eventQueue.call_every(1000, checkUartReceive);
-
-    BLE &ble = BLE::Instance();
-    ble.onEventsToProcess(scheduleBleEventsProcessing);
-    ble.init(bleInitComplete);
-    for(int i=0;i<255;i++)
-    {
-        pc.putc(i);
-    }
-    int n;
-    //ReadUartBytes(RxBuffer, RX_BUFFER_LEN, 4);    
-    pc.printf("\n\n\nEnter # of expected bytes: ");
-    n = ReadUartBytes(RxBuffer, RX_BUFFER_LEN, 4, true);
-    int rxLen = (int) 100*(RxBuffer[0]-'0') + 10*(RxBuffer[1]-'0') + (RxBuffer[0]-'0');
-    pc.printf("\n\nExpected # of Received Bytes = %d\n", rxLen);
-    BackGndUartRead(RxBuffer, RX_BUFFER_LEN, rxLen);
-    //pc.printf("--- Writing back received data --- \n\n");
-    //n = WriteUartBytes(RxBuffer, TX_BUFFER_LEN, rxLen);
-    //pc.write("\n\ntesting Serial Write\n", 40); //, checkUartReceive, SERIAL_EVENT_TX_COMPLETE);
-    //eventQueue.dispatch_forever();
-    t.start(callback(&eventQueue, &EventQueue::dispatch_forever));
-    return 0;
-}
-#endif
\ No newline at end of file