diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-16 10:22:30 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-16 10:22:30 +1000 |
| commit | 62dce8d9fcc139ca6dc2041c86723d19faab304f (patch) | |
| tree | 91cf03100f8143b2ab6769e39bae93c98bce6df3 /src | |
| parent | 544b0013b104a6584660724ccd502adcccd7ca6c (diff) | |
| download | tangara-fw-62dce8d9fcc139ca6dc2041c86723d19faab304f.tar.gz | |
Save current output mode to nvs
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/include/nvs.hpp | 8 | ||||
| -rw-r--r-- | src/drivers/nvs.cpp | 19 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/drivers/include/nvs.hpp b/src/drivers/include/nvs.hpp index 32c2ae73..913ad51e 100644 --- a/src/drivers/include/nvs.hpp +++ b/src/drivers/include/nvs.hpp @@ -6,6 +6,7 @@ #pragma once +#include <stdint.h> #include <optional> #include "esp_err.h" @@ -24,6 +25,13 @@ class NvsStorage { auto PreferredBluetoothDevice() -> std::optional<bluetooth::mac_addr_t>; auto PreferredBluetoothDevice(std::optional<bluetooth::mac_addr_t>) -> void; + enum class Output : uint8_t { + kHeadphones = 0, + kBluetooth = 1, + }; + auto OutputMode() -> Output; + auto OutputMode(Output) -> void; + explicit NvsStorage(nvs_handle_t); ~NvsStorage(); diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp index 8c7e54a8..d2110764 100644 --- a/src/drivers/nvs.cpp +++ b/src/drivers/nvs.cpp @@ -22,6 +22,7 @@ static constexpr uint8_t kSchemaVersion = 1; static constexpr char kKeyVersion[] = "ver"; static constexpr char kKeyBluetooth[] = "bt"; +static constexpr char kKeyOutput[] = "out"; auto NvsStorage::Open() -> NvsStorage* { esp_err_t err = nvs_flash_init(); @@ -81,6 +82,7 @@ auto NvsStorage::PreferredBluetoothDevice() } return out; } + auto NvsStorage::PreferredBluetoothDevice( std::optional<bluetooth::mac_addr_t> addr) -> void { if (!addr) { @@ -92,4 +94,21 @@ auto NvsStorage::PreferredBluetoothDevice( nvs_commit(handle_); } +auto NvsStorage::OutputMode() -> Output { + uint8_t out = 0; + nvs_get_u8(handle_, kKeyOutput, &out); + switch (out) { + case static_cast<uint8_t>(Output::kBluetooth): + return Output::kHeadphones; + case static_cast<uint8_t>(Output::kHeadphones): + default: + return Output::kHeadphones; + } +} + +auto NvsStorage::OutputMode(Output out) -> void { + nvs_set_u8(handle_, kKeyOutput, static_cast<uint8_t>(out)); + nvs_commit(handle_); +} + } // namespace drivers |
