esp32-sip-client-with-headset/main/wifi/wifi_manager.h

86 lines
1.8 KiB
C

#pragma once
#include <stdbool.h>
#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