Index: firmware/App/Services/AlarmMgmtDD.c =================================================================== diff -u -rf7c714a1a09b10d85a8b013712532d37b4d7b97a -r313982ccc772f1bbe182877dff7e00381b04e0f4 --- firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision f7c714a1a09b10d85a8b013712532d37b4d7b97a) +++ firmware/App/Services/AlarmMgmtDD.c (.../AlarmMgmtDD.c) (revision 313982ccc772f1bbe182877dff7e00381b04e0f4) @@ -22,87 +22,87 @@ #include "SafetyShutdown.h" #include "SystemCommDD.h" #include "TaskGeneral.h" -#include "TDDefs.h" +#include "TDDefs.h" #include "Timers.h" - - -/** - * @addtogroup AlarmManagement - * @{ - */ - -// ********** private definitions ********** + +/** + * @addtogroup AlarmManagement + * @{ + */ + +// ********** private definitions ********** + #define ALARM_INFO_PUB_INTERVAL ( MS_PER_SECOND / TASK_GENERAL_INTERVAL ) /// Interval (ms/task time) at which the alarm information is published on the CAN bus. #define DATA_PUBLISH_COUNTER_START_COUNT 12 ///< Data publish counter start count. #define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. - -const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. -// ********** private data ********** +const ALARM_DATA_T BLANK_ALARM_DATA = { ALARM_DATA_TYPE_NONE, 0 }; ///< A blank alarm data record for alarms that do not include alarm data when triggered. +// ********** private data ********** + static U32 alarmInfoPublicationTimerCounter; ///< Used to schedule alarm information publication to CAN bus. static BOOL isAFaultAlarmActive; ///< Boolean flag to indicate whether a DD fault alarm is active. /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; - -// ********** private function prototypes ********** - -static void activateAlarmDD( ALARM_ID_T alarm ); + +// ********** private function prototypes ********** + +static void activateAlarmDD( ALARM_ID_T alarm ); static void publishAlarmInfo( void ); static BOOL isTransitionToFaultRequired( void ); - -/*********************************************************************//** - * @brief - * The initAlarmMgmtDD function initializes the AlarmMgmt unit. - * @details \b Inputs: none - * @details \b Outputs: unit variables initialized. - * @return none - *************************************************************************/ -void initAlarmMgmtDD( void ) -{ + +/*********************************************************************//** + * @brief + * The initAlarmMgmtDD function initializes the AlarmMgmt unit. + * @details \b Inputs: none + * @details \b Outputs: unit variables initialized. + * @return none + *************************************************************************/ +void initAlarmMgmtDD( void ) +{ alarmInfoPublicationTimerCounter = DATA_PUBLISH_COUNTER_START_COUNT; isAFaultAlarmActive = FALSE; // Initialize common alarm mgmt unit - initAlarmMgmt(); -} + initAlarmMgmt(); +} -/*********************************************************************//** - * @brief - * The execAlarmMgmt function executes periodic alarm management operations. - * @details \b Inputs: none - * @details \b Outputs: none - * @return none - *************************************************************************/ -void execAlarmMgmt( void ) -{ +/*********************************************************************//** + * @brief + * The execAlarmMgmt function executes periodic alarm management operations. + * @details \b Inputs: none + * @details \b Outputs: none + * @return none + *************************************************************************/ +void execAlarmMgmt( void ) +{ // Publish alarm information at interval publishAlarmInfo(); -} +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarmDD function activates a given alarm. if the alarm is - * DD fault, transition fault operation mode immediately. - * @details \b Inputs: none + * DD fault, transition fault operation mode immediately. + * @details \b Inputs: none * @details \b Outputs: alarmIsActive[], isAFaultAlarmActive - * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm asked to activate. - * @param alarm ID of alarm to activate - * @return none - *************************************************************************/ -static void activateAlarmDD( ALARM_ID_T alarm ) -{ - // verify given alarm - if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) - { + * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm asked to activate. + * @param alarm ID of alarm to activate + * @return none + *************************************************************************/ +static void activateAlarmDD( ALARM_ID_T alarm ) +{ + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { ALARM_T props = getAlarmProperties( alarm ); - // no need to do anything if alarm is already active - if ( FALSE == isAlarmActive( alarm ) ) - { - // activate alarm + // no need to do anything if alarm is already active + if ( FALSE == isAlarmActive( alarm ) ) + { + // activate alarm activateAlarm( alarm ); if ( TRUE == props.alarmIsDDFault ) @@ -113,64 +113,65 @@ if ( TRUE == isTransitionToFaultRequired() ) { // If alarm is a DD fault and the alarm manager can transition to fault immediately, go to fault mode - requestNewOperationMode( DD_MODE_FAUL ); + //TODO : Testing - remove the comment later + // requestNewOperationMode( DD_MODE_FAUL ); } - } - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) - } -} + } + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, alarm ) + } +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarmNoData function activates a given alarm. An alarm message * is broadcast to the rest of the system.it doesn't contain any parameters - * associated to alarm. - * @details \b Inputs: none - * @details \b Outputs: alarm triggered message sent, alarm activated - * @param alarm ID of alarm to activate - * @return none - *************************************************************************/ -void activateAlarmNoData( ALARM_ID_T alarm ) + * associated to alarm. + * @details \b Inputs: none + * @details \b Outputs: alarm triggered message sent, alarm activated + * @param alarm ID of alarm to activate + * @return none + *************************************************************************/ +void activateAlarmNoData( ALARM_ID_T alarm ) { - activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); -} + activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarm1Data function activates a given alarm. An alarm message * is broadcast to the rest of the system. This function will include given - * data in the broadcast message for logging. - * @details \b Inputs: none - * @details \b Outputs: alarm triggered message sent, alarm activated - * @param alarm ID of alarm to activate - * @param alarmData supporting data to include in alarm message - * @return none - *************************************************************************/ -void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) + * data in the broadcast message for logging. + * @details \b Inputs: none + * @details \b Outputs: alarm triggered message sent, alarm activated + * @param alarm ID of alarm to activate + * @param alarmData supporting data to include in alarm message + * @return none + *************************************************************************/ +void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) { - activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); -} + activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The activateAlarm2Data function activates a given alarm. An alarm message * is broadcast to the rest of the system. This function will include - * two given data in the broadcast message for logging. - * @details \b Inputs: none + * two given data in the broadcast message for logging. + * @details \b Inputs: none * @details \b Outputs: alarm triggered message sent, alarm activated * @details \b Message \b sent: MSG_ID_ALARM_TRIGGERED to update Alarm - * trigerred details along with the supporting data. - * @param alarm ID of alarm to activate - * @param alarmData1 supporting data to include in alarm message - * @param alarmData2 supporting data to include in alarm message + * trigerred details along with the supporting data. + * @param alarm ID of alarm to activate + * @param alarmData1 supporting data to include in alarm message + * @param alarmData2 supporting data to include in alarm message * @param outside flag indicates whether alarm is originating from outside HD f/w - * @return none - *************************************************************************/ -void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) + * @return none + *************************************************************************/ +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) { TD_MODE_SUB_MODE_T tdModes; ALARM_T props = getAlarmProperties( alarm ); @@ -188,44 +189,44 @@ } activateAlarmDD( alarm ); } -} +} -/*********************************************************************//** - * @brief +/*********************************************************************//** + * @brief * The clearAlarmDD function clears a given alarm if it is recoverable. - * An alarm message is broadcast to the rest of the system. - * @details \b Inputs: none + * An alarm message is broadcast to the rest of the system. + * @details \b Inputs: none * @details \b Outputs: AlarmStatusTable[] * @details \b Message \Sent: MSG_ID_ALARM_CLEARED to update clearance of * the alarm. * @details \b Alarm: ALARM_ID_DD_SOFTWARE_FAULT when invalid alarm needs - * to be cleared. - * @param alarm ID of alarm to clear - * @return none - *************************************************************************/ -void clearAlarmDD( ALARM_ID_T alarm ) -{ + * to be cleared. + * @param alarm ID of alarm to clear + * @return none + *************************************************************************/ +void clearAlarmDD( ALARM_ID_T alarm ) +{ ALARM_T props = getAlarmProperties( alarm ); - // verify given alarm - if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) - { - // clear alarm and broadcast alarm clear if not already cleared (and not a DD fault which should not be cleared) - if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDDFault != TRUE ) ) + // verify given alarm + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + // clear alarm and broadcast alarm clear if not already cleared (and not a DD fault which should not be cleared) + if ( ( TRUE == isAlarmActive( alarm ) ) && ( props.alarmIsDDFault != TRUE ) ) { if ( TRUE == isTDCommunicating() ) - { + { broadcastAlarmCleared( alarm ); } - setAlarmActive( alarm, FALSE ); - clearAlarmConditionDD( alarm ); - } - } - else - { - SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) - } -} + setAlarmActive( alarm, FALSE ); + clearAlarmConditionDD( alarm ); + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, alarm ) + } +} /*********************************************************************//** * @brief @@ -373,11 +374,11 @@ return status; } - -/************************************************************************* - * TEST SUPPORT FUNCTIONS - *************************************************************************/ +/************************************************************************* + * TEST SUPPORT FUNCTIONS + *************************************************************************/ + /*********************************************************************//** * @brief * The testClearAllAlarms function clears all active alarms, even if they