Provide an easy-to-use way to manipulate ESP8266.
Fork of WeeESP8266 by
Diff: ESP8266.cpp
- Revision:
- 10:002615561b0b
- Parent:
- 9:dec2cf52b744
- Child:
- 11:e9bee504024d
diff -r dec2cf52b744 -r 002615561b0b ESP8266.cpp --- 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) {