diff --git a/PicoW_WiFi_Operator.c b/PicoW_WiFi_Operator.c index 7534c80..264287f 100644 --- a/PicoW_WiFi_Operator.c +++ b/PicoW_WiFi_Operator.c @@ -27,23 +27,27 @@ int wifi_operator_init(enum wifi_operator_mode_t mode) // Setup as station cyw43_arch_enable_sta_mode(); - int ret = cyw43_arch_wifi_connect_blocking(WIFI_OPERATOR_SSID, WIFI_OPERATOR_PASSWORD, WIFI_OPERATOR_AUTH); - - switch(ret) + for(int ret = 1; ret; ) { - case PICO_ERROR_BADAUTH: - puts("Failed to autentificate to WiFi network."); - break; + puts("Attempting to connect to WiFi network."); - case PICO_ERROR_CONNECT_FAILED: - puts("Failed to connect to WiFi network."); - break; + int ret = cyw43_arch_wifi_connect_timeout_ms(WIFI_OPERATOR_SSID, WIFI_OPERATOR_PASSWORD, WIFI_OPERATOR_AUTH, WIFI_OPERATOR_CONNECTION_TIMEOUT_MS); - default: - break; + switch(ret) + { + case PICO_ERROR_TIMEOUT: + puts("Timeout reached while trying to connect to WiFi network."); + break; + + case PICO_ERROR_BADAUTH: + puts("Failed to autentificate to WiFi network."); + return ret; + + default: + puts("Failed to connect to WiFi network."); + return ret; + } } - - return ret; } wifi_operator_mode = WIFI_OPERATOR_MODE_UNINITIALIZED; @@ -66,6 +70,9 @@ int wifi_operator_exit(void) // Exit as access point cyw43_arch_disable_ap_mode(); + + wifi_operator_mode = WIFI_OPERATOR_MODE_UNINITIALIZED; + return PICO_OK; } else if(wifi_operator_mode == WIFI_OPERATOR_MODE_STATION) @@ -73,6 +80,8 @@ int wifi_operator_exit(void) // Exit as station cyw43_arch_disable_sta_mode(); + wifi_operator_mode = WIFI_OPERATOR_MODE_UNINITIALIZED; + return PICO_OK; } diff --git a/README.md b/README.md index 9df1903..59e0776 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # PicoW_WiFi_Operator -Library for rapsberry pi pico w to setup a wifi operator. +Library for RPI Pico W to setup a WiFi operator and DHCP server for access point mode.