From 87ef535471edfa76fd8409a3012bac6faa2eeb5a Mon Sep 17 00:00:00 2001 From: dario Date: Mon, 23 Oct 2023 23:58:23 +0200 Subject: [PATCH] Fully changed timer to fully use std::function<> --- include/sta/rtos/thread.hpp | 5 +++++ include/sta/rtos/timer.hpp | 4 ++-- src/timer.cpp | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/sta/rtos/thread.hpp b/include/sta/rtos/thread.hpp index f7d8f2d..76a4bd1 100644 --- a/include/sta/rtos/thread.hpp +++ b/include/sta/rtos/thread.hpp @@ -39,6 +39,11 @@ */ #define STA_RTOS_THREAD_FLAG_TERMINATE ( 1UL << 30 ) +/** + * @brief Request thread start. + */ +#define STA_RTOS_THREAD_FLAG_START ( 1UL << 29 ) + #define STA_RTOS_THREAD_FLAGS_ERROR_CODE_BITS UINT32_C( 0x0000000F ) #define STA_RTOS_THREAD_FLAGS_ERROR_CODE_EXT_BITS UINT32_C( 0x7FFFFFF0 ) diff --git a/include/sta/rtos/timer.hpp b/include/sta/rtos/timer.hpp index d54cfeb..ac6714f 100644 --- a/include/sta/rtos/timer.hpp +++ b/include/sta/rtos/timer.hpp @@ -28,7 +28,7 @@ namespace sta * @param callback The callback function to call upon timer timeout. * @param arg The argument to pass to the callback function. */ - RtosTimer(void (*callback)(void *arg), void *arg); + RtosTimer(std::function, void *arg); /** * @brief Initializes the timer with a callback that has no effect. @@ -43,7 +43,7 @@ namespace sta * @param callback The callback function to call upon timer timeout. * @param arg The argument to pass to the callback function. */ - void setCallback(void (*callback)(void *arg), void *arg); + void setCallback(std::function callback, void *arg); /** * @brief Run the timer for a given number of milliseconds. diff --git a/src/timer.cpp b/src/timer.cpp index 4f227b0..7a7d6d3 100644 --- a/src/timer.cpp +++ b/src/timer.cpp @@ -4,7 +4,7 @@ namespace sta { - RtosTimer::RtosTimer(void (*callback)(void *arg), void *arg) + RtosTimer::RtosTimer(std::function callback, void *arg) : timer_id_{NULL}, timer_attr_{.name="Timer", .attr_bits=osTimerOnce}, callback_{callback}, @@ -28,7 +28,7 @@ namespace sta { osTimerDelete(timer_id_); } - void RtosTimer::setCallback(void (*callback)(void *arg), void *arg) + void RtosTimer::setCallback(std::function callback, void *arg) { callback_ = callback; callbackArg_ = arg;