Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rc9b807ca8f5a4c3d8a5b390d54c43afd217b39d3 -receb190a5d66fdbee779478ac8bb50a846ed9241 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision c9b807ca8f5a4c3d8a5b390d54c43afd217b39d3) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision eceb190a5d66fdbee779478ac8bb50a846ed9241) @@ -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 ); } @@ -357,6 +358,36 @@ } } +/************************************************************************* + * @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; + + default: + // NOTE: Do nothing for the other modes + break; + } + + return status; +} /************************************************************************* * TEST SUPPORT FUNCTIONS