Skip to content

Commit b336039

Browse files
committed
Disable the long way and return an ap_info object
still needs work and cleanup
1 parent 99f27be commit b336039

File tree

4 files changed

+102
-57
lines changed

4 files changed

+102
-57
lines changed

ports/esp32s2/common-hal/wifi/Radio.c

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
*/
2626

2727
#include "shared-bindings/wifi/Radio.h"
28+
#include "shared-bindings/wifi/Network.h"
2829

2930
#include <string.h>
3031

@@ -149,7 +150,7 @@ wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t
149150
return WIFI_RADIO_ERROR_NONE;
150151
}
151152

152-
mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self) {
153+
mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self) {
153154
if (!esp_netif_is_netif_up(self->netif)) {
154155
return mp_const_none;
155156
}
@@ -159,18 +160,21 @@ mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self) {
159160
return mp_const_none;
160161
}
161162

163+
wifi_network_obj_t *apnet = m_new_obj(wifi_network_obj_t);
164+
apnet->base.type = &wifi_network_type;
162165
// From esp_wifi.h, the possible return values (typos theirs):
163166
// ESP_OK: succeed
164167
// ESP_ERR_WIFI_CONN: The station interface don't initialized
165168
// ESP_ERR_WIFI_NOT_CONNECT: The station is in disconnect status
166-
if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
169+
if (esp_wifi_sta_get_ap_info(&self->apnet.record) != ESP_OK){
167170
return mp_const_none;
168171
} else {
169-
return mp_obj_new_int(self->ap_info.rssi);
172+
memcpy(&apnet->record, &self->apnet.record, sizeof(wifi_ap_record_t));
173+
return MP_OBJ_FROM_PTR(apnet);
170174
}
171175
}
172176

173-
mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self) {
177+
mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self) {
174178
if (!esp_netif_is_netif_up(self->netif)) {
175179
return mp_const_none;
176180
}
@@ -180,30 +184,51 @@ mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self) {
180184
return mp_const_none;
181185
}
182186

187+
// From esp_wifi.h, the possible return values (typos theirs):
188+
// ESP_OK: succeed
189+
// ESP_ERR_WIFI_CONN: The station interface don't initialized
190+
// ESP_ERR_WIFI_NOT_CONNECT: The station is in disconnect status
183191
if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
184192
return mp_const_none;
185193
} else {
186-
const char* cstr = (const char*) self->ap_info.ssid;
187-
return mp_obj_new_str(cstr, strlen(cstr));
194+
return mp_obj_new_int(self->ap_info.rssi);
188195
}
189196
}
190197

191-
mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self) {
192-
if (!esp_netif_is_netif_up(self->netif)) {
193-
return mp_const_none;
194-
}
195-
196-
// Make sure the interface is in STA mode
197-
if (self->sta_mode){
198-
return mp_const_none;
199-
}
200-
201-
if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
202-
return mp_const_none;
203-
} else {
204-
return mp_obj_new_bytes(self->ap_info.bssid, MAC_ADDRESS_LENGTH);
205-
}
206-
}
198+
// mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self) {
199+
// if (!esp_netif_is_netif_up(self->netif)) {
200+
// return mp_const_none;
201+
// }
202+
203+
// // Make sure the interface is in STA mode
204+
// if (self->sta_mode){
205+
// return mp_const_none;
206+
// }
207+
208+
// if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
209+
// return mp_const_none;
210+
// } else {
211+
// const char* cstr = (const char*) self->ap_info.ssid;
212+
// return mp_obj_new_str(cstr, strlen(cstr));
213+
// }
214+
// }
215+
216+
// mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self) {
217+
// if (!esp_netif_is_netif_up(self->netif)) {
218+
// return mp_const_none;
219+
// }
220+
221+
// // Make sure the interface is in STA mode
222+
// if (self->sta_mode){
223+
// return mp_const_none;
224+
// }
225+
226+
// if (esp_wifi_sta_get_ap_info(&self->ap_info) != ESP_OK){
227+
// return mp_const_none;
228+
// } else {
229+
// return mp_obj_new_bytes(self->ap_info.bssid, MAC_ADDRESS_LENGTH);
230+
// }
231+
// }
207232

