summaryrefslogtreecommitdiff
path: root/src/drivers/nvs.cpp
diff options
context:
space:
mode:
authorRobin Howard <robin@rhoward.id.au>2024-04-19 16:03:35 +1000
committerRobin Howard <robin@rhoward.id.au>2024-04-19 16:03:53 +1000
commit7c075cf5b776feaed2065f936dff0c176635b89d (patch)
treed89dae49799dc684a9870361117789085b132854 /src/drivers/nvs.cpp
parente39754ba105213c133407e2dacb5fd31f3873e4c (diff)
downloadtangara-fw-7c075cf5b776feaed2065f936dff0c176635b89d.tar.gz
Adds LRA haptic support (open-loop only for now).
Diffstat (limited to 'src/drivers/nvs.cpp')
-rw-r--r--src/drivers/nvs.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/drivers/nvs.cpp b/src/drivers/nvs.cpp
index fbdb5286..c8befe48 100644
--- a/src/drivers/nvs.cpp
+++ b/src/drivers/nvs.cpp
@@ -39,6 +39,7 @@ static constexpr char kKeyScrollSensitivity[] = "scroll";
static constexpr char kKeyLockPolarity[] = "lockpol";
static constexpr char kKeyDisplayCols[] = "dispcols";
static constexpr char kKeyDisplayRows[] = "disprows";
+static constexpr char kKeyHapticMotorType[] = "hapticmtype";
static constexpr char kKeyDbAutoIndex[] = "dbautoindex";
static auto nvs_get_string(nvs_handle_t nvs, const char* key)
@@ -166,6 +167,7 @@ NvsStorage::NvsStorage(nvs_handle_t handle)
lock_polarity_(kKeyLockPolarity),
display_cols_(kKeyDisplayCols),
display_rows_(kKeyDisplayRows),
+ haptic_motor_type_(kKeyHapticMotorType),
brightness_(kKeyBrightness),
sensitivity_(kKeyScrollSensitivity),
amp_max_vol_(kKeyAmpMaxVolume),
@@ -188,6 +190,7 @@ auto NvsStorage::Read() -> void {
lock_polarity_.read(handle_);
display_cols_.read(handle_);
display_rows_.read(handle_);
+ haptic_motor_type_.read(handle_),
brightness_.read(handle_);
sensitivity_.read(handle_);
amp_max_vol_.read(handle_);
@@ -205,6 +208,7 @@ auto NvsStorage::Write() -> bool {
lock_polarity_.write(handle_);
display_cols_.write(handle_);
display_rows_.write(handle_);
+ haptic_motor_type_.write(handle_),
brightness_.write(handle_);
sensitivity_.write(handle_);
amp_max_vol_.write(handle_);
@@ -243,6 +247,16 @@ auto NvsStorage::LockPolarity(bool p) -> void {
lock_polarity_.set(p);
}
+auto NvsStorage::HapticMotorIsErm() -> bool {
+ std::lock_guard<std::mutex> lock{mutex_};
+ return haptic_motor_type_.get().value_or(0) > 0;
+}
+
+auto NvsStorage::HapticMotorIsErm(bool p) -> void {
+ std::lock_guard<std::mutex> lock{mutex_};
+ haptic_motor_type_.set(p);
+}
+
auto NvsStorage::DisplaySize()
-> std::pair<std::optional<uint16_t>, std::optional<uint16_t>> {
std::lock_guard<std::mutex> lock{mutex_};