62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
#include <stdio.h>
|
|
|
|
#include <string>
|
|
|
|
#include "pico/cyw43_arch.h"
|
|
#include "pico/stdlib.h"
|
|
|
|
using std::string;
|
|
|
|
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();
|
|
|
|
if (cyw43_arch_wifi_connect_async(ssid.c_str(), pw.c_str(), CYW43_AUTH_WPA2_MIXED_PSK)) {
|
|
return 2;
|
|
}
|
|
|
|
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 {
|
|
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int main() {
|
|
const string ssid{"Apis cerana"};
|
|
const string pw{"2JkJEh2vptVT"};
|
|
const uint32_t country{CYW43_COUNTRY_GERMANY};
|
|
|
|
stdio_init_all();
|
|
|
|
wifi_setup(country, ssid, pw);
|
|
|
|
while (true) {
|
|
sleep_ms(1);
|
|
}
|
|
|
|
cyw43_arch_deinit();
|
|
}
|