ble_nvs.h 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // Created by kindring on 2025/12/25.
  3. //
  4. #ifndef YUNTUNE_BLE_NVS_H
  5. #define YUNTUNE_BLE_NVS_H
  6. #include <stdbool.h>
  7. #include <stdint.h>
  8. #include "esp_err.h"
  9. #include "app_manager.h"
  10. #define BT_DEVICE_NAME_MAX_LEN 64
  11. #define MAX_RECONNECT_ATTEMPTS 3
  12. #define MAX_BT_DEVICES 3 // 最多保存3个蓝牙设备信息
  13. #define NVS_NAMESPACE "ble_config"
  14. #define DEFAULT_DEVICE_NAME "YunTune"
  15. #define DEVICE_NAME_KEY "dev_name"
  16. #define AUTO_RECONNECT_KEY "auto_reconn"
  17. #define AUDIO_MODE_KEY "audio_mode"
  18. #define WIFI_MODE_KEY "wifi_mode"
  19. #define WIFI_SSID_KEY "wifi_ssid"
  20. #define WIFI_PASSWORD_KEY "wifi_pass"
  21. #define AP_SSID_KEY "ap_ssid"
  22. #define AP_PASSWORD_KEY "ap_pass"
  23. // 蓝牙设备信息键名定义
  24. #define BT_DEVICE_LIST_KEY "bt_list"
  25. /**
  26. * wifi 工作模式
  27. */
  28. typedef enum {
  29. // wifi 热点模式
  30. WIFI_MODE_AP = 0,
  31. // wifi 客户端模式
  32. WIFI_MODE_STA,
  33. // 自动模式, 连接sta失败时自动切换为AP模式
  34. WIFI_MODE_AUTO,
  35. WIFI_MODE_MAX
  36. } wifi_mode_t;
  37. // 蓝牙设备信息结构
  38. typedef struct {
  39. uint8_t bda[6]; // 蓝牙设备地址
  40. char device_name[BT_DEVICE_NAME_MAX_LEN]; // 设备名称
  41. bool is_paired; // 是否已配对
  42. uint32_t connect_count; // 连接次数
  43. uint64_t last_connect_time; // 最后连接时间戳
  44. bool is_valid; // 记录是否有效
  45. } bt_device_info_t;
  46. // 蓝牙设备信息数组
  47. typedef struct {
  48. bt_device_info_t devices[MAX_BT_DEVICES];
  49. } bt_device_list_t;
  50. // 设备基础信息配置
  51. typedef struct {
  52. // 蓝牙设备显示的名称, 默认为"YunTune"不允许更改
  53. char device_name[BT_DEVICE_NAME_MAX_LEN];
  54. // 是否允许自动重连
  55. bool auto_reconnect;
  56. audio_mode_t audio_mode;
  57. wifi_mode_t wifi_mode;
  58. // 重连等待 时间, 每次重连等待 n 秒, 失败后切换下一个连接,
  59. int reconnect_wait_time;
  60. int reconnect_max_attempts;
  61. // Wi-Fi ssid 依赖 auto_connect_wifi
  62. char wifi_ssid[32];
  63. // Wi-Fi password 依赖 auto_connect_wifi
  64. char wifi_password[64];
  65. // AP模式下配置的ssid和密码 默认为"YunTune"
  66. char ap_ssid[32];
  67. char ap_password[64];
  68. } device_config_t;
  69. esp_err_t ble_nvs_init(device_config_t *device_config);
  70. esp_err_t bt_device_load_config(device_config_t *device_config);
  71. esp_err_t bt_device_save_config(const device_config_t *device_config);
  72. esp_err_t bt_device_load_bt_info(bt_device_info_t *bt_info);
  73. esp_err_t bt_device_save_bt_info(const bt_device_info_t *bt_info);
  74. esp_err_t bt_device_add_or_update(const bt_device_info_t *bt_info);
  75. esp_err_t bt_device_get_list(bt_device_list_t *device_list);
  76. esp_err_t bt_device_reset_config(void);
  77. #endif //YUNTUNE_BLE_NVS_H