diff --git a/pico/src/main.py b/pico/src/main.py index 706dfb1..2dc39f3 100644 --- a/pico/src/main.py +++ b/pico/src/main.py @@ -70,13 +70,23 @@ async def ensure_network(): nic = network.WLAN(network.STA_IF) print("[net] setting up WLAN interface...") nic.active(True) + while not nic.active(): + await asyncio.sleep(0.1) print("[net] connecting...") nic.connect(SSID, PASSWORD) logged = False + status_name = { + network.STAT_CONNECT_FAIL: "CONNECT_FAIL", + network.STAT_CONNECTING: "CONNECTING", + network.STAT_IDLE: "IDLE", + network.STAT_NO_AP_FOUND: "NO_AP_FOUND", + network.STAT_WRONG_PASSWORD: "WRONG_PASSWORD" + } + while True: - if nic.status() == network.STAT_GOT_IP: + if (status := nic.status()) == network.STAT_GOT_IP: # pyright: ignore[reportAny] STATUS_LED.status(2) if not logged: logged = True @@ -85,6 +95,11 @@ async def ensure_network(): print(f"[net] {rssi=}") else: STATUS_LED.status(1) + print("[net] status={}".format(status_name.get(status, f"UNKNOWN ({status})"))) # pyright: ignore[reportAny] + if status == network.STAT_CONNECT_FAIL or status == network.STAT_NO_AP_FOUND: + print("[net] retrying in 3s...") + await asyncio.sleep(3) + nic.connect(SSID, PASSWORD) await asyncio.sleep(1)