208233
mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self) {
209234
if (!esp_netif_is_netif_up(self->netif)) {

ports/esp32s2/common-hal/wifi/Radio.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "components/esp_event/include/esp_event.h"
3333

3434
#include "shared-bindings/wifi/ScannedNetworks.h"
35+
#include "shared-bindings/wifi/Network.h"
3536

3637
// Event bits for the Radio event group.
3738
#define WIFI_SCAN_DONE_BIT BIT0
@@ -47,6 +48,7 @@ typedef struct {
4748
EventGroupHandle_t event_group_handle;
4849
wifi_config_t sta_config;
4950
wifi_ap_record_t ap_info;
51+
wifi_network_obj_t apnet;
5052
esp_netif_ip_info_t ip_info;
5153
esp_netif_dns_info_t dns_info;
5254
esp_netif_t *netif;

shared-bindings/wifi/Radio.c

Lines changed: 50 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -179,37 +179,37 @@ const mp_obj_property_t wifi_radio_ap_rssi_obj = {
179179
(mp_obj_t)&mp_const_none_obj },
180180
};
181181

182-
//| ap_ssid: int
183-
//| """SSID of the currently connected AP. Returns none if not connected"""
184-
//|
185-
STATIC mp_obj_t wifi_radio_get_ap_ssid(mp_obj_t self) {
186-
return common_hal_wifi_radio_get_ap_ssid(self);
187-
188-
}
189-
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_ssid_obj, wifi_radio_get_ap_ssid);
190-
191-
const mp_obj_property_t wifi_radio_ap_ssid_obj = {
192-
.base.type = &mp_type_property,
193-
.proxy = { (mp_obj_t)&wifi_radio_get_ap_ssid_obj,
194-
(mp_obj_t)&mp_const_none_obj,
195-
(mp_obj_t)&mp_const_none_obj },
196-
};
197-
198-
//| ap_bssid: int
199-
//| """BSSID (usually MAC) of the currently connected AP. Returns none if not connected"""
200-
//|
201-
STATIC mp_obj_t wifi_radio_get_ap_bssid(mp_obj_t self) {
202-
return common_hal_wifi_radio_get_ap_bssid(self);
203-
204-
}
205-
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_bssid_obj, wifi_radio_get_ap_bssid);
206-
207-
const mp_obj_property_t wifi_radio_ap_bssid_obj = {
208-
.base.type = &mp_type_property,
209-
.proxy = { (mp_obj_t)&wifi_radio_get_ap_bssid_obj,
210-
(mp_obj_t)&mp_const_none_obj,
211-
(mp_obj_t)&mp_const_none_obj },
212-
};
182+
// //| ap_ssid: int
183+
// //| """SSID of the currently connected AP. Returns none if not connected"""
184+
// //|
185+
// STATIC mp_obj_t wifi_radio_get_ap_ssid(mp_obj_t self) {
186+
// return common_hal_wifi_radio_get_ap_ssid(self);
187+
188+
// }
189+
// MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_ssid_obj, wifi_radio_get_ap_ssid);
190+
191+
// const mp_obj_property_t wifi_radio_ap_ssid_obj = {
192+
// .base.type = &mp_type_property,
193+
// .proxy = { (mp_obj_t)&wifi_radio_get_ap_ssid_obj,
194+
// (mp_obj_t)&mp_const_none_obj,
195+
// (mp_obj_t)&mp_const_none_obj },
196+
// };
197+
198+
// //| ap_bssid: int
199+
// //| """BSSID (usually MAC) of the currently connected AP. Returns none if not connected"""
200+
// //|
201+
// STATIC mp_obj_t wifi_radio_get_ap_bssid(mp_obj_t self) {
202+
// return common_hal_wifi_radio_get_ap_bssid(self);
203+
204+
// }
205+
// MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_bssid_obj, wifi_radio_get_ap_bssid);
206+
207+
// const mp_obj_property_t wifi_radio_ap_bssid_obj = {
208+
// .base.type = &mp_type_property,
209+
// .proxy = { (mp_obj_t)&wifi_radio_get_ap_bssid_obj,
210+
// (mp_obj_t)&mp_const_none_obj,
211+
// (mp_obj_t)&mp_const_none_obj },
212+
// };
213213

