For test

Dependencies:   mbed

Revision:
27:dc7ad070c5b1
Parent:
23:4cec7b9e3715
Child:
28:c25aff31dcc5
--- a/ESP8266.cpp	Wed Feb 04 10:30:44 2015 +0000
+++ b/ESP8266.cpp	Wed Feb 04 11:30:09 2015 +0000
@@ -382,32 +382,38 @@
 ***************************************************************************/
 String ESP8266::showJAP(void)
 {
+    bool ret = false;
     m_esp_uart.flush();
     m_esp_uart.println("AT+CWJAP?");  
-      String data;
-      unsigned long start;
+    
+    String data;
+    unsigned long start;
     start = millis();
-    while (millis()-start<3000) {
-       if(m_esp_uart.available()>0)
-       {
-       char a =m_esp_uart.readChr();
-       data=data+a;
-       }
-       if (data.indexOf("OK")!=-1 || data.indexOf("ERROR")!=-1 )
-       {
-           break;
-       }
+    while (millis()-start < 3000) {
+        while(m_esp_uart.available() > 0) {
+            char a = m_esp_uart.readChr();
+            data += a;
+            //printf("%c", a);
+        }      
+        if (data.indexOf("OK") != -1) {
+            ret = true;
+            break;
+        } else if (data.indexOf("ERROR") != -1) {
+            ret = false;
+            break;
+        }     
     }
-    
-      char head[4] = {0x0D,0x0A};   
-      char tail[7] = {0x0D,0x0A,0x0D,0x0A};        
-      data.replace("AT+CWJAP?","");
-      data.replace("+CWJAP","AP");
-      data.replace("OK","");
-      data.replace(tail,"");
-      data.replace(head,"");
-      
-          return data;
+    if (ret) {
+        int index1 = data.indexOf(":\"");
+        int index2 = data.indexOf("\"\r\n");
+        if (index1 != -1 && index2 != -1) {
+            return data.substring(index1 + 2, index2);
+        } else {
+            return "not found";
+        }
+    } else {
+        return "null";
+    }  
 }
 
 
@@ -929,47 +935,40 @@
 
 }
 
-/*************************************************************************
-//show the current ip address
-        
-    return: string of ip address
-
-***************************************************************************/
 String ESP8266::showIP(void)
 {
+    bool ret = false;
+    m_esp_uart.flush();
+    m_esp_uart.println("AT+CIFSR");  
+    
     String data;
     unsigned long start;
-    
-    for(int a=0; a<3;a++)
-    {
-    m_esp_uart.println("AT+CIFSR");  
     start = millis();
-    while (millis()-start<3000) {
-     while(m_esp_uart.available()>0)
-     {
-     char a =m_esp_uart.readChr();
-     data=data+a;
-     }
-     if (data.indexOf("AT+CIFSR")!=-1)
-     {
-         break;
-     }
+    while (millis()-start < 3000) {
+        while(m_esp_uart.available() > 0) {
+            char a = m_esp_uart.readChr();
+            data += a;
+        }
+        if (data.indexOf("OK") != -1) {
+            ret = true;
+            break;
+        } else if (data.indexOf("ERROR") != -1) {
+            ret = false;
+            break;
+        }
     }
-    if(data.indexOf(".") != -1)
-    {
-        break;
-    }
-    data = "";
-  }
-    
-    
-    char head[4] = {0x0D,0x0A};   
-    char tail[7] = {0x0D,0x0D,0x0A};        
-    data.replace("AT+CIFSR","");
-    data.replace(tail,"");
-    data.replace(head,"");
-  
-    return data;
+
+    if (ret) {
+        int index1 = data.indexOf("\r\n");
+        int index2 = data.indexOf("\r\n\r\nOK");
+        if (index1 != -1 && index2 != -1) {
+            return data.substring(index1 + strlen("\r\n"), index2);
+        } else {
+            return "not found";
+        }
+    } else {
+        return "null";
+    }  
 }
 
 /*************************************************************************