diff options
| author | slord <slord@noreply.codeberg.org> | 2025-02-04 21:17:57 +0000 |
|---|---|---|
| committer | slord <slord@noreply.codeberg.org> | 2025-02-04 21:17:57 +0000 |
| commit | 508c8c79102c6d095f92eaf72f42d3f61ef5e7ba (patch) | |
| tree | 8ea20e3fd06a5c6f84d88eb822ba8ef5f8667bcd /src/drivers/nvs.cpp | |
| parent | ff733e8f0c827e3d2d91bb7db29a85807867ab5e (diff) | |
| parent | 813db15da84ee82066564b51f83be451cf121a00 (diff) | |
| download | tangara-fw-508c8c79102c6d095f92eaf72f42d3f61ef5e7ba.tar.gz | |
Merge branch 'main' into playlist-browser
Diffstat (limited to 'src/drivers/nvs.cpp')
| -rw-r--r-- | src/drivers/nvs.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp index 6f0d874e..02a0058b 100644 --- a/src/drivers/nvs.cpp +++ b/src/drivers/nvs.cpp @@ -34,6 +34,7 @@ static constexpr char kKeyAmpMaxVolume[] = "hp_vol_max"; static constexpr char kKeyAmpCurrentVolume[] = "hp_vol"; static constexpr char kKeyAmpLeftBias[] = "hp_bias"; static constexpr char kKeyPrimaryInput[] = "in_pri"; +static constexpr char kKeyLockedInput[] = "in_locked"; static constexpr char kKeyScrollSensitivity[] = "scroll"; static constexpr char kKeyLockPolarity[] = "lockpol"; static constexpr char kKeyDisplayCols[] = "dispcols"; @@ -272,6 +273,7 @@ NvsStorage::NvsStorage(nvs_handle_t handle) amp_cur_vol_(kKeyAmpCurrentVolume), amp_left_bias_(kKeyAmpLeftBias), input_mode_(kKeyPrimaryInput), + locked_input_mode_(kKeyLockedInput), output_mode_(kKeyOutput), theme_{kKeyInterfaceTheme}, bt_preferred_(kKeyBluetoothPreferred), @@ -300,6 +302,7 @@ auto NvsStorage::Read() -> void { amp_cur_vol_.read(handle_); amp_left_bias_.read(handle_); input_mode_.read(handle_); + locked_input_mode_.read(handle_); output_mode_.read(handle_); theme_.read(handle_); bt_preferred_.read(handle_); @@ -323,6 +326,7 @@ auto NvsStorage::Write() -> bool { amp_cur_vol_.write(handle_); amp_left_bias_.write(handle_); input_mode_.write(handle_); + locked_input_mode_.write(handle_); output_mode_.write(handle_); theme_.write(handle_); bt_preferred_.write(handle_); @@ -570,6 +574,23 @@ auto NvsStorage::PrimaryInput(InputModes mode) -> void { input_mode_.set(static_cast<uint8_t>(mode)); } +auto NvsStorage::LockedInput() -> LockedInputModes { + std::lock_guard<std::mutex> lock{mutex_}; + switch (locked_input_mode_.get().value_or(static_cast<uint8_t>(LockedInputModes::kDisabled))) { + case static_cast<uint8_t>(LockedInputModes::kDisabled): + return LockedInputModes::kDisabled; + case static_cast<uint8_t>(LockedInputModes::kVolumeOnly): + return LockedInputModes::kVolumeOnly; + default: + return LockedInputModes::kDisabled; + } +} + +auto NvsStorage::LockedInput(LockedInputModes mode) -> void { + std::lock_guard<std::mutex> lock{mutex_}; + locked_input_mode_.set(static_cast<uint8_t>(mode)); +} + auto NvsStorage::QueueRepeatMode() -> uint8_t { std::lock_guard<std::mutex> lock{mutex_}; return queue_repeat_mode_.get().value_or(0); |
