86 lines
1.8 KiB
C
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
|