char * ESP8266::sendATCommand(char cmd[], char keyword[], unsigned long timeout) { _wifiSerial.flush(); _wifiSerial.print(cmd); unsigned long start; start = millis(); bufferCursor = 0; setResponseTrueKeywords(keyword); while (millis() - start < timeout) { if (_wifiSerial.available() > 0) { buffer[bufferCursor] = _wifiSerial.read(); bufferCursor++; } buffer[bufferCursor] = '\0'; if (bufferFind(responseTrueKeywords)) { break; } } return buffer; }
void ESP8266::fetchIP(void) { _wifiSerial.println(F("AT+CIFSR")); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(KEYWORD_ERROR); readResponse(10000, PostFetchIP); }
void ESP8266::disconnect() { autoconnect = false; _wifiSerial.println(F("AT+CWQAP")); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(); readResponse(3000, PostDisconnect); }
void ESP8266::closeConnection(void) { wifi.state = STATE_CONNECTED; _wifiSerial.println(F("AT+CIPCLOSE")); setResponseTrueKeywords(KEYWORD_OK, KEYWORD_ERROR); setResponseFalseKeywords(); readResponse(10000, PostCloseConnection); }
void ESP8266::recvString(char target[], uint32_t timeout) { bufferCursor = 0; serialResponseTimestamp = millis(); serialResponseTimeout = timeout; setResponseTrueKeywords(target); setResponseFalseKeywords(); }
void ESP8266::checkConnection() { state = STATE_SENDING_DATA; _wifiSerial.println(F("AT+CIPSTATUS")); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(KEYWORD_ERROR); readResponse(15000, PostCheckConnection); }
void ESP8266::confMode(byte a) { _wifiSerial.print(F("AT+CWMODE=")); _wifiSerial.println(a); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(KEYWORD_ERROR); readResponse(2000, PostConfMode); }
void ESP8266::confConnection(boolean mode) { _wifiSerial.print(F("AT+CIPMUX=")); _wifiSerial.println(mode); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(); readResponse(3000, PostConfConnection); }
void ESP8266::connectToServer() { state = STATE_SENDING_DATA; _wifiSerial.print(F("AT+CIPSTART=\"TCP\",\"")); _wifiSerial.print(requests[0].serverIP); _wifiSerial.print(F("\",")); _wifiSerial.println(requests[0].port); setResponseTrueKeywords(KEYWORD_OK, KEYWORD_ALREAY_CONNECT); setResponseFalseKeywords(KEYWORD_ERROR); readResponse(5000, PostConnectToServer); }
void ESP8266::softReset(void) { connected = false; strcpy(ip, ""); state = STATE_RESETING; _wifiSerial.println(F("AT+RST")); setResponseTrueKeywords(KEYWORD_READY); setResponseFalseKeywords(); readResponse(15000, PostSoftReset); }
void ESP8266::connectAP(char _ssid[], char _pwd[]) { _wifiSerial.print(F("AT+CWJAP=\"")); _wifiSerial.print(_ssid); _wifiSerial.print(F("\",\"")); _wifiSerial.print(_pwd); _wifiSerial.println(F("\"")); setResponseTrueKeywords(KEYWORD_OK); setResponseFalseKeywords(KEYWORD_FAIL); readResponse(10000, PostConnectAP); }
void ESP8266::SendDataLength() { wifi.state = STATE_SENDING_DATA; int length = 79; if (wifi.requests[0].method != NULL) { length = length + strlen(wifi.requests[0].method); } if (wifi.requests[0].url != NULL) { length = length + strlen(wifi.requests[0].url); } if (wifi.requests[0].serverIP != NULL) { length = length + strlen(wifi.requests[0].serverIP); } if (wifi.requests[0].queryData != NULL) { length = length + 3 + strlen(wifi.requests[0].queryData); } if (wifi.requests[0].postData != NULL) { length = length + 20 + strlen(wifi.requests[0].postData); if (strlen(wifi.requests[0].postData) > 9) { length++; } if (strlen(wifi.requests[0].postData) > 99) { length++; } if (strlen(wifi.requests[0].postData) > 999) { length++; } } //DBG("data length "); //DBG(length); //DBG("\r\n"); _wifiSerial.print(F("AT+CIPSEND=")); _wifiSerial.println(length); setResponseTrueKeywords(KEYWORD_CURSOR); setResponseFalseKeywords(); readResponse(5000, SendData); }