/** * @file * @brief Implementation of system events. */ #ifndef STA_TACOS_SYSTEM_EVENTS_HPP #define STA_TACOS_SYSTEM_EVENTS_HPP /** * @defgroup STA_RTOS_SysEvent System Events * @ingroup STA_RTOS_API * @brief System events. * * Check @ref STA_RTOS_BuildConfig for configuration options. */ #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 (bits 14-23). * * @ingroup STA_RTOS_SysEvent */ #define STA_TACOS_SYSTEM_EVENTS_STARTUP (0x01U << 23) #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 { namespace tacos { namespace events { /** * @brief Initialize system events. */ void init(); /** * @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 wait(uint32_t flags, uint32_t timeout = osWaitForever); /** * @brief Signal startup system event. * * @ingroup STA_RTOS_SysEvent */ void signalStartup(); /** * @brief Wait for startup system event. * * Blocking while waiting * * @ingroup STA_RTOS_SysEvent */ void waitForStartup(); } // namespace events } // namespace tacos } // namespace sta #endif // STA_RTOS_SYSTEM_EVENTS_HPP