From a074721d18ef357530873b6a6e07a5e925fd7113 Mon Sep 17 00:00:00 2001 From: Antti Kauppila Date: Fri, 23 Aug 2019 12:20:21 +0300 Subject: [PATCH 1/2] RSSI getter fixed for ESP8266 --- .../wifi/esp8266-driver/ESP8266/ESP8266.cpp | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp index 65f28584b1..c25f227b98 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp @@ -427,7 +427,7 @@ const char *ESP8266::netmask() int8_t ESP8266::rssi() { - int8_t rssi; + int8_t rssi = 0; char bssid[18]; _smutex.lock(); @@ -438,17 +438,27 @@ int8_t ESP8266::rssi() _smutex.unlock(); return 0; } + set_timeout(); _smutex.unlock(); + WiFiAccessPoint ap[1]; + _scan_r.res = ap; + _scan_r.limit = 1; + _scan_r.cnt = 0; + _smutex.lock(); set_timeout(ESP8266_CONNECT_TIMEOUT); if (!(_parser.send("AT+CWLAP=\"\",\"%s\",", bssid) - && _parser.recv("+CWLAP:(%*d,\"%*[^\"]\",%hhd,", &rssi) - && _parser.recv("OK\n"))) { - _smutex.unlock(); - return 0; + && _parser.recv("OK\n"))) { + rssi = 0; + } else if(_scan_r.cnt == 1) { + //All OK so read and return rssi + rssi = ap[0].get_rssi(); } + + _scan_r.cnt = 0; + _scan_r.res = NULL; set_timeout(); _smutex.unlock(); @@ -482,6 +492,7 @@ int ESP8266::scan(WiFiAccessPoint *res, unsigned limit, scan_mode mode, unsigned } } + int cnt = _scan_r.cnt; _scan_r.res = NULL; From 2bdf3bbf23517b725d9b530b1c675953012b6f8d Mon Sep 17 00:00:00 2001 From: Antti Kauppila Date: Mon, 26 Aug 2019 09:56:18 +0300 Subject: [PATCH 2/2] astyle fixes --- components/wifi/esp8266-driver/ESP8266/ESP8266.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp index c25f227b98..bbfe14c809 100644 --- a/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp +++ b/components/wifi/esp8266-driver/ESP8266/ESP8266.cpp @@ -450,9 +450,9 @@ int8_t ESP8266::rssi() _smutex.lock(); set_timeout(ESP8266_CONNECT_TIMEOUT); if (!(_parser.send("AT+CWLAP=\"\",\"%s\",", bssid) - && _parser.recv("OK\n"))) { + && _parser.recv("OK\n"))) { rssi = 0; - } else if(_scan_r.cnt == 1) { + } else if (_scan_r.cnt == 1) { //All OK so read and return rssi rssi = ap[0].get_rssi(); }