#pragma once #include #include "esp_err.h" #include "esp_netif.h" #include "config/config_manager.h" #ifdef __cplusplus extern "C" { #endif // WiFi-Status typedef enum { WIFI_STATE_IDLE = 0, WIFI_STATE_AP_STARTED, // Hotspot läuft WIFI_STATE_STA_CONNECTING, // Verbinde mit WLAN WIFI_STATE_STA_CONNECTED, // Mit WLAN verbunden WIFI_STATE_STA_DISCONNECTED,// Verbindung verloren WIFI_STATE_STA_FAILED // Verbindung fehlgeschlagen -> Fallback zu AP } wifi_state_t; // WiFi-Event Callback typedef void (*wifi_event_callback_t)(wifi_state_t state, void* data); /** * Initialisiert den WiFi-Manager * Startet automatisch im AP-Modus wenn keine WLAN-Daten konfiguriert sind */ esp_err_t wifi_manager_init(void); /** * Startet den WiFi-Manager * - Wenn WLAN konfiguriert: Verbindet als Station * - Wenn nicht konfiguriert: Startet Hotspot */ esp_err_t wifi_manager_start(void); /** * Stoppt den WiFi-Manager */ esp_err_t wifi_manager_stop(void); /** * Verbindet mit einem WLAN-Netzwerk */ esp_err_t wifi_manager_connect(const wifi_config_data_t* config); /** * Trennt die WLAN-Verbindung und startet Hotspot */ esp_err_t wifi_manager_disconnect(void); /** * Startet explizit den Hotspot-Modus */ esp_err_t wifi_manager_start_ap(void); /** * Gibt den aktuellen Status zurück */ wifi_state_t wifi_manager_get_state(void); /** * Gibt die aktuelle IP-Adresse zurück */ esp_err_t wifi_manager_get_ip(char* ip_str, size_t len); /** * Scannt nach verfügbaren WLAN-Netzwerken */ esp_err_t wifi_manager_scan(void); /** * Registriert einen Event-Callback */ esp_err_t wifi_manager_register_callback(wifi_event_callback_t callback); /** * Gibt das netif Handle zurück */ esp_netif_t* wifi_manager_get_netif(void); #ifdef __cplusplus } #endif