diff options
Diffstat (limited to 'src/components/motor')
| -rw-r--r-- | src/components/motor/MotorController.cpp | 8 | ||||
| -rw-r--r-- | src/components/motor/MotorController.h | 9 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/components/motor/MotorController.cpp b/src/components/motor/MotorController.cpp index b895c83..714bff6 100644 --- a/src/components/motor/MotorController.cpp +++ b/src/components/motor/MotorController.cpp @@ -9,7 +9,9 @@ APP_TIMER_DEF(longVibTimer); using namespace Pinetime::Controllers; -void MotorController::Init() { +void MotorController::Init(System::SystemTask* systemTask) { + this->systemTask = systemTask; + nrf_gpio_cfg_output(PinMap::Motor); nrf_gpio_pin_set(PinMap::Motor); @@ -29,10 +31,6 @@ void MotorController::RunForDuration(uint8_t motorDuration) { && xTimerStart(shortVibTimer, 0) == pdPASS) { return; } - if (xTimerChangePeriodFromISR(shortVibTimer, APP_TIMER_TICKS(motorDuration), NULL) == pdPASS - && xTimerStartFromISR(shortVibTimer, NULL) == pdPASS) { - return; - } nrf_gpio_pin_set(PinMap::Motor); } diff --git a/src/components/motor/MotorController.h b/src/components/motor/MotorController.h index 3c6cbd2..99a4e64 100644 --- a/src/components/motor/MotorController.h +++ b/src/components/motor/MotorController.h @@ -5,18 +5,25 @@ #include <cstdint> namespace Pinetime { + namespace System { + class SystemTask; + } namespace Controllers { class MotorController { public: MotorController() = default; - void Init(); void RunForDuration(uint8_t motorDuration); void StartRinging(); void StopRinging(); + protected: + friend class Pinetime::System::SystemTask; + void Init(System::SystemTask* systemTask); + private: + System::SystemTask* systemTask = nullptr; static void Ring(TimerHandle_t xTimer); static void StopMotor(TimerHandle_t xTimer); TimerHandle_t shortVibTimer; |
