summaryrefslogtreecommitdiff
path: root/src/components/motor
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/motor')
-rw-r--r--src/components/motor/MotorController.cpp8
-rw-r--r--src/components/motor/MotorController.h9
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;