From 544b0013b104a6584660724ccd502adcccd7ca6c Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 15 Aug 2023 17:32:57 +1000 Subject: persist preferred bluetooth device in nvs --- src/drivers/nvs.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/drivers/nvs.cpp') diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp index a2de9518..8c7e54a8 100644 --- a/src/drivers/nvs.cpp +++ b/src/drivers/nvs.cpp @@ -10,6 +10,7 @@ #include #include +#include "bluetooth.hpp" #include "esp_log.h" #include "nvs.h" #include "nvs_flash.h" @@ -20,6 +21,7 @@ static constexpr char kTag[] = "nvm"; static constexpr uint8_t kSchemaVersion = 1; static constexpr char kKeyVersion[] = "ver"; +static constexpr char kKeyBluetooth[] = "bt"; auto NvsStorage::Open() -> NvsStorage* { esp_err_t err = nvs_flash_init(); @@ -70,4 +72,24 @@ auto NvsStorage::SchemaVersion() -> uint8_t { return ret; } +auto NvsStorage::PreferredBluetoothDevice() + -> std::optional { + bluetooth::mac_addr_t out{0}; + size_t size = out.size(); + if (nvs_get_blob(handle_, kKeyBluetooth, out.data(), &size) != ESP_OK) { + return {}; + } + return out; +} +auto NvsStorage::PreferredBluetoothDevice( + std::optional addr) -> void { + if (!addr) { + nvs_erase_key(handle_, kKeyBluetooth); + } else { + nvs_set_blob(handle_, kKeyBluetooth, addr.value().data(), + addr.value().size()); + } + nvs_commit(handle_); +} + } // namespace drivers -- cgit v1.2.3