timer type as boolean

This commit is contained in:
@CarlWachter 2024-06-01 13:01:49 +02:00
parent 1d77846e9e
commit 0dedcc9f82
2 changed files with 6 additions and 6 deletions

View File

@ -30,11 +30,9 @@ namespace sta
* *
* @param callback The callback function to call upon timer timeout. * @param callback The callback function to call upon timer timeout.
* @param arg The argument to pass to the callback function. * @param arg The argument to pass to the callback function.
* @param type The type of timer to create. The Options are: * @param repeating True if the timer should repeat. False if it should only run once.
* - osTimerOnce: One-shot timer.
* - osTimerPeriodic: Repeating timer.
*/ */
RtosTimer(std::function<void(void*)>, void *arg, osTimerType_t type = osTimerOnce); RtosTimer(std::function<void(void*)>, void *arg, bool repeating = false);
/** /**
* @brief Initializes the timer with a callback that has no effect. * @brief Initializes the timer with a callback that has no effect.

View File

@ -5,13 +5,15 @@
#include "cmsis_os2.h" #include "cmsis_os2.h"
namespace sta { namespace sta {
RtosTimer::RtosTimer(std::function<void(void*)> callback, void *arg, osTimerType_t type /*= osTimerOnce */) RtosTimer::RtosTimer(std::function<void(void*)> callback, void *arg, bool repeating /*= false */)
: timer_id_{NULL}, : timer_id_{NULL},
timer_attr_{.name="Timer", .attr_bits=type}, timer_attr_{.name="Timer", .attr_bits=repeating ? osTimerPeriodic : osTimerOnce},
callback_{callback}, callback_{callback},
callbackArg_{arg}, callbackArg_{arg},
running_{false} running_{false}
{ {
osTimerType_t type = repeating ? osTimerPeriodic : osTimerOnce;
// Pass an anonymous function as the callback which will invoke the currently registered callback. // Pass an anonymous function as the callback which will invoke the currently registered callback.
timer_id_ = osTimerNew(timeoutHandler, type, this, &timer_attr_); timer_id_ = osTimerNew(timeoutHandler, type, this, &timer_attr_);