#include "components/timer/TimerController.h" using namespace Pinetime::Controllers; TimerController::TimerController(void* const timerData, TimerCallbackFunction_t timerCallbackFunction) { timer = xTimerCreate("Timer", 1, pdFALSE, timerData, timerCallbackFunction); } void TimerController::StartTimer(std::chrono::milliseconds duration) { xTimerChangePeriod(timer, pdMS_TO_TICKS(duration.count()), 0); xTimerStart(timer, 0); } std::chrono::milliseconds TimerController::GetTimeRemaining() { if (IsRunning()) { TickType_t remainingTime = xTimerGetExpiryTime(timer) - xTaskGetTickCount(); return std::chrono::milliseconds(remainingTime * 1000 / configTICK_RATE_HZ); } return std::chrono::milliseconds(0); } void TimerController::StopTimer() { xTimerStop(timer, 0); } bool TimerController::IsRunning() { return (xTimerIsTimerActive(timer) == pdTRUE); }