Skip to content

Commit 3c7d0e9

Browse files
committed
add RSSI return and fix SSID and BSSID methods
fixes: espressif#144
1 parent 13f3ac5 commit 3c7d0e9

File tree

2 files changed

+23
-16
lines changed

2 files changed

+23
-16
lines changed

libraries/WiFi/src/WiFiSTA.cpp

+22-15
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ extern "C" {
4343
#include <esp_smartconfig.h>
4444
}
4545

46-
extern "C" void esp_schedule();
47-
extern "C" void esp_yield();
48-
4946
// -----------------------------------------------------------------------------------------------------------------------
5047
// ---------------------------------------------------- Private functions ------------------------------------------------
5148
// -----------------------------------------------------------------------------------------------------------------------
@@ -404,9 +401,11 @@ wl_status_t WiFiSTAClass::status()
404401
*/
405402
String WiFiSTAClass::SSID() const
406403
{
407-
wifi_config_t conf;
408-
esp_wifi_get_config(WIFI_IF_STA, &conf);
409-
return String(reinterpret_cast<char*>(conf.sta.ssid));
404+
wifi_ap_record_t info;
405+
if(!esp_wifi_sta_get_ap_info(&info)) {
406+
return String(reinterpret_cast<char*>(info.ssid));
407+
}
408+
return String();
410409
}
411410

412411
/**
@@ -427,10 +426,12 @@ String WiFiSTAClass::psk() const
427426
uint8_t* WiFiSTAClass::BSSID(void)
428427
{
429428
static uint8_t bssid[6];
430-
wifi_config_t conf;
431-
esp_wifi_get_config(WIFI_IF_STA, &conf);
432-
memcpy(bssid, conf.sta.bssid, 6);
433-
return reinterpret_cast<uint8_t*>(bssid);
429+
wifi_ap_record_t info;
430+
if(!esp_wifi_sta_get_ap_info(&info)) {
431+
memcpy(bssid, info.bssid, 6);
432+
return reinterpret_cast<uint8_t*>(bssid);
433+
}
434+
return NULL;
434435
}
435436

436437
/**
@@ -439,20 +440,26 @@ uint8_t* WiFiSTAClass::BSSID(void)
439440
*/
440441
String WiFiSTAClass::BSSIDstr(void)
441442
{
443+
uint8_t* bssid = BSSID();
444+
if(!bssid){
445+
return String();
446+
}
442447
char mac[18] = { 0 };
443-
wifi_config_t conf;
444-
esp_wifi_get_config(WIFI_IF_STA, &conf);
445-
sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", conf.sta.bssid[0], conf.sta.bssid[1], conf.sta.bssid[2], conf.sta.bssid[3], conf.sta.bssid[4], conf.sta.bssid[5]);
448+
sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]);
446449
return String(mac);
447450
}
448451

449452
/**
450453
* Return the current network RSSI.
451454
* @return RSSI value
452455
*/
453-
int32_t WiFiSTAClass::RSSI(void)
456+
int8_t WiFiSTAClass::RSSI(void)
454457
{
455-
return 0;//wifi_station_get_rssi();
458+
wifi_ap_record_t info;
459+
if(!esp_wifi_sta_get_ap_info(&info)) {
460+
return info.rssi;
461+
}
462+
return 0;
456463
}
457464

458465
/**

libraries/WiFi/src/WiFiSTA.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class WiFiSTAClass
7878
uint8_t * BSSID();
7979
String BSSIDstr();
8080

81-
int32_t RSSI();
81+
int8_t RSSI();
8282

8383
static void _setStatus(wl_status_t status);
8484
protected:

0 commit comments

Comments
 (0)