• Pi PICO W resilience.

    From The Natural Philosopher@3:770/3 to All on Thursday, March 07, 2024 14:40:59
    I am passing this along so it might be somwhere searchable if anyone has
    the same problem,

    Basically my PICO Ws were not reconnecting to the Wifi after loss of
    Wifi access point.

    This, however seems to work

    int main()
    {
    int ret;
    struct tcp_pcb *connection;
    char buf[2048];
    stdio_init_all();
    initialise_adc();
    if (cyw43_arch_init_with_country(CYW43_COUNTRY_UK))
    {
    printf("Wi-Fi init failed");
    return -1;
    }
    cyw43_arch_enable_sta_mode();
    set_hostname(hostname);
    sleep_ms(20);
    printf("THERMOMETER FOR %s\n",hostname);
    while (TRUE)
    {
    // *check wifi is up and connect/reconnect as necessary*..
    while((cyw43_tcpip_link_status(&cyw43_state,CYW43_ITF_STA)) != CYW43_LINK_UP)
    cyw43_arch_wifi_connect_timeout_ms(ssid, password, CYW43_AUTH_WPA2_AES_PSK, 20000);
    // do your stuff here...
    sleep_ms(6000);
    // rinse and repeat..
    }
    }

    The key issue is that
    cyw43_tcpip_link_status(&cyw43_state,CYW43_ITF_STA); will not return CYW43_LINK_UP until *everything* is sorted out including DHCP assignment
    of an IP address...

    Fingers crossed this is now reasonably bullet proof.


    --
    New Socialism consists essentially in being seen to have your heart in
    the right place whilst your head is in the clouds and your hand is in
    someone else's pocket.

    --- SoupGate-Win32 v1.05
    * Origin: Agency HUB, Dunedin - New Zealand | Fido<>Usenet Gateway (3:770/3)