summaryrefslogtreecommitdiff
path: root/src/components/timer
diff options
context:
space:
mode:
authorMichele Bini <michele.bini@gmail.com>2022-04-16 11:43:58 (GMT)
committerMichele Bini <michele.bini@gmail.com>2022-04-16 12:12:52 (GMT)
commit2e367ec0aea857a1aee7306a2de893f96a60f2df (patch)
tree86439281fb0ed810b83161cb36985f2a731b22bc /src/components/timer
parentebf3859407adba9da7acbc77b1ebabfd39d80a37 (diff)
parentc9808e29f1bbfbd1396d7b83212f6d223d52f99d (diff)
Merge branch 'alarm-fix-work' into edge
# Conflicts: # src/components/timer/TimerController.cpp
Diffstat (limited to 'src/components/timer')
-rw-r--r--src/components/timer/TimerController.cpp22
-rw-r--r--src/components/timer/TimerController.h3
2 files changed, 13 insertions, 12 deletions
diff --git a/src/components/timer/TimerController.cpp b/src/components/timer/TimerController.cpp
index d6f8ffd..35e3512 100644
--- a/src/components/timer/TimerController.cpp
+++ b/src/components/timer/TimerController.cpp
@@ -4,30 +4,28 @@
#include "components/timer/TimerController.h"
#include "systemtask/SystemTask.h"
-#include "app_timer.h"
#include "task.h"
using namespace Pinetime::Controllers;
-APP_TIMER_DEF(timerAppTimer);
-
namespace {
- void TimerEnd(void* p_context) {
- auto* controller = static_cast<Pinetime::Controllers::TimerController*>(p_context);
- if (controller != nullptr)
- controller->OnTimerEnd();
+ void TimerEnd(TimerHandle_t xTimer) {
+ auto controller = static_cast<Pinetime::Controllers::TimerController*>(pvTimerGetTimerID(xTimer));
+ controller->OnTimerEnd();
}
}
void TimerController::Init() {
- app_timer_create(&timerAppTimer, APP_TIMER_MODE_SINGLE_SHOT, TimerEnd);
+ timerAppTimer = xTimerCreate("timerAppTm", 1, pdFALSE, this, TimerEnd);
}
void TimerController::StartTimer(uint32_t duration) {
- app_timer_stop(timerAppTimer);
+ xTimerStop(timerAppTimer,0);
auto currentTicks = xTaskGetTickCount();
- app_timer_start(timerAppTimer, APP_TIMER_TICKS(duration), this);
- endTicks = currentTicks + APP_TIMER_TICKS(duration);
+ TickType_t durationTicks = APP_TIMER_TICKS(duration);
+ xTimerChangePeriod(timerAppTimer, durationTicks, 0);
+ xTimerStart(timerAppTimer, 0);
+ endTicks = currentTicks + durationTicks;
timerRunning = true;
overtime = false;
}
@@ -44,7 +42,7 @@ int32_t TimerController::GetSecondsRemaining() {
}
void TimerController::StopTimer() {
- app_timer_stop(timerAppTimer);
+ xTimerStop(timerAppTimer, 0);
timerRunning = false;
overtime = false;
}
diff --git a/src/components/timer/TimerController.h b/src/components/timer/TimerController.h
index dbc9863..8542987 100644
--- a/src/components/timer/TimerController.h
+++ b/src/components/timer/TimerController.h
@@ -1,5 +1,7 @@
#pragma once
+#include <FreeRTOS.h>
+#include <timers.h>
#include <cstdint>
#include "app_timer.h"
#include "portmacro_cmsis.h"
@@ -32,6 +34,7 @@ namespace Pinetime {
private:
System::SystemTask* systemTask = nullptr;
+ TimerHandle_t timerAppTimer;
TickType_t endTicks;
bool timerRunning = false;
bool overtime = false;