Skip to content

Commit 56a8227

Browse files
authored
Merge pull request #11304 from AnttiKauppila/esp8266_fix
RSSI getter fixed for ESP8266
2 parents 4d2078e + 2bdf3bb commit 56a8227

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

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

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ const char *ESP8266::netmask()
426426

427427
int8_t ESP8266::rssi()
428428
{
429-
int8_t rssi;
429+
int8_t rssi = 0;
430430
char bssid[18];
431431

432432
_smutex.lock();
@@ -437,17 +437,27 @@ int8_t ESP8266::rssi()
437437
_smutex.unlock();
438438
return 0;
439439
}
440+
440441
set_timeout();
441442
_smutex.unlock();
442443

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

@@ -481,6 +491,7 @@ int ESP8266::scan(WiFiAccessPoint *res, unsigned limit, scan_mode mode, unsigned
481491
}
482492
}
483493

494+
484495
int cnt = _scan_r.cnt;
485496
_scan_r.res = NULL;
486497

0 commit comments

Comments
 (0)