Index: firmware/App/Modes/Rinseback.c =================================================================== diff -u -r38355442b06187fe5d57deca647b3adf2fa26b89 -rb2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec --- firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision 38355442b06187fe5d57deca647b3adf2fa26b89) +++ firmware/App/Modes/Rinseback.c (.../Rinseback.c) (revision b2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec) @@ -802,8 +802,15 @@ if ( RINSEBACK_PAUSED_STATE == rinsebackState ) { - result = TRUE; - resumeRinsebackRequested = TRUE; + if ( getNoRetriggerFlag() != TRUE ) + { + result = TRUE; + resumeRinsebackRequested = TRUE; + } + else + { + *rejReason = REQUEST_REJECT_REASON_TREATMENT_CANNOT_BE_RESUMED; + } } else { 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 ); } } Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r943c6072dae3678dbba29f9b63035d44139ea1cf -rb2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 943c6072dae3678dbba29f9b63035d44139ea1cf) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision b2cb7cc1837c1b6aac86a4c8d77cb2c2bf94a3ec) @@ -199,6 +199,7 @@ void clearAlarm( ALARM_ID_T alarm ); void clearAlarmCondition( ALARM_ID_T alarm ); void clearNoRetriggerFlag( void ); +BOOL getNoRetriggerFlag( void ); void setAlarmUserActionEnabled( ALARM_USER_ACTION_T action, BOOL enabled ); void signalAlarmSilence( ALARM_SILENCE_CMD_T cmd ); void signalAlarmUserActionInitiated( ALARM_USER_ACTION_T action );