diff --git a/include/sta/rtos/watchdog.hpp b/include/sta/rtos/system/watchdog.hpp similarity index 70% rename from include/sta/rtos/watchdog.hpp rename to include/sta/rtos/system/watchdog.hpp index 8164cb7..94463d4 100644 --- a/include/sta/rtos/watchdog.hpp +++ b/include/sta/rtos/system/watchdog.hpp @@ -2,8 +2,11 @@ * @file * @brief Implementation of watchdog system task. */ -#ifndef STA_RTOS_WATCHDOG_HPP -#define STA_RTOS_WATCHDOG_HPP +#ifndef STA_RTOS_SYSTEM_WATCHDOG_HPP +#define STA_RTOS_SYSTEM_WATCHDOG_HPP + +#include + /** * @defgroup STA_RTOS_Watchdog Watchdog task @@ -33,6 +36,17 @@ # define STA_RTOS_WATCHDOG_TIMER_PERIOD 1000 #endif // !STA_RTOS_WATCHDOG_TIMER_PERIOD + +/** + * @def STA_RTOS_WATCHDOG_TIMER_NAME + * @brief Set name of watchdog timer. + * + * @ingroup STA_RTOS_BuildConfig + */ +#ifndef STA_RTOS_WATCHDOG_TIMER_NAME +# define STA_RTOS_WATCHDOG_TIMER_NAME heartbeat +#endif // !STA_RTOS_WATCHDOG_TIMER_NAME + /** * @def STA_RTOS_WATCHDOG_TIMER_HANDLE * @brief Set variable name of heartbeat timer handle. @@ -40,7 +54,7 @@ * @ingroup STA_RTOS_BuildConfig */ #ifndef STA_RTOS_WATCHDOG_TIMER_HANDLE -# define STA_RTOS_WATCHDOG_TIMER_HANDLE heartbeatHandle +# define STA_RTOS_WATCHDOG_TIMER_HANDLE STA_RTOS_MAKE_HANDLE_NAME(STA_RTOS_WATCHDOG_TIMER_NAME) #endif // !STA_RTOS_WATCHDOG_TIMER_HANDLE /** @@ -50,18 +64,19 @@ * @ingroup STA_RTOS_BuildConfig */ #ifndef STA_RTOS_WATCHDOG_TIMER_CALLBACK -# define STA_RTOS_WATCHDOG_TIMER_CALLBACK heartbeatCallback +# define STA_RTOS_WATCHDOG_TIMER_CALLBACK STA_RTOS_MAKE_CALLBACK_NAME(STA_RTOS_WATCHDOG_TIMER_NAME) #endif // !STA_RTOS_WATCHDOG_TIMER_CALLBACK + /** - * @def STA_RTOS_WATCHDOG_HANDLE - * @brief Set variable name of watchdog task handle. + * @def STA_RTOS_WATCHDOG_TASK_NAME + * @brief Set name of watchdog task. * * @ingroup STA_RTOS_BuildConfig */ -#ifndef STA_RTOS_WATCHDOG_HANDLE -# define STA_RTOS_WATCHDOG_HANDLE watchdogHandle -#endif // !STA_RTOS_WATCHDOG_HANDLE +#ifndef STA_RTOS_WATCHDOG_TASK_NAME +# define STA_RTOS_WATCHDOG_TASK_NAME watchdog +#endif // !STA_RTOS_WATCHDOG_TASK_NAME /** * @def STA_RTOS_WATCHDOG_ENTRY_FUNCTION @@ -70,7 +85,7 @@ * @ingroup STA_RTOS_BuildConfig */ #ifndef STA_RTOS_WATCHDOG_ENTRY_FUNCTION -# define STA_RTOS_WATCHDOG_ENTRY_FUNCTION watchdogTask +# define STA_RTOS_WATCHDOG_ENTRY_FUNCTION STA_RTOS_MAKE_ENTRY_NAME(STA_RTOS_WATCHDOG_TASK_NAME) #endif // !STA_RTOS_WATCHDOG_ENTRY_FUNCTION @@ -123,4 +138,4 @@ namespace sta #endif // STA_RTOS_WATCHDOG_ENABLE -#endif // STA_RTOS2_WATCHDOG_HPP +#endif // STA_RTOS_SYSTEM_WATCHDOG_HPP diff --git a/src/rtos/system/watchdog/handles.hpp b/src/rtos/system/watchdog/handles.hpp new file mode 100644 index 0000000..95c75fe --- /dev/null +++ b/src/rtos/system/watchdog/handles.hpp @@ -0,0 +1,18 @@ +#ifndef STA_RTOS_SYSTEM_WATCHDOG_HANDLES_HPP +#define STA_RTOS_SYSTEM_WATCHDOG_HANDLES_HPP + +#include + +#include + + +#define WATCHDOG_TASK_HANDLE STA_RTOS_MAKE_HANDLE_NAME(STA_RTOS_WATCHDOG_TASK_NAME) +#define WATCHDOG_TIMER_HANDLE STA_RTOS_MAKE_HANDLE_NAME(STA_RTOS_WATCHDOG_TIMER_NAME) + + +// Access handles from freertos.c +extern osThreadId_t WATCHDOG_TASK_HANDLE; +extern osTimerId_t WATCHDOG_TIMER_HANDLE; + + +#endif // STA_RTOS_SYSTEM_WATCHDOG_HANDLES_HPP diff --git a/src/rtos/watchdog/heartbeat.cpp b/src/rtos/system/watchdog/heartbeat.cpp similarity index 56% rename from src/rtos/watchdog/heartbeat.cpp rename to src/rtos/system/watchdog/heartbeat.cpp index 75a05a2..37c47eb 100644 --- a/src/rtos/watchdog/heartbeat.cpp +++ b/src/rtos/system/watchdog/heartbeat.cpp @@ -1,19 +1,15 @@ -#include +#include #ifdef STA_RTOS_WATCHDOG_ENABLE -#include - - -// Access handles from freertos.c -extern osTimerId_t STA_RTOS_WATCHDOG_TIMER_HANDLE; +#include "handles.hpp" namespace sta { void startWatchdogTimer() { - osTimerStart(STA_RTOS_WATCHDOG_TIMER_HANDLE, STA_RTOS_WATCHDOG_TIMER_PERIOD); + osTimerStart(WATCHDOG_TIMER_HANDLE, STA_RTOS_WATCHDOG_TIMER_PERIOD); } } // namespace sta @@ -25,7 +21,7 @@ extern "C" { // Notify watchdog task to send heartbeat message // Required because blocking in a timer callback is not allowed - sta::notifyWatchdog(STA_WATCHDOG_FLAG_HEARTBEAT); + osThreadFlagsSet(WATCHDOG_TASK_HANDLE, STA_WATCHDOG_FLAG_HEARTBEAT); } } diff --git a/src/rtos/watchdog/watchdog.cpp b/src/rtos/system/watchdog/watchdog.cpp similarity index 68% rename from src/rtos/watchdog/watchdog.cpp rename to src/rtos/system/watchdog/watchdog.cpp index 28e59e2..ad2d21d 100644 --- a/src/rtos/watchdog/watchdog.cpp +++ b/src/rtos/system/watchdog/watchdog.cpp @@ -1,24 +1,19 @@ -#include +#include #ifdef STA_RTOS_WATCHDOG_ENABLE #include -#include - -#include - -#include +#include -// Access handle from freertos.c -extern osThreadId_t STA_RTOS_WATCHDOG_HANDLE; +#include "handles.hpp" namespace sta { void notifyWatchdog(uint32_t flags) { - osThreadFlagsSet(STA_RTOS_WATCHDOG_HANDLE, flags); + osThreadFlagsSet(WATCHDOG_TASK_HANDLE, flags); } } // namespace sta