summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/include/drivers/nvs.hpp10
-rw-r--r--src/drivers/nvs.cpp29
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);