From 7c075cf5b776feaed2065f936dff0c176635b89d Mon Sep 17 00:00:00 2001 From: Robin Howard Date: Fri, 19 Apr 2024 16:03:35 +1000 Subject: Adds LRA haptic support (open-loop only for now). --- src/system_fsm/booting.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/system_fsm/booting.cpp') diff --git a/src/system_fsm/booting.cpp b/src/system_fsm/booting.cpp index bd394428..a89f35d9 100644 --- a/src/system_fsm/booting.cpp +++ b/src/system_fsm/booting.cpp @@ -62,6 +62,10 @@ auto Booting::entry() -> void { sServices->nvs( std::unique_ptr(drivers::NvsStorage::OpenSync())); + // HACK: tell the unit that it has an ERM motor (we will likely default to + // LRAs in future, but all the current units in the field use ERMs.) + sServices->nvs().HapticMotorIsErm(true); + // HACK: fix up the switch polarity on newer dev units // sServices->nvs().LockPolarity(false); @@ -85,7 +89,11 @@ auto Booting::entry() -> void { sServices->samd(std::unique_ptr(drivers::Samd::Create())); sServices->touchwheel( std::unique_ptr{drivers::TouchWheel::Create()}); - sServices->haptics(std::make_unique()); + sServices->haptics(std::make_unique( + sServices->nvs().HapticMotorIsErm() + ? std::variant( + drivers::ErmMotor()) + : drivers::LraMotor())); auto adc = drivers::AdcBattery::Create(); sServices->battery(std::make_unique( -- cgit v1.2.3