Added periodic timers

This commit is contained in:
@CarlWachter
2024-05-31 13:54:09 +02:00
parent 1877c82f37
commit dcc647a062
2 changed files with 8 additions and 6 deletions

View File

@@ -2,17 +2,18 @@
#include <sta/debug/debug.hpp>
#include <sta/debug/assert.hpp>
#include "cmsis_os2.h"
namespace sta {
RtosTimer::RtosTimer(std::function<void(void*)> callback, void *arg)
RtosTimer::RtosTimer(std::function<void(void*)> callback, void *arg, osTimerType_t type /*= osTimerOnce */)
: timer_id_{NULL},
timer_attr_{.name="Timer", .attr_bits=osTimerOnce},
timer_attr_{.name="Timer", .attr_bits=type},
callback_{callback},
callbackArg_{arg},
running_{false}
{
// Pass an anonymous function as the callback which will invoke the currently registered callback.
timer_id_ = osTimerNew(timeoutHandler, osTimerOnce, this, &timer_attr_);
// Pass an anonymous function as the callback which will invoke the currently registered callback.
timer_id_ = osTimerNew(timeoutHandler, type, this, &timer_attr_);
STA_ASSERT_MSG(timer_id_ != NULL, "Failed to create timer!");
}
@@ -68,7 +69,7 @@ namespace sta {
void RtosTimer::timeoutHandler(void* arg)
{
RtosTimer* timer = static_cast<RtosTimer*>(arg);
timer->running_ = false;
timer->running_ = timer->isRunning();
timer->callback_(timer->callbackArg_);
}