implement watchdog raspi
This commit is contained in:
@ -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?
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
#define STARTDEF 0xAA01F055
|
#define STARTDEF 0xAA01F055
|
||||||
|
|
||||||
#define VARDEF 0xABCDEF05
|
#define VARDEF 0xABCDEF00
|
||||||
|
|
||||||
//=================================================================================================
|
//=================================================================================================
|
||||||
// Section: MACROS
|
// Section: MACROS
|
||||||
|
Reference in New Issue
Block a user