Dopasowany do naszego firmware'u
Dependencies: ArduinoAPI
Fork of WeeESP8266 by
Diff: ESP8266.cpp
- Revision:
- 6:18eb2d9fb2ac
- Parent:
- 5:5fa655d7212c
- Child:
- 7:d54995c9e1d4
--- a/ESP8266.cpp Fri Feb 06 09:26:37 2015 +0000 +++ b/ESP8266.cpp Fri Feb 06 12:25:40 2015 +0000 @@ -54,7 +54,9 @@ String ESP8266::getVersion(void) { - return eATGMR(); + String version; + eATGMR(version); + return version; } bool ESP8266::setOprToStation(void) @@ -207,7 +209,7 @@ } -String ESP8266::recvFind(String target, uint32_t timeout) +String ESP8266::recvString(String target, uint32_t timeout) { String data; char a; @@ -224,8 +226,7 @@ return data; } - -String ESP8266::recvFind(String target1, String target2, uint32_t timeout) +String ESP8266::recvString(String target1, String target2, uint32_t timeout) { String data; char a; @@ -244,7 +245,7 @@ return data; } -String ESP8266::recvFind(String target1, String target2, String target3, uint32_t timeout) +String ESP8266::recvString(String target1, String target2, String target3, uint32_t timeout) { String data; char a; @@ -265,46 +266,52 @@ return data; } +bool ESP8266::recvFind(String target, uint32_t timeout) +{ + String data_tmp; + data_tmp = recvString(target, timeout); + if (data_tmp.indexOf(target) != -1) { + return true; + } + return false; +} + +bool ESP8266::recvFindAndFilter(String target, String begin, String end, String &data, uint32_t timeout) +{ + String data_tmp; + data_tmp = recvString(target, timeout); + if (data_tmp.indexOf(target) != -1) { + int32_t index1 = data_tmp.indexOf(begin); + int32_t index2 = data_tmp.indexOf(end); + if (index1 != -1 && index2 != -1) { + index1 += begin.length(); + data = data_tmp.substring(index1, index2); + return true; + } + } + data = ""; + return false; +} bool ESP8266::eAT(void) { - m_puart->setTimeout(100); m_puart->flush(); m_puart->println("AT"); - if (m_puart->find("OK")) { - return true; - } else { - return false; - } + return recvFind("OK"); } bool ESP8266::eATRST(void) { - m_puart->setTimeout(100); m_puart->flush(); m_puart->println("AT+RST"); - if (m_puart->find("OK")) { - return true; - } else { - return false; - } + return recvFind("OK"); } -String ESP8266::eATGMR(void) +bool ESP8266::eATGMR(String &version) { - String data; m_puart->flush(); m_puart->println("AT+GMR"); - data = recvFind("OK", "ERROR"); - if (data.indexOf("OK") != -1) { - int32_t index1 = data.indexOf("\r\r\n"); - int32_t index2 = data.indexOf("\r\n\r\nOK"); - if (index1 != -1 && index2 != -1) { - index1 += strlen("\r\r\n"); - return data.substring(index1, index2); - } - } - return ""; + return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", version); } @@ -314,10 +321,141 @@ m_puart->flush(); m_puart->print("AT+CWMODE="); m_puart->println(mode); - data = recvFind("OK"); + return recvFind("OK"); +} + +bool ESP8266::sATCWJAP(String ssid, String pwd) +{ + String data; + m_puart->flush(); + m_puart->print("AT+CWJAP=\""); + m_puart->print(ssid); + m_puart->print("\",\""); + m_puart->print(pwd); + m_puart->println("\""); + + data = recvString("OK", "FAIL", 10000); + if (data.indexOf("OK") != -1) { + return true; + } + return false; +} + +bool ESP8266::eATCWLAP(String &list) +{ + String data; + m_puart->flush(); + m_puart->println("AT+CWLAP"); + return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list, 10000); +} + +bool ESP8266::eATCWQAP(void) +{ + String data; + m_puart->flush(); + m_puart->println("AT+CWQAP"); + return recvFind("OK"); +} + +bool ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn) +{ + String data; + m_puart->flush(); + m_puart->print("AT+CWSAP=\""); + m_puart->print(ssid); + m_puart->print("\",\""); + m_puart->print(pwd); + m_puart->print("\","); + m_puart->print(chl); + m_puart->print(","); + m_puart->println(ecn); + + data = recvString("OK", "ERROR", 5000); if (data.indexOf("OK") != -1) { return true; } return false; } +bool ESP8266::eATCWLIF(String &list) +{ + String data; + m_puart->flush(); + m_puart->println("AT+CWLIF"); + return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); +} +bool ESP8266::eATCIPSTATUS(String &list) +{ + String data; + m_puart->flush(); + m_puart->println("AT+CIPSTATUS"); + return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); +} +bool ESP8266::sATCIPSTARTSingle(String type, String addr, uint32_t port) +{ + String data; + m_puart->flush(); + m_puart->print("AT+CIPSTART=\""); + m_puart->print(type); + m_puart->print("\",\""); + m_puart->print(addr); + m_puart->print("\","); + m_puart->println(port); + + data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000); + if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) { + return true; + } + return false; +} +bool ESP8266::sATCIPSTARTMultiple(uint8_t mux_id, String type, String addr, uint32_t port) +{ + String data; + m_puart->flush(); + m_puart->print("AT+CIPSTART="); + m_puart->print(mux_id); + m_puart->print(",\""); + m_puart->print(type); + m_puart->print("\",\""); + m_puart->print(addr); + m_puart->print("\","); + m_puart->println(port); + + data = recvString("OK", "ERROR", "ALREADY CONNECT", 10000); + if (data.indexOf("OK") != -1 || data.indexOf("ALREADY CONNECT") != -1) { + return true; + } + return false; +} +bool ESP8266::sATCIPSENDSingle(uint8_t *buffer, uint32_t len) +{ + return false; +} +bool ESP8266::sATCIPSENDMultiple(uint8_t mux_id, uint8_t *buffer, uint32_t len) +{ + return false; +} +bool ESP8266::sATCIPCLOSEMulitple(uint8_t mux_id) +{ + return false; +} +bool ESP8266::eATCIPCLOSESingle(void) +{ + return false; +} +bool ESP8266::eATCIFSR(String &list) +{ + return false; +} +bool ESP8266::sATCIPMUX(uint8_t mode) +{ + return false; +} +bool ESP8266::sATCIPSERVER(uint8_t mode, uint32_t port) +{ + return false; +} +bool ESP8266::sATCIPSTO(uint32_t timeout) +{ + return false; +}