/** * @file * @brief Implementation of system events. */ #ifndef STA_RTOS_SYSTEM_EVENT_HPP #define STA_RTOS_SYSTEM_EVENT_HPP /** * @defgroup STA_RTOS_SysEvent System Events * @ingroup STA_RTOS_API * @brief System events. * * Check @ref STA_RTOS_BuildConfig for configuration options. */ #ifdef DOXYGEN /** * @brief Enable module. * * @ingroup STA_RTOS_BuildConfig */ # define STA_RTOS2_SYSTEM_EVENT_ENABLE #endif // DOXYGEN /** * @def STA_RTOS_SYSTEM_EVENT_HANDLE * @brief Set variable name of event flags handle. * * @ingroup STA_RTOS_BuildConfig */ #ifndef STA_RTOS_SYSTEM_EVENT_HANDLE # define STA_RTOS_SYSTEM_EVENT_HANDLE systemEventHandle #endif // !STA_RTOS_SYSTEM_EVENT_HANDLE #include #ifdef STA_RTOS_SYSTEM_EVENT_ENABLE #include // System event flags // /** * @brief Startup system event flag. * * @ingroup STA_RTOS_SysEvent */ #define STA_SYSTEM_EVENT_STARTUP 0x100000U namespace sta { /** * @brief Signal system events. * * @param flags System event flags * * @ingroup STA_RTOS_SysEvent */ void signalSystemEvents(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 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(); } // namespace sta #endif // STA_RTOS_SYSTEM_EVENT_ENABLE #endif // STA_RTOS_SYSTEM_EVENT_HPP