bool ESP8266::sATCIPSTO(uint32_t timeout) { rx_empty(); m_puart->print("AT+CIPSTO="); m_puart->println(timeout); return recvFind("OK"); }
bool ESP8266::eATCIPAP(String ip,uint8_t pattern) { rx_empty(); if (!pattern) { return false; } switch(pattern){ case 1 : m_puart->print(F("AT+CIPAP_DEF=")); break; case 2: m_puart->print(F("AT+CIPAP_CUR=")); break; default: m_puart->print(F("AT+CIPAP=")); } m_puart->print(F("\"")); m_puart->print(ip); m_puart->println(F("\"")); return recvFind("OK"); }
bool ESP8266::eATCWQAP(void) { String data; rx_empty(); m_puart->println("AT+CWQAP"); return recvFind("OK"); }
bool ESP8266::eATCWLIF(String &list) { String data; rx_empty(); m_puart->println("AT+CWLIF"); return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); }
bool ESP8266::sATCWSAP(String ssid, String pwd, uint8_t chl, uint8_t ecn,uint8_t pattern) { String data; if (!pattern) { return false; } rx_empty(); switch(pattern){ case 1 : m_puart->print(F("AT+CWSAP_DEF=\"")); break; case 2: m_puart->print(F("AT+CWSAP_CUR=\"")); break; default: m_puart->print(F("AT+CWSAP=\"")); } m_puart->print(ssid); m_puart->print(F("\",\"")); m_puart->print(pwd); m_puart->print(F("\",")); m_puart->print(chl); m_puart->print(F(",")); m_puart->println(ecn); data = recvString("OK", "ERROR", 5000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCWDHCP(uint8_t mode, uint8_t en, uint8_t pattern) { String data; if (!pattern) { return false; } rx_empty(); switch(pattern){ case 1 : m_puart->print(F("AT+CWDHCP_DEF=")); break; case 2: m_puart->print(F("AT+CWDHCP_CUR=")); break; default: m_puart->print(F("AT+CWDHCP=")); } m_puart->print(mode); m_puart->print(F(",")); m_puart->println(en); data = recvString("OK", "ERROR", 2000); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCWMODE(uint8_t mode,uint8_t pattern) { if(!pattern){ return false; } String data; rx_empty(); switch(pattern) { case 1 : m_puart->print(F("AT+CWMODE_DEF=")); break; case 2: m_puart->print(F("AT+CWMODE_CUR=")); break; default: m_puart->print(F("AT+CWMODE=")); } m_puart->println(mode); data = recvString("OK", "no change"); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; }
bool ESP8266::qATCWJAP(String &ssid,uint8_t pattern) { bool ret; if (!pattern) { return false; } rx_empty(); switch(pattern) { case 1 : m_puart->println(F("AT+CWJAP_DEF?")); break; case 2: m_puart->println(F("AT+CWJAP_CUR?")); break; default: m_puart->println(F("AT+CWJAP?")); } ssid = recvString("OK", "No AP"); if (ssid.indexOf("OK") != -1 || ssid.indexOf("No AP") != -1) { return true; } return false; }
bool ESP8266::eATE(uint8_t mode) { rx_empty(); m_puart->print(F("ATE")); m_puart->println(mode); return recvFind("OK"); }
bool ESP8266::qATCWMODE(uint8_t *mode,uint8_t pattern) { String str_mode; bool ret; if (!mode||!pattern) { return false; } rx_empty(); switch(pattern) { case 1 : m_puart->println(F("AT+CWMODE_DEF?")); break; case 2: m_puart->println(F("AT+CWMODE_CUR?")); break; default: m_puart->println(F("AT+CWMODE?")); } ret = recvFindAndFilter("OK", ":", "\r\n\r\nOK", str_mode); if (ret) { *mode = (uint8_t)str_mode.toInt(); return true; } else { return false; } }
bool ESP8266::eATGSLP(uint32_t time) { rx_empty(); m_puart->print(F("AT+GSLP=")); m_puart->println(time); return recvFind("OK"); }
bool ESP8266::eATGMR(String &version) { rx_empty(); delay(3000); m_puart->println(F("AT+GMR")); return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", version,10000); }
bool ESP8266::eATCIPSTAIP(String ip,String gateway,String netmask,uint8_t pattern) { rx_empty(); if (!pattern) { return false; } switch(pattern){ case 1 : m_puart->print(F("AT+CIPSTA_DEF=")); break; case 2: m_puart->print(F("AT+CIPSTA_CUR=")); break; default: m_puart->print(F("AT+CIPSTA=")); } m_puart->print(F("\"")); m_puart->print(ip); m_puart->print(F("\",\"")); m_puart->print(gateway); m_puart->print(F("\",\"")); m_puart->print(netmask); m_puart->println(F("\"")); return recvFind("OK"); }
bool ESP8266::sATCIPSENDMultiple(uint8_t mux_id, String &str) { rx_empty(); m_puart->print("AT+CIPSEND="); m_puart->print(mux_id); m_puart->print(","); m_puart->println(str.length()); if (recvFind(">", 5000)) { rx_empty(); for (uint32_t i = 0; i < str.length(); i++) { m_puart->write(str.charAt(i)); } return recvFind("SEND OK", 10000); } return false; }
bool ESP8266::eCWSTARTSMART(uint8_t type) { rx_empty(); m_puart->print(F("AT+CWSTARTSMART=")); m_puart->println(type); return recvFind("OK"); }
void ESP8266::begin(HardwareSerial &uart, uint32_t baud) { m_puart = &uart; m_baud = baud; m_puart->begin(baud); rx_empty(); }
bool ESP8266::sATCIPSENDMultiple(uint8_t mux_id, const uint8_t *buffer, uint32_t len) { rx_empty(); m_puart->print(F("AT+CIPSEND=")); m_puart->print(mux_id); m_puart->print(F(",")); m_puart->println(len); if (recvFind(">", 5000)) { rx_empty(); for (uint32_t i = 0; i < len; i++) { m_puart->write(buffer[i]); } return recvFind("SEND OK", 10000); } return false; }
bool ESP8266::eATCIPSTATUS(String &list) { String data; delay(100); rx_empty(); sendAT("CIPSTATUS"); return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); }
///for releaseTCP (sync) bool ESP8266::eATCIPCLOSESingle(void) { //state = STATE_releaseTCP; rx_empty(); m_puart->println("AT+CIPCLOSE"); return recvFind("OK", 5000); }
///for send (sync) bool ESP8266::sATCIPSENDSingle(const uint8_t *buffer, uint32_t len) { ///state = STATE_send; rx_empty(); m_puart->print("AT+CIPSEND="); m_puart->println(len); if (recvFind(KEYWORD_CURSOR, 5000, KEYWORD_SEND_ERROR)) { rx_empty(); for (uint32_t i = 0; i < len; i++) { m_puart->write(buffer[i]); } return recvFind(KEYWORD_SEND_OK, 10000, KEYWORD_SEND_ERROR); } return false; }
bool ESP8266::eATCIPSTATUS(String &list) { String data; delay(100); rx_empty(); m_puart->println(F("AT+CIPSTATUS")); return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); }
bool ESP8266::eATPING(String ip) { rx_empty(); m_puart->print(F("AT+PING=")); m_puart->print(F("\"")); m_puart->print(ip); m_puart->println(F("\"")); return recvFind("OK",2000); }
bool ESP8266::sATCIPSERVER(uint8_t mode, uint32_t port) { String data; if (mode) { rx_empty(); printAT("CIPSERVER=1,"); m_puart->println(port); data = recvString("OK", "no change"); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; } else { rx_empty(); sendAT("CIPSERVER=0"); return recvFind("\r\r\n"); } }
bool ESP8266::sATCIPSENDMultiple(uint8_t mux_id, const uint8_t *buffer, uint32_t len) { rx_empty(); printAT("CIPSEND="); m_puart->print(mux_id); m_puart->print(","); m_puart->println(len); if (recvFind(">", 5000)) { rx_empty(); for (uint32_t i = 0; i < len; i++) { #if LOG_OUTPUT_DEBUG Serial.write(buffer[i]); #endif m_puart->write(buffer[i]); } return recvFind("SEND OK", 10000); } return false; }
///for getIPStatus (sync) bool ESP8266::eATCIPSTATUS(String &list) { //state = STATE_getIPStatus; String data; delay(100); rx_empty(); m_puart->println("AT+CIPSTATUS"); return recvFindAndFilter("OK", "\r\r\n", "\r\n\r\nOK", list); }
///for leaveAP (sync) bool ESP8266::eATCWQAP(void) { //state = STATE_leaveAP; String data; rx_empty(); m_puart->println("AT+CWQAP"); return recvFind("OK"); }
bool ESP8266::qCWAUTOCONN() { String str_mode; rx_empty(); sendAT("CWAUTOCONN?"); bool ret = recvFindAndFilter("OK", "+CWAUTOCONN:", "\r\n\r\nOK", str_mode); if (ret) { return (uint8_t) str_mode.toInt(); } else { return false; } }
bool ESP8266::eATCWAUTOCONN(uint8_t en) { rx_empty(); if(en>1||en<0){ return false; } m_puart->print(F("AT+CWAUTOCONN=")); m_puart->println(en); return recvFind("OK"); }
bool ESP8266::sATCIPMUX(uint8_t mode) { String data; rx_empty(); printAT("CIPMUX="); m_puart->println(mode); data = recvString("OK", "Link is builded"); if (data.indexOf("OK") != -1) { return true; } return false; }
bool ESP8266::sATCIPCLOSEMulitple(uint8_t mux_id) { String data; rx_empty(); printAT("CIPCLOSE="); m_puart->println(mux_id); data = recvString("OK", "link is not", 5000); if (data.indexOf("OK") != -1 || data.indexOf("link is not") != -1) { return true; } return false; }