picow: ask at a lower level if the interface is up

Closes: #7072

```
Adafruit CircuitPython 8.0.0-beta.2-9-g5192082e64-dirty on 2022-10-17; Raspberry Pi Pico W with rp2040
>>> import wifi
>>> print(wifi.radio.ipv4_address)
None
>>> import os
>>> wifi.radio.connect(os.getenv('WIFI_SSID'), os.getenv('WIFI_PASSWORD'))
>>> print(wifi.radio.ipv4_address)
10.0.2.94
```
This commit is contained in:
Jeff Epler 2022-10-17 10:08:50 -05:00
parent 5192082e64
commit 47541afc7c
No known key found for this signature in database
GPG Key ID: D5BF15AB975AB4DE
1 changed files with 7 additions and 7 deletions

View File

@ -202,42 +202,42 @@ mp_obj_t common_hal_wifi_radio_get_ap_info(wifi_radio_obj_t *self) {
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_gateway(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_STA)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_STA->gw.addr); return common_hal_ipaddress_new_ipv4address(NETIF_STA->gw.addr);
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_gateway_ap(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_gateway_ap(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_AP)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_AP) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_AP->gw.addr); return common_hal_ipaddress_new_ipv4address(NETIF_AP->gw.addr);
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_subnet(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_STA)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_STA->netmask.addr); return common_hal_ipaddress_new_ipv4address(NETIF_STA->netmask.addr);
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_subnet_ap(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_subnet_ap(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_AP)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_AP) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_AP->netmask.addr); return common_hal_ipaddress_new_ipv4address(NETIF_AP->netmask.addr);
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_address(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_STA)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_STA->ip_addr.addr); return common_hal_ipaddress_new_ipv4address(NETIF_STA->ip_addr.addr);
} }
mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self) {
if (!netif_is_up(NETIF_AP)) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_AP) != CYW43_LINK_UP) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(NETIF_AP->ip_addr.addr); return common_hal_ipaddress_new_ipv4address(NETIF_AP->ip_addr.addr);
@ -245,7 +245,7 @@ mp_obj_t common_hal_wifi_radio_get_ipv4_address_ap(wifi_radio_obj_t *self) {
mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self) { mp_obj_t common_hal_wifi_radio_get_ipv4_dns(wifi_radio_obj_t *self) {
uint32_t addr = dns_getserver(0)->addr; uint32_t addr = dns_getserver(0)->addr;
if (!netif_is_up(NETIF_STA) || addr == 0) { if (cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA) != CYW43_LINK_UP || addr == 0) {
return mp_const_none; return mp_const_none;
} }
return common_hal_ipaddress_new_ipv4address(addr); return common_hal_ipaddress_new_ipv4address(addr);