#include "wifi_operator.h" #include #include "pico/cyw43_arch.h" #include "lwip/netif.h" #include "lwip/ip4_addr.h" void wifi_operator_init_ap_mode(const char *ssid, const char *password, int channel) { cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1); // Configuration IP pour le mode AP ip4_addr_t ip, netmask, gateway; IP4_ADDR(&ip, 192, 168, 128, 1); IP4_ADDR(&netmask, 255, 255, 255, 0); IP4_ADDR(&gateway, 192, 168, 128, 1); puts("WiFi is configuring..."); // Désactiver le mode d'économie d'énergie cyw43_wifi_pm(&cyw43_state, CYW43_NO_POWERSAVE_MODE); // Activer le mode AP cyw43_arch_enable_ap_mode(ssid, password, CYW43_AUTH_WPA2_AES_PSK); // Attendre que l'interface soit prête int retry = 0; while (netif_default == NULL && retry < 10) { sleep_ms(500); retry++; } if (netif_default == NULL) { puts("Error: wireless interface not initialised"); return; } // Configuration du canal WiFi cyw43_wifi_ap_set_channel(&cyw43_state, channel); // Configuration de l'interface réseau netif_set_up(netif_default); netif_set_link_up(netif_default); netif_set_addr(netif_default, &ip, &netmask, &gateway); puts("IP configuration ended !"); puts("Access point activated !"); printf("SSID : %s\n", ssid); printf("Password : %s\n", password); printf("Channel : %d\n", channel); } void wifi_operator_init(const char *ssid, const char *password) { // Mode client cyw43_arch_enable_sta_mode(); cyw43_arch_wifi_connect_timeout_ms(ssid, password, CYW43_AUTH_WPA2_AES_PSK, 30000); puts("Connexion au réseau Wi-Fi..."); int status = cyw43_wifi_link_status(&cyw43_state, CYW43_ITF_STA); while (status != CYW43_LINK_UP) { sleep_ms(500); puts("Connexion en cours..."); status = cyw43_wifi_link_status(&cyw43_state, CYW43_ITF_STA); } puts("Connexion établie!"); }