diff options
Diffstat (limited to 'src/drivers')
| -rw-r--r-- | src/drivers/include/drivers/nvs.hpp | 10 | ||||
| -rw-r--r-- | src/drivers/nvs.cpp | 29 |
2 files changed, 39 insertions, 0 deletions
diff --git a/src/drivers/include/drivers/nvs.hpp b/src/drivers/include/drivers/nvs.hpp index 18bc5de6..e3a105f8 100644 --- a/src/drivers/include/drivers/nvs.hpp +++ b/src/drivers/include/drivers/nvs.hpp @@ -110,6 +110,15 @@ class NvsStorage { auto OutputMode() -> Output; auto OutputMode(Output) -> void; + enum class HapticsModes : uint8_t { + kDisabled = 0, + kMinimal = 1, + kStrong = 2, + }; + auto HapticsMode() -> HapticsModes; + auto HapticsMode(HapticsModes) -> void; + static auto intToHapticsMode(int raw) -> HapticsModes; + auto ScreenBrightness() -> uint_fast8_t; auto ScreenBrightness(uint_fast8_t) -> void; @@ -177,6 +186,7 @@ class NvsStorage { Setting<uint8_t> input_mode_; Setting<uint8_t> locked_input_mode_; Setting<uint8_t> output_mode_; + Setting<uint8_t> haptics_mode_; Setting<std::string> theme_; diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp index 02a0058b..04a93fd9 100644 --- a/src/drivers/nvs.cpp +++ b/src/drivers/nvs.cpp @@ -35,6 +35,7 @@ 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 kKeyHaptics[] = "haptic_mode"; static constexpr char kKeyScrollSensitivity[] = "scroll"; static constexpr char kKeyLockPolarity[] = "lockpol"; static constexpr char kKeyDisplayCols[] = "dispcols"; @@ -275,6 +276,7 @@ NvsStorage::NvsStorage(nvs_handle_t handle) input_mode_(kKeyPrimaryInput), locked_input_mode_(kKeyLockedInput), output_mode_(kKeyOutput), + haptics_mode_(kKeyHaptics), theme_{kKeyInterfaceTheme}, bt_preferred_(kKeyBluetoothPreferred), bt_names_(kKeyBluetoothNames), @@ -304,6 +306,7 @@ auto NvsStorage::Read() -> void { input_mode_.read(handle_); locked_input_mode_.read(handle_); output_mode_.read(handle_); + haptics_mode_.read(handle_); theme_.read(handle_); bt_preferred_.read(handle_); bt_names_.read(handle_); @@ -328,6 +331,7 @@ auto NvsStorage::Write() -> bool { input_mode_.write(handle_); locked_input_mode_.write(handle_); output_mode_.write(handle_); + haptics_mode_.write(handle_); theme_.write(handle_); bt_preferred_.write(handle_); bt_names_.write(handle_); @@ -483,6 +487,31 @@ auto NvsStorage::OutputMode(Output out) -> void { nvs_commit(handle_); } +auto NvsStorage::HapticsMode() -> HapticsModes { + std::lock_guard<std::mutex> lock{mutex_}; + int val = haptics_mode_.get().value_or(static_cast<uint8_t>(HapticsModes::kMinimal)); + return intToHapticsMode(val); +} + +auto NvsStorage::intToHapticsMode(int raw) -> HapticsModes { + switch (raw) { + case static_cast<int>(HapticsModes::kDisabled): + return HapticsModes::kDisabled; + case static_cast<int>(HapticsModes::kMinimal): + return HapticsModes::kMinimal; + case static_cast<int>(HapticsModes::kStrong): + return HapticsModes::kStrong; + default: + return HapticsModes::kStrong; + } +} + +auto NvsStorage::HapticsMode(HapticsModes mode) -> void { + std::lock_guard<std::mutex> lock{mutex_}; + haptics_mode_.set(static_cast<uint8_t>(mode)); +} + + auto NvsStorage::FastCharge() -> bool { std::lock_guard<std::mutex> lock{mutex_}; return fast_charge_.get().value_or(true); |
