Wifi setup improved.

This commit is contained in:
Martin Brodbeck 2022-12-27 17:55:37 +01:00
parent 95d84a69a3
commit f764f7d612

View file

@ -1,41 +1,70 @@
#include <stdio.h> #include <stdio.h>
#include <string>
#include "pico/stdlib.h" #include "pico/stdlib.h"
#include "pico/cyw43_arch.h" #include "pico/cyw43_arch.h"
#define WIFI_SSID "Apis cerana" using std::string;
#define WIFI_PASSWORD "2JkJEh2vptVT"
bool wifi_connect() int wifi_setup(uint32_t country, const string &ssid, const string &pw)
{ {
if (cyw43_arch_init_with_country(country))
{
return 1;
}
cyw43_arch_enable_sta_mode(); cyw43_arch_enable_sta_mode();
printf("Connecting to WiFi...\n"); if (cyw43_arch_wifi_connect_async(ssid.c_str(), pw.c_str(), CYW43_AUTH_WPA2_MIXED_PSK))
if (cyw43_arch_wifi_connect_timeout_ms(WIFI_SSID, WIFI_PASSWORD, CYW43_AUTH_WPA2_AES_PSK, 30000))
{ {
printf("Failed to connect.\n"); return 2;
return false; }
int flashrate = 1000;
int status = CYW43_LINK_UP + 1;
while (status >= 0 && status != CYW43_LINK_UP)
{
int status_new = cyw43_tcpip_link_status(&cyw43_state, CYW43_ITF_STA);
if (status_new != status)
{
status = status_new;
flashrate = flashrate / (status + 1);
printf("Connect status: %d %d\n", status, flashrate);
}
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
sleep_ms(flashrate);
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
sleep_ms(flashrate);
}
if (status < 0)
{
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 0);
} }
else else
{ {
printf("Connected.\n"); cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
} }
return true; return 0;
} }
int main() int main()
{ {
const string ssid{"Apis cerana"};
const string pw{"2JkJEh2vptVT"};
const uint32_t country{CYW43_COUNTRY_GERMANY};
stdio_init_all(); stdio_init_all();
if (cyw43_arch_init()) wifi_setup(country, ssid, pw);
{
printf("Failed to initialize\n");
return 1;
}
if (wifi_connect() == false) while (true)
{ {
return 1; sleep_ms(1);
} }
cyw43_arch_deinit(); cyw43_arch_deinit();