implement watchdog raspi

This commit is contained in:
2022-06-24 12:27:25 +02:00
parent 96b27b020b
commit 11e6c6a0fc
2 changed files with 27 additions and 5 deletions

View File

@ -35,7 +35,6 @@
// Application // Application
#include "VARH_VariableHandler.h" #include "VARH_VariableHandler.h"
//#include "ELOG_ErrorLogger.h"
// Drivers // Drivers
#include "../Drivers/TEMP_Temperature.h" #include "../Drivers/TEMP_Temperature.h"
@ -61,12 +60,16 @@
#define EVENT_NEW_MESSAGE ((U32)(1<<0)) #define EVENT_NEW_MESSAGE ((U32)(1<<0))
#define EVENT_TIMER_UPDATE ((U32)(1<<1)) #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_NONE 0
#define COMMAND_ON 1 #define COMMAND_ON 1
#define COMMAND_OFF 2 #define COMMAND_OFF 2
#define COMMAND_WATCHDOG 3
#define WATCHDOG 33000
//================================================================================================= //=================================================================================================
// Section: MACROS // Section: MACROS
@ -107,7 +110,8 @@ LOCAL osThreadId_t m_pstThreadID = NULL;
LOCAL osMessageQueueId_t m_pstCANRxMsgQueueID = NULL; LOCAL osMessageQueueId_t m_pstCANRxMsgQueueID = NULL;
LOCAL osEventFlagsId_t m_pstEventID = 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 // Section: LOCAL CONSTANTS
@ -156,6 +160,14 @@ LOCAL CONST osTimerAttr_t stTimerAttribute =
0, // size of provided memory for control block 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 // Section: EXTERNAL FUNCTIONS
// Description: Definition of external (global) 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_pstThreadID = osThreadNew( vTask, NULL, &stTaskAttribute ) ) == NULL ) ? FALSE : TRUE;
boOK &= ( ( m_pstCANRxMsgQueueID = osMessageQueueNew( MSG_QUEUE_SIZE, sizeof( CAND_Message ), &stCANRxMsgQueueAttribute ) ) == 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_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_pstUpdateTimer, 1000 ) == osOK ) ? TRUE : FALSE;
//boOK &= (osTimerStart( m_pstWatchdogTimer, WATCHDOG ) == osOK ) ? TRUE : FALSE;
CAND_vSetRxCallback( vMsgRxCallback ); CAND_vSetRxCallback( vMsgRxCallback );
@ -256,7 +270,9 @@ PRIVATE VOID vTask( PVOID arg )
case COMMAND_OFF: case COMMAND_OFF:
PECO_Enable( FALSE ); PECO_Enable( FALSE );
break; break;
// TODO: Implement watchdog case COMMAND_WATCHDOG:
osTimerStart( m_pstWatchdogTimer, WATCHDOG )
break;
default: default:
break; break;
} }
@ -267,6 +283,12 @@ PRIVATE VOID vTask( PVOID arg )
{ {
DIPO_vToggleOutput( DIPO_eLED ); DIPO_vToggleOutput( DIPO_eLED );
} }
if( u32Flags & EVENT_WATCHDOG )
{
PECO_Enable( FALSE );
// TODO: WATCHDOG: what else?
}
} }
} }

View File

@ -66,7 +66,7 @@
#define STARTDEF 0xAA01F055 #define STARTDEF 0xAA01F055
#define VARDEF 0xABCDEF05 #define VARDEF 0xABCDEF00
//================================================================================================= //=================================================================================================
// Section: MACROS // Section: MACROS