Skip to content

Commit 01c0298

Browse files
Show correct BSSID in json status instead of a "fake" one (#1689)
* Add HAL_GetWiFiBSSID() and HAL_GetWiFiChannel() commands Display correct BSSID and channel in JSON status * Testing bssid RTL * Typo and new try for RTL * Fix BSSID returned * bettter * test * Update hal_wifi_xradio.c --------- Co-authored-by: Tester23 <[email protected]>
1 parent 7bb04bd commit 01c0298

File tree

14 files changed

+276
-27
lines changed

14 files changed

+276
-27
lines changed

src/hal/bk7231/hal_wifi_bk7231.c

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,40 @@ int HAL_GetWifiStrength()
256256
bk_wlan_get_link_status(&linkStatus);
257257
return linkStatus.wifi_strength;
258258
}
259+
// Get WiFi Information (SSID / BSSID) - e.g. to display on status page
260+
/*
261+
// ATM there is only one SSID, so need for this code
262+
char* HAL_GetWiFiSSID(char* ssid){
263+
if (sta_ip_is_start()){
264+
LinkStatusTypeDef linkStatus;
265+
bk_wlan_get_link_status(&linkStatus);
266+
// memcpy(ssid, linkStatus.ssid, sizeof(ssid)-1);
267+
strcpy(ssid,linkStatus.ssid);
268+
return ssid;
269+
}
270+
ssid[0]='\0';
271+
return ssid;
272+
};
273+
*/
274+
char* HAL_GetWiFiBSSID(char* bssid){
275+
if (sta_ip_is_start()){
276+
LinkStatusTypeDef linkStatus;
277+
bk_wlan_get_link_status(&linkStatus);
278+
sprintf(bssid, MACSTR, MAC2STR(linkStatus.bssid));
279+
return bssid;
280+
}
281+
bssid[0]='\0';
282+
return bssid;
283+
};
284+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
285+
if (sta_ip_is_start()){
286+
LinkStatusTypeDef linkStatus;
287+
bk_wlan_get_link_status(&linkStatus);
288+
*chan = linkStatus.channel ;
289+
return *chan;
290+
}
291+
return 0;
292+
};
259293

260294
// receives status change notifications about wireless - could be useful
261295
// ctxt is pointer to a rw_evt_type

src/hal/bl602/hal_wifi_bl602.c

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,37 @@ void HAL_WiFi_SetupStatusCallback(void (*cb)(int code)) {
184184
aos_register_event_filter(EV_WIFI, event_cb_wifi_event, NULL);
185185
}
186186

187+
// Get WiFi Information (SSID / BSSID) - e.g. to display on status page
188+
// use bl_wifi_sta_info_get(bl_wifi_ap_info_t* sta_info); or bl_wifi_ap_info_get(bl_wifi_ap_info_t* ap_info);
189+
// ef_get_env_blob((const char *)WIFI_AP_PSM_INFO_CHANNEL, val_buf, val_len, NULL);
190+
// ef_get_env_blob((const char *)WIFI_AP_PSM_INFO_BSSID, val_buf, val_len, NULL);
191+
//
192+
/*
193+
// ATM there is only one SSID, so need for this code
194+
char* HAL_GetWiFiSSID(char* ssid){
195+
wifi_mgmr_sta_connect_ind_stat_info_t info;
196+
memset(&info, 0, sizeof(info));
197+
wifi_mgmr_sta_connect_ind_stat_get(&info);
198+
// memcpy(ssid, info.ssid, sizeof(ssid));
199+
strcpy(ssid, info.ssid);
200+
return ssid;
201+
};
202+
*/
203+
char* HAL_GetWiFiBSSID(char* bssid){
204+
wifi_mgmr_sta_connect_ind_stat_info_t info;
205+
memset(&info, 0, sizeof(info));
206+
wifi_mgmr_sta_connect_ind_stat_get(&info);
207+
// memcpy(bssid, info.bssid, sizeof(bssid));
208+
sprintf(bssid, MACSTR, MAC2STR(info.bssid));
209+
return bssid;
210+
};
211+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
212+
wifi_mgmr_sta_connect_ind_stat_info_t info;
213+
memset(&info, 0, sizeof(info));
214+
wifi_mgmr_sta_connect_ind_stat_get(&info);
215+
*chan = info.chan_band;
216+
return *chan;
217+
};
187218

188219
void HAL_PrintNetworkInfo() {
189220

src/hal/ecr6600/hal_wifi_ecr6600.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,28 @@ int HAL_GetWifiStrength()
9090
return ap_info.rssi;
9191
}
9292

