| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- #pragma once
- #include "esp_err.h"
- #include <stdbool.h>
- /**
- * Persistent settings storage (NVS)
- */
- // Default device name (used if none configured)
- #define SETTINGS_DEFAULT_DEVICE_NAME "ESP32 AirPlay"
- /**
- * Initialize settings module (call once at startup)
- */
- esp_err_t settings_init(void);
- /**
- * Get saved volume in dB
- * @param volume_db Output: volume in dB (0 = max, -30 = mute)
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved value
- */
- esp_err_t settings_get_volume(float *volume_db);
- /**
- * Apply volume (updates cached value and DAC, does NOT write to NVS).
- * @param volume_db Volume in dB (0 = max, -30 = mute)
- */
- esp_err_t settings_set_volume(float volume_db);
- /**
- * Persist the current cached volume to NVS.
- * Call once at session disconnect rather than on every change.
- */
- esp_err_t settings_persist_volume(void);
- #ifdef CONFIG_BT_A2DP_ENABLE
- /**
- * Get saved Bluetooth volume (AVRC 0-127 scale).
- * @param volume Output: 0 (mute) to 127 (max)
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved value
- */
- esp_err_t settings_get_bt_volume(uint8_t *volume);
- /**
- * Update cached Bluetooth volume (does NOT write to NVS).
- * Caller is responsible for calling dac_set_volume().
- * @param volume 0 (mute) to 127 (max)
- */
- esp_err_t settings_set_bt_volume(uint8_t volume);
- /**
- * Persist the current cached BT volume to NVS.
- * Call once at session disconnect rather than on every change.
- */
- esp_err_t settings_persist_bt_volume(void);
- /**
- * Get the last connected Bluetooth Device Address (BDA)
- * @param bda Output array (6 bytes)
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved BDA
- */
- esp_err_t settings_get_last_bt_bda(uint8_t *bda);
- /**
- * Set the last connected Bluetooth Device Address (BDA)
- * @param bda Input array (6 bytes)
- */
- esp_err_t settings_set_last_bt_bda(const uint8_t *bda);
- /**
- * Clear the saved Bluetooth Device Address (BDA)
- */
- esp_err_t settings_clear_last_bt_bda(void);
- #endif
- /**
- * Get saved WiFi SSID
- * @param ssid Output buffer for SSID
- * @param len Size of SSID buffer
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved value
- */
- esp_err_t settings_get_wifi_ssid(char *ssid, size_t len);
- /**
- * Get saved WiFi password
- * @param password Output buffer for password
- * @param len Size of password buffer
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved value
- */
- esp_err_t settings_get_wifi_password(char *password, size_t len);
- /**
- * Save WiFi credentials to persistent storage
- * @param ssid WiFi SSID
- * @param password WiFi password
- */
- esp_err_t settings_set_wifi_credentials(const char *ssid, const char *password);
- /**
- * Clear WiFi credentials from persistent storage
- */
- esp_err_t settings_clear_wifi_credentials(void);
- /**
- * Check if WiFi credentials are stored
- * @return true if credentials exist, false otherwise
- */
- bool settings_has_wifi_credentials(void);
- /**
- * Get device name (returns default if none saved)
- * @param name Output buffer for device name
- * @param len Size of name buffer
- * @return ESP_OK (always returns a valid name)
- */
- esp_err_t settings_get_device_name(char *name, size_t len);
- /**
- * Save device name to persistent storage
- * @param name Device name
- */
- esp_err_t settings_set_device_name(const char *name);
- // ---- LED settings ----
- /**
- * Get saved LED brightness (0–255). Returns compile-time default if not set.
- */
- esp_err_t settings_get_led_brightness(uint8_t *brightness);
- /**
- * Save LED brightness (0–255) to persistent storage.
- */
- esp_err_t settings_set_led_brightness(uint8_t brightness);
- /**
- * Get saved prompt volume (0–100).
- */
- esp_err_t settings_get_prompt_volume(uint8_t *volume);
- /**
- * Save prompt volume (0–100) to persistent storage.
- */
- esp_err_t settings_set_prompt_volume(uint8_t volume);
- // ---- EQ settings ----
- /** Number of EQ bands stored in NVS */
- #define SETTINGS_EQ_BANDS 15
- /**
- * Get saved EQ gains.
- * @param gains_db Output array of SETTINGS_EQ_BANDS floats
- * @return ESP_OK if found, ESP_ERR_NOT_FOUND if no saved EQ
- */
- esp_err_t settings_get_eq_gains(float gains_db[SETTINGS_EQ_BANDS]);
- /**
- * Save EQ gains to persistent storage.
- * @param gains_db Array of SETTINGS_EQ_BANDS floats (dB)
- */
- esp_err_t settings_set_eq_gains(const float gains_db[SETTINGS_EQ_BANDS]);
- /**
- * Clear saved EQ (revert to flat on next boot).
- */
- esp_err_t settings_clear_eq(void);
- /**
- * Check if EQ gains are saved.
- */
- bool settings_has_eq(void);
|