Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rb3e53e10da033307b084161e6008fa5ed7710ccf -r9426334142cbfdea9ee99e3040fc08ff0247da7b --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision b3e53e10da033307b084161e6008fa5ed7710ccf) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 9426334142cbfdea9ee99e3040fc08ff0247da7b) @@ -65,6 +65,7 @@ static void activateAlarm( ALARM_ID_T alarm ); static void publishAlarmInfo( void ); static void alarmUserNotify( void ); +static BOOL isTransitionToFaultRequired( void ); /*********************************************************************//** * @brief @@ -125,7 +126,7 @@ alarmConditionIsActive[ alarm ] = TRUE; // If alarm is a DG fault, request transition to fault mode - if ( ( TRUE == ALARM_TABLE[ alarm ].alarmIsDGFault ) && ( getCurrentOperationMode() != DG_MODE_SERV ) ) + if ( ( TRUE == ALARM_TABLE[ alarm ].alarmIsDGFault ) && ( TRUE == isTransitionToFaultRequired() ) ) { requestNewOperationMode( DG_MODE_FAUL ); } @@ -351,6 +352,33 @@ setCPLDFaultAudio( PIN_SIGNAL_LOW ); // Clear Fault Audio } } + +/************************************************************************* + * @brief + * The isTransitionToFaultRequired function checks whether the alarm management + * should request a transition to fault mode immediately or it should be deferred + * @details Inputs: none + * @details Outputs: none + * @param none + * @return TRUE if transition to fault is required otherwise, FALSE + *************************************************************************/ +static BOOL isTransitionToFaultRequired( void ) +{ + BOOL status = TRUE; + DG_OP_MODE_T opMode = getCurrentOperationMode(); + + switch( opMode ) + { + case DG_MODE_FLUS: + case DG_MODE_HEAT: + case DG_MODE_CHEM: + case DG_MODE_SERV: + status = FALSE; + break; + } + + return status; +} /************************************************************************* * TEST SUPPORT FUNCTIONS