93+
94+
char* HAL_GetWiFiBSSID(char* bssid){
95+
if (wifi_get_sta_status()==STA_STATUS_CONNECTED){
96+
wifi_info_t ap_info;
97+
memset((void*)&ap_info, 0, sizeof(wifi_info_t));
98+
wifi_get_wifi_info(&ap_info);
99+
sprintf(bssid, MACSTR, MAC2STR(ap_info.bssid));
100+
return bssid;
101+
}
102+
bssid[0]='\0';
103+
return bssid;
104+
};
105+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
106+
if (wifi_get_sta_status()==STA_STATUS_CONNECTED){
107+
*chan = wifi_rf_get_channel();
108+
return *chan;
109+
}
110+
return 0;
111+
};
112+
113+
114+
93115
static sys_err_t handle_wifi_event(void* ctx, system_event_t* event)
94116
{
95117
switch(event->event_id)

src/hal/espidf/hal_wifi_espidf.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,27 @@ int HAL_GetWifiStrength()
109109
return ap.rssi;
110110
}
111111

112+
char* HAL_GetWiFiBSSID(char* bssid){
113+
wifi_ap_record_t ap_info;
114+
memset((void*)&ap_info, 0, sizeof(wifi_ap_record_t));
115+
if (esp_wifi_sta_get_ap_info(&ap_info) == ESP_OK){
116+
sprintf(bssid, MACSTR, MAC2STR(ap_info.bssid));
117+
return bssid;
118+
}
119+
bssid[0]='\0';
120+
return bssid;
121+
};
122+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
123+
wifi_ap_record_t ap_info;
124+
memset((void*)&ap_info, 0, sizeof(wifi_ap_record_t));
125+
if (esp_wifi_sta_get_ap_info(&ap_info) == ESP_OK){
126+
*chan = ap_info.primary;
127+
return *chan;
128+
}
129+
return 0;
130+
};
131+
132+
112133
void HAL_WiFi_SetupStatusCallback(void (*cb)(int code))
113134
{
114135
g_wifiStatusCallback = cb;

src/hal/generic/hal_wifi_generic.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,14 @@ void __attribute__((weak)) WiFI_GetMacAddress(char* mac)
3232
{
3333

3434
}
35-
35+
char* __attribute__((weak)) HAL_GetWiFiBSSID(char* bssid) {
36+
strcpy(bssid, "30:B5:C2:5D:70:72");
37+
return bssid;
38+
};
39+
uint8_t __attribute__((weak)) HAL_GetWiFiChannel(uint8_t *chan) {
40+
*chan = 12;
41+
return *chan;
42+
};
3643
const char* __attribute__((weak)) HAL_GetMACStr(char* macstr)
3744
{
3845
return "error";

src/hal/hal_wifi.h

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,18 @@ const char* HAL_GetMyGatewayString();
4747
const char* HAL_GetMyDNSString();
4848
const char* HAL_GetMyMaskString();
4949
const char* HAL_GetMACStr(char* macstr);
50+
51+
// Get WiFi Information (SSID / BSSID) - e.g. to display on status page
52+
// ATM there is only one SSID, so need for this code
53+
//char* HAL_GetWiFiSSID(char* ssid);
54+
55+
char* HAL_GetWiFiBSSID(char* bssid);
56+
typedef unsigned char uint8_t ;
57+
uint8_t HAL_GetWiFiChannel(uint8_t *chan);
58+
5059
void WiFI_GetMacAddress(char* mac);
5160
int WiFI_SetMacAddress(char* mac);
5261
void HAL_PrintNetworkInfo();
5362
int HAL_GetWifiStrength();
5463

55-
#endif
64+
#endif

src/hal/ln882h/hal_wifi_ln882h.c

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,41 @@ int HAL_GetWifiStrength()
138138
wifi_sta_get_rssi(&val);
139139
return val;
140140
}
141+
// Get WiFi Information (SSID / BSSID) - e.g. to display on status page
142+
/*
143+
const uint8_t * bssid;
144+
const char ssid[33]={0};
145+
146+
if (wifi_get_sta_conn_info(&ssid, &bssid) == 0){
147+
+ hprintf255(request, " --- Wifi SSID/BSSI: %s / [%02X:%02X:%02X:%02X:%02X:%02X] ", ssid, bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]);
148+
+ }
149+
150+
*/
151+
/*
152+
// ATM there is only one SSID, so need for this code
153+
154+
char* HAL_GetWiFiSSID(char* ssid){
155+
const uint8_t * bssid = NULL;
156+
const char * tempssid = NULL;
157+
wifi_get_sta_conn_info(&tempssid, &bssid);
158+
strcpy(ssid,tempssid);
159+
return ssid;
160+
};
161+
*/
162+
char* HAL_GetWiFiBSSID(char* bssid){
163+
const uint8_t * tempbssid = NULL;
164+
const char * ssid = NULL;
165+
if (wifi_get_sta_conn_info(&ssid, &tempbssid) == 0) sprintf(bssid, MACSTR, MAC2STR(tempbssid));
166+
return bssid;
167+
};
168+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
169+
wifi_scan_cfg_t scan_cfg = {0,};
170+
wifi_get_sta_scan_cfg(&scan_cfg);
171+
*chan = scan_cfg.channel;
172+
return *chan;
173+
};
174+
175+
141176