214214
//| ipv4_gateway: Optional[ipaddress.IPv4Address]
215215
//| """IP v4 Address of the gateway when connected to an access point. None otherwise."""
@@ -275,6 +275,22 @@ const mp_obj_property_t wifi_radio_ipv4_dns_obj = {
275275
(mp_obj_t)&mp_const_none_obj },
276276
};
277277

278+
//| ap_info: Optional[Network]
279+
//| """None otherwise."""
280+
//|
281+
STATIC mp_obj_t wifi_radio_get_ap_info(mp_obj_t self) {
282+
return common_hal_wifi_radio_get_ap_info(self);
283+
284+
}
285+
MP_DEFINE_CONST_FUN_OBJ_1(wifi_radio_get_ap_info_obj, wifi_radio_get_ap_info);
286+
287+
const mp_obj_property_t wifi_radio_ap_info_obj = {
288+
.base.type = &mp_type_property,
289+
.proxy = { (mp_obj_t)&wifi_radio_get_ap_info_obj,
290+
(mp_obj_t)&mp_const_none_obj,
291+
(mp_obj_t)&mp_const_none_obj },
292+
};
293+
278294
//| def ping(self, ip, *, timeout: float = 0.5) -> float:
279295
//| """Ping an IP to test connectivity. Returns echo time in seconds.
280296
//| Returns None when it times out."""
@@ -315,9 +331,10 @@ STATIC const mp_rom_map_elem_t wifi_radio_locals_dict_table[] = {
315331
{ MP_ROM_QSTR(MP_QSTR_connect), MP_ROM_PTR(&wifi_radio_connect_obj) },
316332
// { MP_ROM_QSTR(MP_QSTR_connect_to_enterprise), MP_ROM_PTR(&wifi_radio_connect_to_enterprise_obj) },
317333

334+
{ MP_ROM_QSTR(MP_QSTR_ap_info), MP_ROM_PTR(&wifi_radio_ap_info_obj) },
318335
{ MP_ROM_QSTR(MP_QSTR_ap_rssi), MP_ROM_PTR(&wifi_radio_ap_rssi_obj) },
319-
{ MP_ROM_QSTR(MP_QSTR_ap_ssid), MP_ROM_PTR(&wifi_radio_ap_ssid_obj) },
320-
{ MP_ROM_QSTR(MP_QSTR_ap_bssid), MP_ROM_PTR(&wifi_radio_ap_bssid_obj) },
336+
// { MP_ROM_QSTR(MP_QSTR_ap_ssid), MP_ROM_PTR(&wifi_radio_ap_ssid_obj) },
337+
// { MP_ROM_QSTR(MP_QSTR_ap_bssid), MP_ROM_PTR(&wifi_radio_ap_bssid_obj) },
321338
{ MP_ROM_QSTR(MP_QSTR_ipv4_dns), MP_ROM_PTR(&wifi_radio_ipv4_dns_obj) },
322339
{ MP_ROM_QSTR(MP_QSTR_ipv4_gateway), MP_ROM_PTR(&wifi_radio_ipv4_gateway_obj) },
323340
{ MP_ROM_QSTR(MP_QSTR_ipv4_subnet), MP_ROM_PTR(&wifi_radio_ipv4_subnet_obj) },

shared-bindings/wifi/Radio.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ extern void common_hal_wifi_radio_stop_scanning_networks(wifi_radio_obj_t *self)
5353

5454
extern wifi_radio_error_t common_hal_wifi_radio_connect(wifi_radio_obj_t *self, uint8_t* ssid, size_t ssid_len, uint8_t* password, size_t password_len, uint8_t channel, mp_float_t timeout, uint8_t* bssid, size_t bssid_len);
5555

56+
extern mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self);
5657
extern mp_obj_t common_hal_wifi_radio_get_ap_rssi(wifi_radio_obj_t *self);
57-
extern mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self);
58-
extern mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self);
58+
// extern mp_obj_t common_hal_wifi_radio_get_ap_ssid(wifi_radio_obj_t *self);
59+
// extern mp_obj_t common_hal_wifi_radio_get_ap_bssid(wifi_radio_obj_t *self);
5960
extern mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self);
6061
extern mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self);
6162
extern mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self);

0 commit comments

Comments
 (0)