From 11e6c6a0fcdf95335d8c671641759d1ae9e14660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Noah=20Piqu=C3=A9?= Date: Fri, 24 Jun 2022 12:27:25 +0200 Subject: [PATCH] implement watchdog raspi --- Core/Application/MAIN_MainApplication.c | 30 +++++++++++++++++++++---- Core/Drivers/USFL_UserFlash.c | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/Core/Application/MAIN_MainApplication.c b/Core/Application/MAIN_MainApplication.c index 3660e71..84073eb 100644 --- a/Core/Application/MAIN_MainApplication.c +++ b/Core/Application/MAIN_MainApplication.c @@ -35,7 +35,6 @@ // Application #include "VARH_VariableHandler.h" -//#include "ELOG_ErrorLogger.h" // Drivers #include "../Drivers/TEMP_Temperature.h" @@ -61,12 +60,16 @@ #define EVENT_NEW_MESSAGE ((U32)(1<<0)) #define EVENT_TIMER_UPDATE ((U32)(1<<1)) +#define EVENT_WATCHDOG ((U32)(1<<2)) -#define EVENT_FLAGS_ALL ( EVENT_NEW_MESSAGE | EVENT_TIMER_UPDATE ) +#define EVENT_FLAGS_ALL ( EVENT_NEW_MESSAGE | EVENT_TIMER_UPDATE | EVENT_WATCHDOG ) #define COMMAND_NONE 0 #define COMMAND_ON 1 #define COMMAND_OFF 2 +#define COMMAND_WATCHDOG 3 + +#define WATCHDOG 33000 //================================================================================================= // Section: MACROS @@ -107,7 +110,8 @@ LOCAL osThreadId_t m_pstThreadID = NULL; LOCAL osMessageQueueId_t m_pstCANRxMsgQueueID = NULL; LOCAL osEventFlagsId_t m_pstEventID = NULL; -LOCAL osTimerId_t m_pstUpdateTimer = NULL; +LOCAL osTimerId_t m_pstUpdateTimer = NULL; +LOCAL osTimerId_t m_pstWatchdogTimer = NULL; //================================================================================================= // Section: LOCAL CONSTANTS @@ -156,6 +160,14 @@ LOCAL CONST osTimerAttr_t stTimerAttribute = 0, // size of provided memory for control block }; +LOCAL CONST osTimerAttr_t stWatchdogTimerAttribute = +{ + "MAIN_Watchdog", // name of the timer + 0, // attribute bits + NULL, // memory for control block + 0, // size of provided memory for control block +}; + //================================================================================================= // Section: EXTERNAL FUNCTIONS // Description: Definition of external (global) functions. @@ -189,8 +201,10 @@ BOOL MAIN_boInitializeModule( VOID ) boOK &= ( ( m_pstThreadID = osThreadNew( vTask, NULL, &stTaskAttribute ) ) == NULL ) ? FALSE : TRUE; boOK &= ( ( m_pstCANRxMsgQueueID = osMessageQueueNew( MSG_QUEUE_SIZE, sizeof( CAND_Message ), &stCANRxMsgQueueAttribute ) ) == NULL ) ? FALSE : TRUE; boOK &= ( m_pstUpdateTimer = osTimerNew( vEventCallback, osTimerPeriodic, (PVOID)EVENT_TIMER_UPDATE, &stTimerAttribute ) ) == NULL ? FALSE : TRUE; + boOK &= ( m_pstWatchdogTimer = osTimerNew( vEventCallback, osTimerPeriodic, (PVOID)EVENT_TIMER_UPDATE, &stWatchdogTimerAttribute ) ) == NULL ? FALSE : TRUE; boOK &= (osTimerStart( m_pstUpdateTimer, 1000 ) == osOK ) ? TRUE : FALSE; + //boOK &= (osTimerStart( m_pstWatchdogTimer, WATCHDOG ) == osOK ) ? TRUE : FALSE; CAND_vSetRxCallback( vMsgRxCallback ); @@ -256,7 +270,9 @@ PRIVATE VOID vTask( PVOID arg ) case COMMAND_OFF: PECO_Enable( FALSE ); break; - // TODO: Implement watchdog + case COMMAND_WATCHDOG: + osTimerStart( m_pstWatchdogTimer, WATCHDOG ) + break; default: break; } @@ -267,6 +283,12 @@ PRIVATE VOID vTask( PVOID arg ) { DIPO_vToggleOutput( DIPO_eLED ); } + + if( u32Flags & EVENT_WATCHDOG ) + { + PECO_Enable( FALSE ); + // TODO: WATCHDOG: what else? + } } } diff --git a/Core/Drivers/USFL_UserFlash.c b/Core/Drivers/USFL_UserFlash.c index 7d37485..3483402 100644 --- a/Core/Drivers/USFL_UserFlash.c +++ b/Core/Drivers/USFL_UserFlash.c @@ -66,7 +66,7 @@ #define STARTDEF 0xAA01F055 -#define VARDEF 0xABCDEF05 +#define VARDEF 0xABCDEF00 //================================================================================================= // Section: MACROS