142177
void HAL_WiFi_SetupStatusCallback(void (*cb)(int code))
143178
{
@@ -198,7 +233,7 @@ void wifi_init_sta(const char* oob_ssid, const char* connect_key, obkStaticIP_t
198233
.bssid = NULL,
199234
.psk_value = NULL,
200235
};
201-
236+
// wifi_manager_set_ap_list_sort_rule(1);
202237
wifi_scan_cfg_t scan_cfg = {
203238
.channel = 0,
204239
.scan_type = WIFI_SCAN_TYPE_ACTIVE,

src/hal/realtek/hal_wifi_realtek.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,17 @@ int HAL_GetWifiStrength()
123123
return rssi;
124124
}
125125

126+
char* HAL_GetWiFiBSSID(char* bssid){
127+
uint8_t mac[6];
128+
wext_get_bssid(WLAN0_NAME, mac);
129+
sprintf(bssid, MACSTR, MAC2STR(mac));
130+
return bssid;
131+
};
132+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
133+
wext_get_channel(WLAN0_NAME, chan);
134+
return *chan;
135+
};
136+
126137
void HAL_WiFi_SetupStatusCallback(void (*cb)(int code))
127138
{
128139
g_wifiStatusCallback = cb;

src/hal/tr6260/hal_wifi_tr6260.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,27 @@ int HAL_GetWifiStrength()
7979
return ap_info.rssi;
8080
}
8181

82+
char* HAL_GetWiFiBSSID(char* bssid){
83+
wifi_info_t ap_info;
84+
memset((void*)&ap_info, 0, sizeof(wifi_info_t));
85+
if (wifi_get_wifi_info(&ap_info) == SYS_OK){
86+
sprintf(bssid, MACSTR, MAC2STR(ap_info.bssid));
87+
return bssid;
88+
}
89+
bssid[0]='\0';
90+
return bssid;
91+
};
92+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
93+
wifi_info_t ap_info;
94+
memset((void*)&ap_info, 0, sizeof(wifi_info_t));
95+
if (wifi_get_wifi_info(&ap_info) == SYS_OK){
96+
*chan = ap_info.channel;
97+
return *chan;
98+
}
99+
return 0;
100+
};
101+
102+
82103
static sys_err_t handle_wifi_event(void* ctx, system_event_t* event)
83104
{
84105
int vif;

src/hal/w800/hal_wifi_w800.c

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,31 @@ int HAL_GetWifiStrength()
122122
return (signed char)(0x100-bss.rssi); //this is adjusted according to example
123123
}
124124

125+
// Get WiFi Information (SSID / BSSID) - e.g. to display on status page
126+
/*
127+
// ATM there is only one SSID, so need for this code
128+
129+
char* HAL_GetWiFiSSID(char* ssid){
130+
struct tls_curr_bss_t bss;
131+
tls_wifi_get_current_bss(&bss);
132+
strcpy(ssid,bss.ssid);
133+
ssid[bss.ssid_len]='\0';
134+
return ssid;
135+
};
136+
*/
137+
char* HAL_GetWiFiBSSID(char* bssid){
138+
struct tls_curr_bss_t bss;
139+
tls_wifi_get_current_bss(&bss);
140+
sprintf(bssid, MACSTR, MAC2STR(bss.bssid));
141+
return bssid;
142+
};
143+
uint8_t HAL_GetWiFiChannel(uint8_t *chan){
144+
struct tls_curr_bss_t bss;
145+
tls_wifi_get_current_bss(&bss);
146+
*chan = bss.channel;
147+
return *chan;
148+
};
149+
125150
static void apsta_net_status(u8 status)
126151
{
127152
switch (status)

0 commit comments

Comments
 (0)