Skip to content

Commit a074721

Browse files
author
Antti Kauppila
committed
RSSI getter fixed for ESP8266
1 parent 2c3ce96 commit a074721

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

components/wifi/esp8266-driver/ESP8266/ESP8266.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ const char *ESP8266::netmask()
427427

428428
int8_t ESP8266::rssi()
429429
{
430-
int8_t rssi;
430+
int8_t rssi = 0;
431431
char bssid[18];
432432

433433
_smutex.lock();
@@ -438,17 +438,27 @@ int8_t ESP8266::rssi()
438438
_smutex.unlock();
439439
return 0;
440440
}
441+
441442
set_timeout();
442443
_smutex.unlock();
443444

445+
WiFiAccessPoint ap[1];
446+
_scan_r.res = ap;
447+
_scan_r.limit = 1;
448+
_scan_r.cnt = 0;
449+
444450
_smutex.lock();
445451
set_timeout(ESP8266_CONNECT_TIMEOUT);
446452
if (!(_parser.send("AT+CWLAP=\"\",\"%s\",", bssid)
447-
&& _parser.recv("+CWLAP:(%*d,\"%*[^\"]\",%hhd,", &rssi)
448-
&& _parser.recv("OK\n"))) {
449-
_smutex.unlock();
450-
return 0;
453+
&& _parser.recv("OK\n"))) {
454+
rssi = 0;
455+
} else if(_scan_r.cnt == 1) {
456+
//All OK so read and return rssi
457+
rssi = ap[0].get_rssi();
451458
}
459+
460+
_scan_r.cnt = 0;
461+
_scan_r.res = NULL;
452462
set_timeout();
453463
_smutex.unlock();
454464

@@ -482,6 +492,7 @@ int ESP8266::scan(WiFiAccessPoint *res, unsigned limit, scan_mode mode, unsigned
482492
}
483493
}
484494

495+
485496
int cnt = _scan_r.cnt;
486497
_scan_r.res = NULL;
487498

0 commit comments

Comments
 (0)