Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r943c6072dae3678dbba29f9b63035d44139ea1cf -rb2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 943c6072dae3678dbba29f9b63035d44139ea1cf) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision b2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec) @@ -471,12 +471,24 @@ * @brief * The clearNoRetriggerFlag function clears the no re-trigger flag. * @details Inputs: none - * @details Outputs: + * @details Outputs: alarmNoRetrigger * @return none *************************************************************************/ void clearNoRetriggerFlag( void ) { alarmNoRetrigger = FALSE; +} + +/*********************************************************************//** + * @brief + * The clearNoRetriggerFlag function returns the no re-trigger flag. + * @details Inputs: alarmNoRetrigger + * @details Outputs: none + * @return alarmNoRetrigger + *************************************************************************/ +BOOL getNoRetriggerFlag( void ) +{ + return alarmNoRetrigger; } /*********************************************************************//** @@ -1270,13 +1282,24 @@ if ( ( FALSE == ALARM_TABLE[ a ].alarmNoClear ) && ( FALSE == ALARM_TABLE[ a ].alarmClearOnly ) ) { if ( ( ALARM_USER_ACTION_RINSEBACK == action ) && ( TRUE == ALARM_TABLE[ a ].alarmNoRetrigOnRB ) ) - { + { // alarms with no re-trigger on rinseback property should set the no re-trigger flag alarmNoRetrigger = TRUE; } else if ( ( ALARM_USER_ACTION_END_TREATMENT == action ) && ( TRUE == ALARM_TABLE[ a ].alarmNoRetrigOnEndTx ) ) - { + { // alarms with no re-trigger on end-tx property should set the no re-trigger flag alarmNoRetrigger = TRUE; } + else if ( ALARM_USER_ACTION_ACK == action ) + { + if ( ( TRUE == ALARM_TABLE[ a ].alarmNoResume ) && ( TRUE == ALARM_TABLE[ a ].alarmNoRinseback ) ) + { // alarms that only allow end-tx that occur in rinseback or recirc states of treatment mode should set the no re-trigger flag + if ( ( MODE_TREA == getCurrentOperationMode() ) && + ( ( TREATMENT_RINSEBACK_STATE == getCurrentSubMode() ) || ( TREATMENT_RECIRC_STATE == getCurrentSubMode() ) ) ) + { + alarmNoRetrigger = TRUE; + } + } + } clearAlarm( a ); } }