Simple detection for LE910-NA1 modules

Fork of MTS-Cellular by MultiTech

Revision:
54:a6c738bfc391
Parent:
52:2cb58398a4f9
Child:
56:43205bd2752a
--- a/Cellular/EasyIP.cpp	Mon Aug 11 16:27:27 2014 +0000
+++ b/Cellular/EasyIP.cpp	Mon Aug 11 19:54:54 2014 +0000
@@ -138,8 +138,12 @@
     }
     
     //Sends AT#SGACT=1,0 command
-    if (sendBasicCommand("AT#SGACT=1,0", 1000) == MTS_SUCCESS) {
-        logDebug("Successfully closed PPP Connection");
+    for (int y = 0; y < 5; y++) {
+        Code code = sendBasicCommand("AT#SGACT=1,0", 1000);
+        if (code == MTS_SUCCESS) {
+            logDebug("Successfully closed PPP Connection");
+            break;
+        }
     }
     
     /* Ensure PPP link is down, else ping commands will put radio in unknown state
@@ -377,7 +381,7 @@
         socketOpened = false;
     }
     
-    if(sendBasicCommand("AT#SH=1", 2000) != MTS_SUCCESS) {
+    if (sendBasicCommand("AT#SH=1", 2000) != MTS_SUCCESS) {
         logDebug("Failed to close socket connection");
     }
     
@@ -661,10 +665,10 @@
         if(size > 0) {
             result.append(tmp, size);
         }
-        if(result.find("OK") != std::string::npos) {
+        if(result.find("OK\r\n") != std::string::npos) {
             exitmode = true;
             done = true;
-        } else if(result.find("NO CARRIER") != std::string::npos) {
+        } else if(result.find("NO CARRIER\r\n") != std::string::npos) {
             socketOpened = false;
             exitmode = true;
             done = true;
@@ -679,6 +683,8 @@
         }
     } while (!done);
     
+    wait(0.1); //Without a slight wait time after receiving OK, radio would
+               //fail to correctly receive and respond to the next AT command
     return exitmode;
 }
 
@@ -710,7 +716,7 @@
     } else if(socketInfo == SOCKETCLOSED || socketInfo == SOCKETINCOMING) {
         status = false;
     } else {
-        logError("Could not determine socket status");
+        logError("Could not determine socket status[%d]",socketInfo);
         status = false;
     }