diff --git a/main controller code/.vscode/c_cpp_properties.json b/main controller code/.vscode/c_cpp_properties.json index 8c3afb1..d2b9c22 100644 --- a/main controller code/.vscode/c_cpp_properties.json +++ b/main controller code/.vscode/c_cpp_properties.json @@ -1,10 +1,11 @@ { "env": { "myDefaultIncludePath": [ + "${workspaceFolder}/src/include/", "${env:PICO_SDK_PATH}/src/**/include/", + "${workspaceFolder}/lib/*/src/", "${env:PICO_SDK_PATH}/lib/**/include/", - "${workspaceFolder}/build/generated/pico_base/", - "${workspaceFolder}/src/include/" + "${workspaceFolder}/build/generated/pico_base/" ], "myCompilerPath": "/usr/bin/arm-none-eabi-gcc" }, diff --git a/main controller code/.vscode/settings.json b/main controller code/.vscode/settings.json index a0b6592..cb0aebb 100644 --- a/main controller code/.vscode/settings.json +++ b/main controller code/.vscode/settings.json @@ -12,6 +12,8 @@ "udp_client.h": "c", "udp_payload.h": "c", "udp.h": "c", - "opt.h": "c" + "opt.h": "c", + "cyw43_arch.h": "c", + "wifi_operator.h": "c" } } \ No newline at end of file diff --git a/main controller code/src/include/lwipopts.h b/main controller code/src/include/lwipopts.h index b5d3861..91c3b05 100644 --- a/main controller code/src/include/lwipopts.h +++ b/main controller code/src/include/lwipopts.h @@ -44,8 +44,8 @@ #define LINK_STATS 0 // #define ETH_PAD_SIZE 2 #define LWIP_CHKSUM_ALGORITHM 3 -#define LWIP_DHCP 1 -#define LWIP_DHCP_SERVER 1 +#define LWIP_DHCP 0 +#define LWIP_DHCP_SERVER 0 #define LWIP_IPV4 1 #define LWIP_TCP 1 #define LWIP_UDP 1 diff --git a/main controller code/src/robot.c b/main controller code/src/robot.c index 36ba336..8b0ac25 100644 --- a/main controller code/src/robot.c +++ b/main controller code/src/robot.c @@ -12,6 +12,13 @@ int robot_init(void) { stdio_init_all(); + if(cyw43_arch_init()) + { + return -1; + } + + cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, 1); + udp_client_init(); wifi_operator_init(); diff --git a/main controller code/src/wifi_operator.c b/main controller code/src/wifi_operator.c index 7fc7328..17e32fc 100644 --- a/main controller code/src/wifi_operator.c +++ b/main controller code/src/wifi_operator.c @@ -9,14 +9,71 @@ void wifi_operator_init(void) { // Mode client cyw43_arch_enable_sta_mode(); - cyw43_arch_wifi_connect_timeout_ms(WIFI_OPERATOR_SSID, WIFI_OPERATOR_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) + + // Désactiver le mode d'économie d'énergie + cyw43_wifi_pm(&cyw43_state, CYW43_NO_POWERSAVE_MODE); + + // Afficher les paramètres de connexion + printf("Tentative de connexion à: SSID='%s'\n", WIFI_OPERATOR_SSID); + + // Configuration IP + ip4_addr_t ip, netmask, gateway; + IP4_ADDR(&ip, 192, 168, 128, 2); + IP4_ADDR(&netmask, 255, 255, 255, 0); + IP4_ADDR(&gateway, 192, 168, 128, 1); + + // Configuration réseau avant connexion + netif_set_up(netif_default); + netif_set_addr(netif_default, &ip, &netmask, &gateway); + + puts("Configuration IP effectuée"); + + int connect_result = 1; + // Tentative de connexion + puts("Attente avant connexion..."); + sleep_ms(2000); // Attendre 2 secondes que le WiFi soit bien initialisé + + do { - sleep_ms(500); - puts("Connexion en cours..."); - status = cyw43_wifi_link_status(&cyw43_state, CYW43_ITF_STA); + serialDebug("Tentative de connexion au réseau Wi-Fi..."); + connect_result = cyw43_arch_wifi_connect_timeout_ms(ssid, password, CYW43_AUTH_WPA2_AES_PSK, 10000); + + if(connect_result != 0) + { + char error_message[100]; + snprintf(error_message, sizeof(error_message), "Échec de la connexion WiFi - Code d'erreur: %d", connect_result); + serialDebug(error_message); + + const char *error_description; + switch (connect_result) + { + case -1: + error_description = "Erreur générale"; + break; + case -2: + error_description = "Point d'accès non trouvé"; + break; + case -3: + error_description = "Mot de passe incorrect"; + break; + default: + error_description = "Erreur inconnue"; + } + puts(error_description); + } } - puts("Connexion établie!"); + while(connect_result); + + // Configuration de l'interface réseau + if(!netif_default) + { + puts("Erreur: Interface réseau non disponible"); + return; + } + + netif_set_up(netif_default); + netif_set_link_up(netif_default); + netif_set_addr(netif_default, &ip, &netmask, &gateway); + + puts("Connexion établie avec succès!"); }