rtos2-utils/include/sta/rtos2/easy_config.hpp
2022-05-07 00:24:58 +02:00

46 lines
1.8 KiB
C++

/**
* @brief Helper for easy system task setup in `<sta/config.hpp>`.
*
* Configuration:
* STA_OS2_SYSTEM_TASKS_ENABLE: Enable all system tasks and required features
* STA_OS2_WATCHDOG_TIMER_NAME: Set watchdog timer handle and callback names based on this
* STA_OS2_WATCHDOG_NAME: Set watchdog task handle and entry function names based on this
*/
#ifndef STA_RTOS2_EASY_CONFIG_HPP
#define STA_RTOS2_EASY_CONFIG_HPP
#if !defined(STA_CONFIG_HPP) && !defined(STA_RTOS2_EASY_CONFIG_NO_WARNING)
#warning "Intended for use in <sta/config.hpp>"
#endif // !STA_CONFIG_HPP && !STA_RTOS2_EASY_CONFIG_NO_WARNING
#ifdef STA_RTOS2_SYSTEM_TASKS_ENABLE
// Enable system events used by system tasks
# define STA_RTOS2_SYSTEM_EVENT_ENABLE
// Enable system tasks
# define STA_RTOS2_WATCHDOG_ENABLE
# define STA_RTOS2_STARTUP_ENABLE
#endif // STA_RTOS2_SYSTEM_TASKS_ENABLE
#define _STA_RTOS2_CONCAT(a, b) a ## b
#define STA_RTOS2_MAKE_HANDLE_NAME(name) _STA_RTOS2_CONCAT(name, Handle)
#define STA_RTOS2_MAKE_CALLBACK_NAME(name) _STA_RTOS2_CONCAT(name, Callback)
#define STA_RTOS2_MAKE_TASK_NAME(name) _STA_RTOS2_CONCAT(name, Task)
// Use common base name for watchdog timer handle and callback
#ifdef STA_RTOS2_WATCHDOG_TIMER_NAME
# define STA_RTOS2_WATCHDOG_TIMER_HANDLE STA_RTOS2_MAKE_HANDLE_NAME(STA_RTOS2_WATCHDOG_TIMER_NAME)
# define STA_RTOS2_WATCHDOG_TIMER_CALLBACK STA_RTOS2_MAKE_CALLBACK_NAME(STA_RTOS2_WATCHDOG_TIMER_NAME)
#endif // STA_RTOS2_WATCHDOG_TIMER_NAME
// Use common base name for watchdog task handle and entry function
#ifdef STA_RTOS2_WATCHDOG_NAME
# define STA_RTOS2_WATCHDOG_HANDLE STA_RTOS2_MAKE_HANDLE_NAME(STA_RTOS2_WATCHDOG_NAME)
# define STA_RTOS2_WATCHDOG_ENTRY_FUNCTION STA_RTOS2_MAKE_TASK_NAME(STA_RTOS2_WATCHDOG_NAME)
#endif // STA_RTOS2_WATCHDOG_NAME
#endif // STA_RTOS2_EASY_CONFIG_HPP