// // Created by kindring on 2025/12/25. // #ifndef YUNTUNE_BLE_NVS_H #define YUNTUNE_BLE_NVS_H #include #include #include "esp_err.h" #include "app_manager.h" #define BT_DEVICE_NAME_MAX_LEN 64 #define MAX_RECONNECT_ATTEMPTS 3 #define MAX_BT_DEVICES 3 // 最多保存3个蓝牙设备信息 #define NVS_NAMESPACE "ble_config" #define DEFAULT_DEVICE_NAME "YunTune" #define DEVICE_NAME_KEY "dev_name" #define AUTO_RECONNECT_KEY "auto_reconn" #define AUDIO_MODE_KEY "audio_mode" #define WIFI_MODE_KEY "wifi_mode" #define WIFI_SSID_KEY "wifi_ssid" #define WIFI_PASSWORD_KEY "wifi_pass" #define AP_SSID_KEY "ap_ssid" #define AP_PASSWORD_KEY "ap_pass" // 蓝牙设备信息键名定义 #define BT_DEVICE_LIST_KEY "bt_list" /** * wifi 工作模式 */ typedef enum { // wifi 热点模式 WIFI_MODE_AP = 0, // wifi 客户端模式 WIFI_MODE_STA, // 自动模式, 连接sta失败时自动切换为AP模式 WIFI_MODE_AUTO, WIFI_MODE_MAX } wifi_mode_t; // 蓝牙设备信息结构 typedef struct { uint8_t bda[6]; // 蓝牙设备地址 char device_name[BT_DEVICE_NAME_MAX_LEN]; // 设备名称 bool is_paired; // 是否已配对 uint32_t connect_count; // 连接次数 uint64_t last_connect_time; // 最后连接时间戳 bool is_valid; // 记录是否有效 } bt_device_info_t; // 蓝牙设备信息数组 typedef struct { bt_device_info_t devices[MAX_BT_DEVICES]; } bt_device_list_t; // 设备基础信息配置 typedef struct { // 蓝牙设备显示的名称, 默认为"YunTune"不允许更改 char device_name[BT_DEVICE_NAME_MAX_LEN]; // 是否允许自动重连 bool auto_reconnect; audio_mode_t audio_mode; wifi_mode_t wifi_mode; // 重连等待 时间, 每次重连等待 n 秒, 失败后切换下一个连接, int reconnect_wait_time; int reconnect_max_attempts; // Wi-Fi ssid 依赖 auto_connect_wifi char wifi_ssid[32]; // Wi-Fi password 依赖 auto_connect_wifi char wifi_password[64]; // AP模式下配置的ssid和密码 默认为"YunTune" char ap_ssid[32]; char ap_password[64]; } device_config_t; esp_err_t ble_nvs_init(device_config_t *device_config); esp_err_t bt_device_load_config(device_config_t *device_config); esp_err_t bt_device_save_config(const device_config_t *device_config); esp_err_t bt_device_load_bt_info(bt_device_info_t *bt_info); esp_err_t bt_device_save_bt_info(const bt_device_info_t *bt_info); esp_err_t bt_device_add_or_update(const bt_device_info_t *bt_info); esp_err_t bt_device_get_list(bt_device_list_t *device_list); esp_err_t bt_device_reset_config(void); #endif //YUNTUNE_BLE_NVS_H