esp32-sip-client-with-headset/main/config/config_manager.h

125 lines
2.8 KiB
C

#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "esp_err.h"
#ifdef __cplusplus
extern "C" {
#endif
// Maximale Längen
#define CONFIG_MAX_SSID_LEN 32
#define CONFIG_MAX_PASSWORD_LEN 64
#define CONFIG_MAX_IP_LEN 16
#define CONFIG_MAX_SIP_USER_LEN 64
#define CONFIG_MAX_SIP_SERVER_LEN 128
#define CONFIG_MAX_BT_NAME_LEN 32
#define CONFIG_MAX_BT_ADDR_LEN 18 // "XX:XX:XX:XX:XX:XX"
// IP-Konfigurationsmodus
typedef enum {
IP_MODE_DHCP = 0,
IP_MODE_STATIC = 1
} ip_mode_t;
// WLAN-Konfiguration
typedef struct {
char ssid[CONFIG_MAX_SSID_LEN + 1];
char password[CONFIG_MAX_PASSWORD_LEN + 1];
ip_mode_t ip_mode;
char static_ip[CONFIG_MAX_IP_LEN + 1];
char gateway[CONFIG_MAX_IP_LEN + 1];
char netmask[CONFIG_MAX_IP_LEN + 1];
char dns[CONFIG_MAX_IP_LEN + 1];
bool configured; // true wenn WLAN-Daten vorhanden
} wifi_config_data_t;
// SIP-Konfiguration
typedef struct {
char server[CONFIG_MAX_SIP_SERVER_LEN + 1];
uint16_t port;
char username[CONFIG_MAX_SIP_USER_LEN + 1];
char password[CONFIG_MAX_PASSWORD_LEN + 1];
char display_name[CONFIG_MAX_SIP_USER_LEN + 1];
bool configured;
} sip_config_data_t;
// Bluetooth-Gerät
typedef struct {
char name[CONFIG_MAX_BT_NAME_LEN + 1];
char address[CONFIG_MAX_BT_ADDR_LEN + 1];
bool paired;
bool auto_connect;
uint8_t priority; // Niedrigere Zahl = höhere Priorität
} bt_device_config_t;
// Bluetooth-Konfiguration
typedef struct {
char device_name[CONFIG_MAX_BT_NAME_LEN + 1];
bt_device_config_t devices[CONFIG_BSC_MAX_BT_DEVICES];
uint8_t device_count;
bool discoverable;
} bt_config_data_t;
// Gesamtkonfiguration
typedef struct {
wifi_config_data_t wifi;
sip_config_data_t sip;
bt_config_data_t bluetooth;
} device_config_t;
/**
* Initialisiert den Config-Manager und lädt gespeicherte Konfiguration
*/
esp_err_t config_manager_init(void);
/**
* Gibt die aktuelle Konfiguration zurück
*/
const device_config_t* config_get(void);
/**
* Speichert die WLAN-Konfiguration
*/
esp_err_t config_save_wifi(const wifi_config_data_t* wifi_config);
/**
* Speichert die SIP-Konfiguration
*/
esp_err_t config_save_sip(const sip_config_data_t* sip_config);
/**
* Speichert ein Bluetooth-Gerät
*/
esp_err_t config_save_bt_device(const bt_device_config_t* device);
/**
* Entfernt ein Bluetooth-Gerät
*/
esp_err_t config_remove_bt_device(const char* address);
/**
* Setzt alle Bluetooth-Geräte zurück
*/
esp_err_t config_clear_bt_devices(void);
/**
* Setzt die gesamte Konfiguration auf Werkseinstellungen zurück
*/
esp_err_t config_factory_reset(void);
/**
* Prüft ob WLAN konfiguriert ist
*/
bool config_wifi_is_configured(void);
/**
* Prüft ob SIP konfiguriert ist
*/
bool config_sip_is_configured(void);
#ifdef __cplusplus
}
#endif