Dopasowany do naszego firmware'u

Dependencies:   ArduinoAPI

Fork of WeeESP8266 by ITEAD STUDIO

Revision:
10:002615561b0b
Parent:
9:dec2cf52b744
Child:
11:e9bee504024d
--- a/ESP8266.cpp	Sat Feb 07 05:24:08 2015 +0000
+++ b/ESP8266.cpp	Sat Feb 07 06:05:56 2015 +0000
@@ -25,7 +25,6 @@
 {
     m_puart->begin(9600);
     m_puart->flush();
-    m_puart->setTimeout(1000);
     logDebug("Create Instance ok");
 }
 
@@ -61,26 +60,53 @@
 
 bool ESP8266::setOprToStation(void)
 {
-    if (sATCWMODE(1) && restart()) {
+    uint8_t mode;
+    if (!qATCWMODE(&mode)) {
+        return false;
+    }
+    if (mode == 1) {
         return true;
+    } else {
+        if (sATCWMODE(1) && restart()) {
+            return true;
+        } else {
+            return false;
+        }
     }
-    return false;
 }
 
 bool ESP8266::setOprToSoftAP(void)
 {
-    if (sATCWMODE(2) && restart()) {
+    uint8_t mode;
+    if (!qATCWMODE(&mode)) {
+        return false;
+    }
+    if (mode == 2) {
         return true;
+    } else {
+        if (sATCWMODE(2) && restart()) {
+            return true;
+        } else {
+            return false;
+        }
     }
-    return false;
 }
 
 bool ESP8266::setOprToStationSoftAP(void)
 {
-    if (sATCWMODE(3) && restart()) {
+    uint8_t mode;
+    if (!qATCWMODE(&mode)) {
+        return false;
+    }
+    if (mode == 3) {
         return true;
+    } else {
+        if (sATCWMODE(3) && restart()) {
+            return true;
+        } else {
+            return false;
+        }
     }
-    return false;
 }
 
 String ESP8266::getAPList(void)
@@ -236,8 +262,8 @@
     int32_t index_PIPDcomma = -1;
     int32_t index_colon = -1; /* : */
     int32_t index_comma = -1; /* , */
+    int32_t len;
     int8_t id;
-    int32_t len;
     bool has_data = false;
     
     unsigned long start = millis();
@@ -405,6 +431,23 @@
     return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", version); 
 }
 
+bool ESP8266::qATCWMODE(uint8_t *mode) 
+{
+    String str_mode;
+    bool ret;
+    if (!mode) {
+        return false;
+    }
+    m_puart->flush();
+    m_puart->println("AT+CWMODE?");
+    ret = recvFindAndFilter("OK", "+CWMODE:", "\r\n\r\nOK", str_mode); 
+    if (ret) {
+        *mode = (uint8_t)str_mode.toInt();
+        return true;
+    } else {
+        return false;
+    }
+}
 
 bool ESP8266::sATCWMODE(uint8_t mode)
 {