Move wifi stuff to utils
This commit is contained in:
parent
df3ef6f9fa
commit
75d630604d
4 changed files with 83 additions and 67 deletions
69
src/utils.cpp
Normal file
69
src/utils.cpp
Normal file
|
@ -0,0 +1,69 @@
|
|||
#include "utils.h"
|
||||
|
||||
using std::string;
|
||||
|
||||
int wifi_setup_impl(uint32_t country, const string &ssid, const string &pw, bool firstTry) {
|
||||
if (firstTry) {
|
||||
if (cyw43_arch_init_with_country(country)) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
cyw43_arch_enable_sta_mode();
|
||||
|
||||
netif_set_hostname(netif_default, "AbfallPicoW");
|
||||
|
||||
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;
|
||||
if (status < 0) {
|
||||
continue;
|
||||
}
|
||||
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);
|
||||
|
||||
printf("IP: %s\n", ip4addr_ntoa(netif_ip_addr4(netif_default)));
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
void wifi_setup() {
|
||||
const string ssid{"Apis cerana"};
|
||||
const string pw{"2JkJEh2vptVT"};
|
||||
const uint32_t country{CYW43_COUNTRY_GERMANY};
|
||||
|
||||
bool firstTry = true;
|
||||
int res = -1;
|
||||
do {
|
||||
if (firstTry) {
|
||||
res = wifi_setup_impl(country, ssid, pw, true);
|
||||
firstTry = false;
|
||||
} else {
|
||||
printf("Setting up connection failed. Trying again after 5 sec...\n");
|
||||
sleep_ms(5000);
|
||||
res = wifi_setup_impl(country, ssid, pw, false);
|
||||
}
|
||||
|
||||
} while (res != CYW43_LINK_UP);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue