bool ESP8266::sATCIPSENDSingle(const uint8_t *buffer, uint32_t len) { rx_empty(); printAT("CIPSEND="); 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::sATCIPSENDSingleFromFlash(const uint8_t *buffer, uint32_t len) { rx_empty(); m_puart->print(F("AT+CIPSEND=")); m_puart->println(len); if (recvFind(">", 5000)) { rx_empty(); for (uint32_t i = 0; i < len; i++) { m_puart->write((char) pgm_read_byte(&buffer[i])); } return recvFind("SEND OK", 10000); } return false; }
bool ESP8266::sATCIPSENDSingle(String &str) { rx_empty(); m_puart->print("AT+CIPSEND="); 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::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::eCWSTARTSMART(uint8_t type) { rx_empty(); m_puart->print(F("AT+CWSTARTSMART=")); m_puart->println(type); return recvFind("OK"); }
bool ESP::sATCIPSTO(uint32_t timeout) { flush(); this->serial->print(F("AT+CIPSTO=")); this->serial->println(timeout); return recvFind(F("OK"), COMMAND_TIMEOUT); }
bool ESP8266::sATCIPSTO(uint32_t timeout) { rx_empty(); printAT("CIPSTO="); m_puart->println(timeout); return recvFind("OK"); }
bool ESP8266::eATGSLP(uint32_t time) { rx_empty(); m_puart->print(F("AT+GSLP=")); m_puart->println(time); return recvFind("OK"); }
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 ESP::eATCWQAP(void) { String data; flush(); this->serial->println(F("AT+CWQAP")); return recvFind(F("OK"),COMMAND_TIMEOUT); }
bool ESP8266::eATCIPSTAMAC(String mac,uint8_t pattern) { rx_empty(); if (!pattern) { return false; } switch(pattern){ case 1 : m_puart->print(F("AT+CIPSTAMAC_DEF=")); break; case 2: m_puart->print(F("AT+CIPSTAMAC_CUR=")); break; default: m_puart->print(F("AT+CIPSTAMAC=")); } m_puart->print(F("\"")); m_puart->print(mac); m_puart->println(F("\"")); return recvFind("OK"); }
bool ESP8266::eATSETUART(uint32_t baudrate,uint8_t pattern) { rx_empty(); if(pattern>3||pattern<1){ return false; } switch(pattern){ case 1: m_puart->print(F("AT+UART=")); break; case 2: m_puart->print(F("AT+UART_CUR=")); break; case 3: m_puart->print(F("AT+UART_DEF=")); break; } m_puart->print(baudrate); m_puart->print(F(",")); m_puart->print(8); m_puart->print(F(",")); m_puart->print(1); m_puart->print(F(",")); m_puart->print(0); m_puart->print(F(",")); m_puart->println(0); if(recvFind("OK",5000)){ return true; } else{ return false; } }
bool ESP8266::eATCWQAP(void) { String data; rx_empty(); m_puart->println(F("AT+CWQAP")); return recvFind("OK"); }
bool ESP8266::eATE(uint8_t mode) { rx_empty(); m_puart->print(F("ATE")); m_puart->println(mode); return recvFind("OK"); }
bool ESP8266::eATCWQAP(void) { String data; rx_empty(); sendAT("CWQAP"); return recvFind("OK"); }
///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 ESP::sATCIPSENDMultiple(uint8_t mux_id, const uint8_t *buffer, uint32_t len) { flush(); this->serial->print(F("AT+CIPSEND=")); this->serial->print(mux_id); //this->serial->print('0'); this->serial->print(F(",")); this->serial->println(len); if (recvFind(F(">"), FIND_TIMEOUT)) { flush(); for (uint32_t i = 0; i < len; i++) { this->serial->write(buffer[i]); } return recvFind(F("SEND OK"), FIND_OK_TIMEOUT); } return false; }
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); }
///for leaveAP (sync) bool ESP8266::eATCWQAP(void) { //state = STATE_leaveAP; String data; rx_empty(); m_puart->println("AT+CWQAP"); return recvFind("OK"); }
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; }
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::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 ESP::sATCIPSERVER(uint8_t mode, uint32_t port) { String data; if (mode) { flush(); this->serial->print(F("AT+CIPSERVER=1,")); this->serial->println(port); data = recvString(F("OK"), F("no change"), COMMAND_TIMEOUT); if (data.indexOf("OK") != -1 || data.indexOf("no change") != -1) { return true; } return false; } else { flush(); this->serial->println(F("AT+CIPSERVER=0")); return recvFind(F("\r\r\n"), COMMAND_TIMEOUT); } }
/** * \brief envia pacote de dados * \param mux_id > 0 envia o AT+HTTPDATA e os dados * \param mux_id == 0 somente dados * \param mux_id == -1 aguarda retorno de dados * \return 0=erro, 1=OK */ boolean sATCIPSENDMultiple(int mux_id, uint8_t tipo_buffer, uint8_t *buffer, boolean flag_flush) { int len; if (mux_id==-1) { return gprs.sendCommand(0); } //debugvar(freeMemory()); if (tipo_buffer == POINTER_CHAR_RAM) len=strlen((char*)buffer); else len=strlen_P((char*)buffer); if (!len) return true; /// rx_empty(); //if (bitRead(ccStatus,CC_DEBUG)) debugvar(freeMemory()); #if DEBUG >= 1 || HAS_BLUETOOTH >= 1 debugvar(len); uint8_t *b=buffer; for (uint16_t i = 0; i < len; i++) { if (tipo_buffer==POINTER_CHAR_PROGMEM) { SSdebug.write(pgm_read_byte(b++)); } else { SSdebug.write(*b++); } } // for SSdebug.write('\n'); #endif #ifdef GSM_CSTT // esp8266Flush(); SSwifi.print("AT+CIPSEND="); #if USE_MUX == 1 SSwifi.print(mux_id); SSwifi.print(","); #endif SSwifi.print(len); SSwifi.print("\r\n"); SSwifi.flush(); if (recvFind(">",6000)) { PGM_PRINT("+"); //esp8266Flush(); #if 0 if (tipo_buffer==POINTER_CHAR_PROGMEM) { #if 0 char *u; if (len < SERIAL_TX_BUFFER_SIZE-1 && (u=(char*)malloc(SERIAL_TX_BUFFER_SIZE))) { strcpy_P(u,(char*)buffer); SSwifi.print(u); SSwifi.flush(); free(u); } else #endif for (uint16_t i = 0; i < len; i++) { // SSdebug.write(pgm_read_byte(buffer)); SSwifi.write(pgm_read_byte(buffer++)); } }else { SSwifi.print((char*)buffer); } #else for (uint16_t i = 0; i < len; i++) { if (tipo_buffer==POINTER_CHAR_PROGMEM) { // SSdebug.write(pgm_read_byte(buffer)); SSwifi.write(pgm_read_byte(buffer++)); }else { // SSdebug.write(*buffer); SSwifi.write(*buffer++); } } #endif // ret=recvFind("SEND OK", 5000); PGM_PRINT("* "); SSwifi.write(0x1a); recvString(str_ret, "SEND OK", "busy","link is", 10000,flag_flush); #if DEBUG > 0 //if (bitRead(ccStatus,CC_DEBUG)) debugln(str_ret); #endif if (!strncmp(str_ret,"SEND OK",7)) { // PGM_PRINTLN("SOK"); //delay(100); //SSwifi.flush(); //eATCIPSTATUS(); return true; } if (!strncmp(str_ret,"link",4)) { sATCIPCLOSEMulitple(mux_id); } } return false; #else if (mux_id>0) { sprintf_P(gprs.buffer,PSTR("AT+HTTPDATA=%d,5000"),mux_id); gprs.sendCommand(gprs.buffer,5000,"DOWNLOAD"); } for (uint16_t i = 0; i < len; i++) { if (tipo_buffer==POINTER_CHAR_PROGMEM) { SSwifi.write(pgm_read_byte(buffer++)); } else { SSwifi.write(*buffer++); } } delay(150); return 1; #endif }
bool ESP8266::eATCIPCLOSESingle(void) { rx_empty(); sendAT("CIPCLOSE"); return recvFind("OK", 5000); }
bool ESP8266::eATCIPCLOSESingle(void) { rx_empty(); m_puart->println(F("AT+CIPCLOSE")); return recvFind("OK", 5000); }
bool ESP8266::eATRESTORE(void) { rx_empty(); m_puart->println(F("AT+RESTORE")); return recvFind("OK"); }
bool ESP8266::eAT(void) { rx_empty(); m_puart->println("AT"); return recvFind("OK"); }
bool ESP8266::eATRST(void) { rx_empty(); sendAT("RST"); return recvFind("OK"); }