From 1479e75365f036ea71eaa298797fcf81e20171c4 Mon Sep 17 00:00:00 2001 From: dario Date: Sun, 16 Feb 2025 00:02:20 +0100 Subject: [PATCH 1/6] Prototype for tick events --- include/sta/tacos/system/events.hpp | 90 +++++++++++++---------- src/events.cpp | 108 ++++++++++++++++++++++------ 2 files changed, 138 insertions(+), 60 deletions(-) diff --git a/include/sta/tacos/system/events.hpp b/include/sta/tacos/system/events.hpp index 4ec0513..012a03c 100644 --- a/include/sta/tacos/system/events.hpp +++ b/include/sta/tacos/system/events.hpp @@ -33,48 +33,64 @@ namespace sta { namespace tacos { - /** - * @brief Initialize system events. - */ - void initSystemEvents(); + namespace events + { + enum class Types : uint32_t + { + STARTUP = 0x01, + TICK_100Hz = 0x02, + TOCK_100Hz = 0x03, + TICK_50Hz = 0x04, + TOCK_50Hz = 0x05, + TICK_20Hz = 0x06, + TOCK_20Hz = 0x07, + TICK_10Hz = 0x08, + TOCK_10Hz = 0x09, + TICK_1Hz = 0x0A, + TOCK_1Hz = 0x0B + }; + /** + * @brief Initialize system events. + */ + void init(); - /** - * @brief Signal system events. - * - * @param flags System event flags - * - * @ingroup STA_RTOS_SysEvent - */ - void signalSystemEvents(uint32_t flags); + /** + * @brief Signal system events. + * + * @param flags System event flags + * + * @ingroup STA_RTOS_SysEvent + */ + void signal(uint32_t flags); - /** - * @brief Wait for system events. - * - * @param flags System event flags - * @param options osFlagsWaitAll or osFlagsWaitAny (osFlagsNoClear always set) - * @param timeout Wait timeout (0 = instant, osWaitForever = infinite) - * - * @ingroup STA_RTOS_SysEvent - */ - void waitForSystemEvents(uint32_t flags, uint32_t options, uint32_t timeout); + /** + * @brief Wait for system events. + * + * @param flags System event flags + * @param options osFlagsWaitAll or osFlagsWaitAny (osFlagsNoClear always set) + * @param timeout Wait timeout (0 = instant, osWaitForever = infinite) + * + * @ingroup STA_RTOS_SysEvent + */ + void wait(uint32_t flags, uint32_t options, uint32_t timeout); + /** + * @brief Signal startup system event. + * + * @ingroup STA_RTOS_SysEvent + */ + void signalStartup(); - /** - * @brief Signal startup system event. - * - * @ingroup STA_RTOS_SysEvent - */ - void signalStartupEvent(); - - /** - * @brief Wait for startup system event. - * - * Blocking while waiting - * - * @ingroup STA_RTOS_SysEvent - */ - void waitForStartupEvent(); + /** + * @brief Wait for startup system event. + * + * Blocking while waiting + * + * @ingroup STA_RTOS_SysEvent + */ + void waitForStartup(); + } // namespace events } // namespace tacos } // namespace sta diff --git a/src/events.cpp b/src/events.cpp index a68d4c4..33805d7 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -1,5 +1,6 @@ #include #include +#include #include @@ -11,6 +12,11 @@ namespace { // Event handle sta::RtosEvent * systemEvents = nullptr; + + uint8_t tickCounter = 0; + + // Tick timer handle + sta::RtosTimer * tickTimer = nullptr; } @@ -18,34 +24,90 @@ namespace sta { namespace tacos { - void initSystemEvents() + namespace events { - if (systemEvents == nullptr) + void init() { - systemEvents = new sta::RtosEvent(); + if (systemEvents == nullptr) + { + systemEvents = new sta::RtosEvent(); + } + + if (tickTimer == nullptr) + { + tickTimer = new sta::RtosTimer([]() { + uint32_t flags = 0x00; + + if (tickCounter % 2 == 0) + { + flags |= Types::TICK_100Hz; + + if ((tickCounter / 2) % 2 == 0) { + flags |= Types::TICK_50Hz; + } + else + { + flags |= Types::TOCK_50Hz; + } + + if (tickCounter % 10 == 0 && ((tickCounter / 10) % 2) == 0) + { + flags |= Types::TICK_10Hz; + } + else if (tickCounter % 10 == 0 && (tickCounter / 10) == 1) { + flags |= Types::TOCK_10Hz; + } + + if (tickCounter % 100 == 0 && (tickCounter / 100) % 2 == 0) { + flags |= Types::TICK_1Hz; + } + else if (tickCounter % 100 == 0 && (tickCounter / 100) == 1) { + flags |= Types::TOCK_1Hz; + } + } + else + { + flags |= Types::TOCK_100Hz; + + if (tickCounter % 5 == 0 && ((tickCounter / 5) % 2) == 0) + { + flags |= Types::TICK_20Hz; + } + else if (tickCounter % 5 == 0 && (tickCounter / 5) == 1) { + flags |= Types::TOCK_20Hz; + } + } + + tickCounter = ++tickCounter % 200; + + signal(flags); + }, true); + + tickTimer->start(10); + } } - } - void signalSystemEvents(uint32_t flags) - { - STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); - systemEvents->set(flags); - } + void signal(uint32_t flags) + { + STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); + systemEvents->set(flags); + } - void waitForSystemEvents(uint32_t flags, uint32_t options, uint32_t timeout) - { - STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); - systemEvents->peek(flags, timeout); - } - - void signalStartupEvent() - { - signalSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP); - } + void wait(uint32_t flags, uint32_t options, uint32_t timeout) + { + STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); + systemEvents->peek(flags, timeout); + } - void waitForStartupEvent() - { - waitForSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP, osFlagsWaitAll, osWaitForever); - } + void signalStartup() + { + signalSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP); + } + + void waitForStartup() + { + waitForSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP, osFlagsWaitAll, osWaitForever); + } + } // namespace events } // namespace tacos } // namespace sta From 93c70de8d714ec1a10622be3c24fae12a9b492c4 Mon Sep 17 00:00:00 2001 From: dario Date: Mon, 24 Mar 2025 19:58:41 +0100 Subject: [PATCH 2/6] More compact tick events implementation --- include/sta/tacos/system/events.hpp | 21 +++++---- src/events.cpp | 67 ++++++++++++----------------- 2 files changed, 37 insertions(+), 51 deletions(-) diff --git a/include/sta/tacos/system/events.hpp b/include/sta/tacos/system/events.hpp index 012a03c..e4cecec 100644 --- a/include/sta/tacos/system/events.hpp +++ b/include/sta/tacos/system/events.hpp @@ -37,17 +37,16 @@ namespace sta { enum class Types : uint32_t { - STARTUP = 0x01, - TICK_100Hz = 0x02, - TOCK_100Hz = 0x03, - TICK_50Hz = 0x04, - TOCK_50Hz = 0x05, - TICK_20Hz = 0x06, - TOCK_20Hz = 0x07, - TICK_10Hz = 0x08, - TOCK_10Hz = 0x09, - TICK_1Hz = 0x0A, - TOCK_1Hz = 0x0B + STARTUP = (0x01 << 0x00), + TICK_100Hz = (0x01 << 0x01), + TICK_50Hz = (0x01 << 0x02), + TOCK_50Hz = (0x01 << 0x03), + TICK_20Hz = (0x01 << 0x04), + TOCK_20Hz = (0x01 << 0x05), + TICK_10Hz = (0x01 << 0x06), + TOCK_10Hz = (0x01 << 0x07), + TICK_1Hz = (0x01 << 0x08), + TOCK_1Hz = (0x01 << 0x09) }; /** diff --git a/src/events.cpp b/src/events.cpp index 33805d7..eda6992 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -13,10 +13,10 @@ namespace // Event handle sta::RtosEvent * systemEvents = nullptr; - uint8_t tickCounter = 0; - // Tick timer handle sta::RtosTimer * tickTimer = nullptr; + + uint8_t tickCounter = 0; } @@ -38,49 +38,36 @@ namespace sta tickTimer = new sta::RtosTimer([]() { uint32_t flags = 0x00; - if (tickCounter % 2 == 0) - { - flags |= Types::TICK_100Hz; + flags |= Types::TICK_100Hz; - if ((tickCounter / 2) % 2 == 0) { - flags |= Types::TICK_50Hz; - } - else - { - flags |= Types::TOCK_50Hz; - } - - if (tickCounter % 10 == 0 && ((tickCounter / 10) % 2) == 0) - { - flags |= Types::TICK_10Hz; - } - else if (tickCounter % 10 == 0 && (tickCounter / 10) == 1) { - flags |= Types::TOCK_10Hz; - } - - if (tickCounter % 100 == 0 && (tickCounter / 100) % 2 == 0) { - flags |= Types::TICK_1Hz; - } - else if (tickCounter % 100 == 0 && (tickCounter / 100) == 1) { - flags |= Types::TOCK_1Hz; - } - } - else - { - flags |= Types::TOCK_100Hz; - - if (tickCounter % 5 == 0 && ((tickCounter / 5) % 2) == 0) - { - flags |= Types::TICK_20Hz; - } - else if (tickCounter % 5 == 0 && (tickCounter / 5) == 1) { - flags |= Types::TOCK_20Hz; - } + if (tickCounter % 20 == 0) { + flags |= Types::TICK_50Hz; + } else { + flags |= Types::TOCK_50Hz; } - tickCounter = ++tickCounter % 200; + if (tickCounter % 50 == 0) { + flags |= Types::TICK_20Hz; + } else if (tickCounter % 25 == 0) { + flags |= Types::TOCK_20Hz; + } + + if (tickCounter % 100) { + flags |= Types::TICK_10Hz; + } else if (tickCounter % 50 == 0) { + flags |= Types::TOCK_10Hz; + } + + if (tickCounter % 1000) { + flags |= Types::TICK_1Hz; + } else if (tickCounter % 500 == 0) { + flags |= Types::TOCK_1Hz; + } + + tickCounter = (tickCounter + 10) % 1000; signal(flags); + systemEvents->clear(0xFFFFFFFF); }, true); tickTimer->start(10); From 6526139de76926d068416fa7c69a1811a291aac9 Mon Sep 17 00:00:00 2001 From: dario Date: Mon, 24 Mar 2025 20:22:09 +0100 Subject: [PATCH 3/6] Fixed a few problem due to the events rework --- src/events.cpp | 26 +++++++++++++------------- src/startup.cpp | 4 ++-- src/thread.cpp | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/events.cpp b/src/events.cpp index eda6992..edf7798 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -35,40 +35,40 @@ namespace sta if (tickTimer == nullptr) { - tickTimer = new sta::RtosTimer([]() { + tickTimer = new sta::RtosTimer([](void * args) { uint32_t flags = 0x00; - flags |= Types::TICK_100Hz; + flags |= (uint32_t)Types::TICK_100Hz; if (tickCounter % 20 == 0) { - flags |= Types::TICK_50Hz; + flags |= (uint32_t)Types::TICK_50Hz; } else { - flags |= Types::TOCK_50Hz; + flags |= (uint32_t)Types::TOCK_50Hz; } if (tickCounter % 50 == 0) { - flags |= Types::TICK_20Hz; + flags |= (uint32_t)Types::TICK_20Hz; } else if (tickCounter % 25 == 0) { - flags |= Types::TOCK_20Hz; + flags |= (uint32_t)Types::TOCK_20Hz; } if (tickCounter % 100) { - flags |= Types::TICK_10Hz; + flags |= (uint32_t)Types::TICK_10Hz; } else if (tickCounter % 50 == 0) { - flags |= Types::TOCK_10Hz; + flags |= (uint32_t)Types::TOCK_10Hz; } if (tickCounter % 1000) { - flags |= Types::TICK_1Hz; + flags |= (uint32_t)Types::TICK_1Hz; } else if (tickCounter % 500 == 0) { - flags |= Types::TOCK_1Hz; + flags |= (uint32_t)Types::TOCK_1Hz; } tickCounter = (tickCounter + 10) % 1000; signal(flags); systemEvents->clear(0xFFFFFFFF); - }, true); + }, nullptr, true); tickTimer->start(10); } @@ -88,12 +88,12 @@ namespace sta void signalStartup() { - signalSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP); + signal(STA_TACOS_SYSTEM_EVENTS_STARTUP); } void waitForStartup() { - waitForSystemEvents(STA_TACOS_SYSTEM_EVENTS_STARTUP, osFlagsWaitAll, osWaitForever); + wait(STA_TACOS_SYSTEM_EVENTS_STARTUP, osFlagsWaitAll, osWaitForever); } } // namespace events } // namespace tacos diff --git a/src/startup.cpp b/src/startup.cpp index bd3f6d2..028b036 100644 --- a/src/startup.cpp +++ b/src/startup.cpp @@ -158,13 +158,13 @@ void startTACOS(void * arg) sta::initHAL(); // Initialize RTOS system events - sta::tacos::initSystemEvents(); + sta::tacos::events::init(); // Call further initialization code sta::tacos::startupExtras(arg); // Wake threads - sta::tacos::signalStartupEvent(); + sta::tacos::events::signalStartup(); // Check if called from thread if (osThreadGetId() != nullptr) diff --git a/src/thread.cpp b/src/thread.cpp index ed5ed12..da38974 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -64,7 +64,7 @@ namespace sta while (true) { // The thread has to wait until the system startup has been completed. - sta::tacos::waitForStartupEvent(); + sta::tacos::events::waitForStartup(); // Wait for a thread start flag. wait(STA_RTOS_THREAD_FLAG_START); From 1669b0c590e4d52af49e6b97774d2da900539dcb Mon Sep 17 00:00:00 2001 From: dario Date: Tue, 25 Mar 2025 20:24:19 +0100 Subject: [PATCH 4/6] First (unsuccessful) tests, system events not working correctly --- include/sta/tacos.hpp | 1 + include/sta/tacos/system/events.hpp | 30 ++++++++++++++--------------- src/events.cpp | 20 +++++++++---------- 3 files changed, 26 insertions(+), 25 deletions(-) diff --git a/include/sta/tacos.hpp b/include/sta/tacos.hpp index 99fbc2c..eef34de 100644 --- a/include/sta/tacos.hpp +++ b/include/sta/tacos.hpp @@ -11,6 +11,7 @@ #include #include #include +#include #include #include diff --git a/include/sta/tacos/system/events.hpp b/include/sta/tacos/system/events.hpp index e4cecec..f328415 100644 --- a/include/sta/tacos/system/events.hpp +++ b/include/sta/tacos/system/events.hpp @@ -26,7 +26,21 @@ * * @ingroup STA_RTOS_SysEvent */ -#define STA_TACOS_SYSTEM_EVENTS_STARTUP 0x100000U + +#define STA_TACOS_EVENT_SYSTEM_MASK (0xFFFE0000U >> 1) +#define STA_TACOS_EVENT_TIMER_MASK (0x7FC00000U >> 1) + +#define STA_TACOS_SYSTEM_EVENTS_STARTUP (0x01U << 30) + +#define STA_TACOS_TICK_100_Hz (0x01U << 29) +#define STA_TACOS_TICK_50_Hz (0x01U << 28) +#define STA_TACOS_TOCK_50_Hz (0x01U << 27) +#define STA_TACOS_TICK_20_Hz (0x01U << 26) +#define STA_TACOS_TOCK_20_Hz (0x01U << 25) +#define STA_TACOS_TICK_10_Hz (0x01U << 24) +#define STA_TACOS_TOCK_10_Hz (0x01U << 23) +#define STA_TACOS_TICK_1_Hz (0x01U << 22) +#define STA_TACOS_TOCK_1_Hz (0x01U << 21) namespace sta @@ -35,20 +49,6 @@ namespace sta { namespace events { - enum class Types : uint32_t - { - STARTUP = (0x01 << 0x00), - TICK_100Hz = (0x01 << 0x01), - TICK_50Hz = (0x01 << 0x02), - TOCK_50Hz = (0x01 << 0x03), - TICK_20Hz = (0x01 << 0x04), - TOCK_20Hz = (0x01 << 0x05), - TICK_10Hz = (0x01 << 0x06), - TOCK_10Hz = (0x01 << 0x07), - TICK_1Hz = (0x01 << 0x08), - TOCK_1Hz = (0x01 << 0x09) - }; - /** * @brief Initialize system events. */ diff --git a/src/events.cpp b/src/events.cpp index edf7798..c379591 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -38,36 +38,36 @@ namespace sta tickTimer = new sta::RtosTimer([](void * args) { uint32_t flags = 0x00; - flags |= (uint32_t)Types::TICK_100Hz; + flags |= STA_TACOS_TOCK_50_Hz; if (tickCounter % 20 == 0) { - flags |= (uint32_t)Types::TICK_50Hz; + flags |= STA_TACOS_TICK_50_Hz; } else { - flags |= (uint32_t)Types::TOCK_50Hz; + flags |= STA_TACOS_TOCK_50_Hz; } if (tickCounter % 50 == 0) { - flags |= (uint32_t)Types::TICK_20Hz; + flags |= STA_TACOS_TICK_20_Hz; } else if (tickCounter % 25 == 0) { - flags |= (uint32_t)Types::TOCK_20Hz; + flags |= STA_TACOS_TOCK_20_Hz; } if (tickCounter % 100) { - flags |= (uint32_t)Types::TICK_10Hz; + flags |= STA_TACOS_TICK_10_Hz; } else if (tickCounter % 50 == 0) { - flags |= (uint32_t)Types::TOCK_10Hz; + flags |= STA_TACOS_TOCK_10_Hz; } if (tickCounter % 1000) { - flags |= (uint32_t)Types::TICK_1Hz; + flags |= STA_TACOS_TICK_1_Hz; } else if (tickCounter % 500 == 0) { - flags |= (uint32_t)Types::TOCK_1Hz; + flags |= STA_TACOS_TOCK_1_Hz; } tickCounter = (tickCounter + 10) % 1000; signal(flags); - systemEvents->clear(0xFFFFFFFF); + systemEvents->clear(STA_TACOS_EVENT_TIMER_MASK); }, nullptr, true); tickTimer->start(10); From 4faeb1e6b011ad4a96a03168fad0f5d0e93743f0 Mon Sep 17 00:00:00 2001 From: dario Date: Sun, 8 Jun 2025 15:19:18 +0200 Subject: [PATCH 5/6] Working global events implementation --- include/sta/tacos/system/events.hpp | 34 +++++++++++++++-------------- src/events.cpp | 24 ++++++++++---------- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/include/sta/tacos/system/events.hpp b/include/sta/tacos/system/events.hpp index f328415..ff850c9 100644 --- a/include/sta/tacos/system/events.hpp +++ b/include/sta/tacos/system/events.hpp @@ -16,31 +16,33 @@ #include +#include +// Custom event flags for the user (bits 0-13). +// +#define STA_TACOS_CUSTOM_EVENT(k) (0x1U << k) + +// A mask representing all custom flags available for the user. +#define STA_TACOS_CUSTOM_EVENT_MASK (0x7FFFU) // System event flags // /** - * @brief Startup system event flag. + * @brief Startup system event flag (bits 14-23). * * @ingroup STA_RTOS_SysEvent */ +#define STA_TACOS_SYSTEM_EVENTS_STARTUP (0x01U << 23) -#define STA_TACOS_EVENT_SYSTEM_MASK (0xFFFE0000U >> 1) -#define STA_TACOS_EVENT_TIMER_MASK (0x7FC00000U >> 1) - -#define STA_TACOS_SYSTEM_EVENTS_STARTUP (0x01U << 30) - -#define STA_TACOS_TICK_100_Hz (0x01U << 29) -#define STA_TACOS_TICK_50_Hz (0x01U << 28) -#define STA_TACOS_TOCK_50_Hz (0x01U << 27) -#define STA_TACOS_TICK_20_Hz (0x01U << 26) -#define STA_TACOS_TOCK_20_Hz (0x01U << 25) -#define STA_TACOS_TICK_10_Hz (0x01U << 24) -#define STA_TACOS_TOCK_10_Hz (0x01U << 23) -#define STA_TACOS_TICK_1_Hz (0x01U << 22) -#define STA_TACOS_TOCK_1_Hz (0x01U << 21) +#define STA_TACOS_TICK_100_Hz (0x01U << 22) +#define STA_TACOS_TICK_50_Hz (0x01U << 21) +#define STA_TACOS_TOCK_50_Hz (0x01U << 20) +#define STA_TACOS_TICK_20_Hz (0x01U << 19) +#define STA_TACOS_TICK_10_Hz (0x01U << 18) +#define STA_TACOS_TOCK_10_Hz (0x01U << 17) +#define STA_TACOS_TICK_1_Hz (0x01U << 16) +#define STA_TACOS_TOCK_1_Hz (0x01U << 15) namespace sta @@ -72,7 +74,7 @@ namespace sta * * @ingroup STA_RTOS_SysEvent */ - void wait(uint32_t flags, uint32_t options, uint32_t timeout); + void wait(uint32_t flags, uint32_t timeout = osWaitForever); /** * @brief Signal startup system event. diff --git a/src/events.cpp b/src/events.cpp index c379591..5a92d3f 100644 --- a/src/events.cpp +++ b/src/events.cpp @@ -10,7 +10,7 @@ namespace { - // Event handle + // Event handle for system events. sta::RtosEvent * systemEvents = nullptr; // Tick timer handle @@ -35,10 +35,11 @@ namespace sta if (tickTimer == nullptr) { + // Initialize the a timer that sets tick event flags. tickTimer = new sta::RtosTimer([](void * args) { uint32_t flags = 0x00; - flags |= STA_TACOS_TOCK_50_Hz; + flags |= STA_TACOS_TICK_100_Hz; if (tickCounter % 20 == 0) { flags |= STA_TACOS_TICK_50_Hz; @@ -48,17 +49,15 @@ namespace sta if (tickCounter % 50 == 0) { flags |= STA_TACOS_TICK_20_Hz; - } else if (tickCounter % 25 == 0) { - flags |= STA_TACOS_TOCK_20_Hz; } - if (tickCounter % 100) { + if (tickCounter % 100 == 0) { flags |= STA_TACOS_TICK_10_Hz; } else if (tickCounter % 50 == 0) { flags |= STA_TACOS_TOCK_10_Hz; } - if (tickCounter % 1000) { + if (tickCounter % 1000 == 0) { flags |= STA_TACOS_TICK_1_Hz; } else if (tickCounter % 500 == 0) { flags |= STA_TACOS_TOCK_1_Hz; @@ -66,8 +65,8 @@ namespace sta tickCounter = (tickCounter + 10) % 1000; - signal(flags); - systemEvents->clear(STA_TACOS_EVENT_TIMER_MASK); + systemEvents->set(flags); + systemEvents->clear(flags); }, nullptr, true); tickTimer->start(10); @@ -77,10 +76,13 @@ namespace sta void signal(uint32_t flags) { STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); + STA_ASSERT_MSG((flags & ~STA_TACOS_CUSTOM_EVENT_MASK) == 0, "Invalid custom flags (available: bits 0 to 14)"); + systemEvents->set(flags); + systemEvents->clear(flags); } - void wait(uint32_t flags, uint32_t options, uint32_t timeout) + void wait(uint32_t flags, uint32_t timeout /* = osWaitForever */) { STA_ASSERT_MSG(systemEvents != nullptr, "System events not initialized"); systemEvents->peek(flags, timeout); @@ -88,12 +90,12 @@ namespace sta void signalStartup() { - signal(STA_TACOS_SYSTEM_EVENTS_STARTUP); + systemEvents->set(STA_TACOS_SYSTEM_EVENTS_STARTUP); } void waitForStartup() { - wait(STA_TACOS_SYSTEM_EVENTS_STARTUP, osFlagsWaitAll, osWaitForever); + wait(STA_TACOS_SYSTEM_EVENTS_STARTUP); } } // namespace events } // namespace tacos From e278b47a09158a39d1ac4688bc0e03377caa32e0 Mon Sep 17 00:00:00 2001 From: dario Date: Sun, 8 Jun 2025 15:29:09 +0200 Subject: [PATCH 6/6] Updated docstrings --- include/sta/tacos/system/events.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/include/sta/tacos/system/events.hpp b/include/sta/tacos/system/events.hpp index ff850c9..53fcc84 100644 --- a/include/sta/tacos/system/events.hpp +++ b/include/sta/tacos/system/events.hpp @@ -20,6 +20,12 @@ // Custom event flags for the user (bits 0-13). // + +/** + * @brief Macro for the flag of the kth custom event. + * + * @ingroup STA_RTOS_SysEvent + */ #define STA_TACOS_CUSTOM_EVENT(k) (0x1U << k) // A mask representing all custom flags available for the user. @@ -35,6 +41,7 @@ */ #define STA_TACOS_SYSTEM_EVENTS_STARTUP (0x01U << 23) +// System event flags for different tick frequencies. #define STA_TACOS_TICK_100_Hz (0x01U << 22) #define STA_TACOS_TICK_50_Hz (0x01U << 21) #define STA_TACOS_TOCK_50_Hz (0x01U << 20) @@ -57,7 +64,7 @@ namespace sta void init(); /** - * @brief Signal system events. + * @brief Signal system events. The flag is immediately cleared afterwards. * * @param flags System event flags * @@ -69,7 +76,6 @@ namespace sta * @brief Wait for system events. * * @param flags System event flags - * @param options osFlagsWaitAll or osFlagsWaitAny (osFlagsNoClear always set) * @param timeout Wait timeout (0 = instant, osWaitForever = infinite) * * @ingroup STA_RTOS_SysEvent