Fixed getSignalQuality and waitForNetwork on ESP8266

This commit is contained in:
SRGDamia1
2017-06-08 17:53:21 -04:00
parent ea1a4706f9
commit 84e5ff5006

View File

@@ -212,28 +212,34 @@ public:
*/ */
int getSignalQuality() { int getSignalQuality() {
sendAT(GF("+CWLAP=\""), _ssid, GF("\"")); sendAT(GF("+CWJAP_CUR?"));
DBG(GSM_NL, "<<< "); int res1 = waitResponse(GF("No AP"), GF("+CWJAP_CUR:"));
streamSkipUntil(':'); if (res1 != 2){
streamSkipUntil(',');
streamSkipUntil(',');
streamSkipUntil(',');
String res2 = streamReadUntil(',');
streamSkipUntil(')');
waitResponse(); waitResponse();
return res2.toInt(); return 0;
}
streamSkipUntil(','); // Skip SSID
streamSkipUntil(','); // Skip BSSID/MAC address
streamSkipUntil(','); // Skip Chanel number
int res2 = stream.parseInt(); // Read RSSI
DBG(res2);
waitResponse();
return res2;
} }
bool waitForNetwork(unsigned long timeout = 60000L) { bool waitForNetwork(unsigned long timeout = 60000L) {
for (unsigned long start = millis(); millis() - start < timeout; ) { for (unsigned long start = millis(); millis() - start < timeout; ) {
sendAT(GF("+CIPSTATUS")); sendAT(GF("+CIPSTATUS"));
DBG(GSM_NL, "<<< "); int res1 = waitResponse(3000, GF("busy p..."), GF("STATUS:"));
String res1 = streamReadUntil(':'); if (res1 == 2){
String res2 = streamReadUntil(*GSM_NL); int res2 = waitResponse(GFP(GSM_ERROR), GF("2"), GF("3"), GF("4"), GF("5"));
waitResponse(); if (res2 == 2 || res2 == 3 || res2 == 4) return true;
if (res2 == GF("2") || res2 == GF("3") || res2 == GF("4")) {
return true;
} }
// <stat> status of ESP8266 station interface
// 2 : ESP8266 station connected to an AP and has obtained IP
// 3 : ESP8266 station created a TCP or UDP transmission
// 4 : the TCP or UDP transmission of ESP8266 station disconnected (but AP is connected)
// 5 : ESP8266 station did NOT connect to an AP
delay(1000); delay(1000);
} }
return false; return false;
@@ -244,8 +250,6 @@ public:
*/ */
bool networkConnect(const char* ssid, const char* pwd) { bool networkConnect(const char* ssid, const char* pwd) {
_ssid = ssid;
sendAT(GF("+CIPMUX=1")); sendAT(GF("+CIPMUX=1"));
if (waitResponse() != 1) { if (waitResponse() != 1) {
return false; return false;
@@ -459,7 +463,6 @@ private:
private: private:
Stream& stream; Stream& stream;
GsmClient* sockets[5]; GsmClient* sockets[5];
const char* _ssid;
}; };
typedef TinyGsm::GsmClient TinyGsmClient; typedef TinyGsm::GsmClient TinyGsmClient;