Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r550d9f54619a3f4b060e2290d37c8f3c023bb058 -rcf689cb281adc3138224149e9b078928b11d9f34 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 550d9f54619a3f4b060e2290d37c8f3c023bb058) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision cf689cb281adc3138224149e9b078928b11d9f34) @@ -1381,6 +1381,9 @@ if ( ( TRUE == alarmIsActive[ a ] ) && ( ( TRUE == ALARM_TABLE[ a ].alarmConditionClearImmed ) || ( alarmIsDetected[ a ] != TRUE ) || ( action != ALARM_USER_ACTION_RESUME ) ) ) { + HD_OP_MODE_T mode = getCurrentOperationMode(); + U32 sub = getCurrentSubMode(); + // set no re-trigger flag if appropriate 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 @@ -1394,17 +1397,17 @@ { 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() ) ) ) + if ( ( MODE_TREA == mode ) && ( ( TREATMENT_RINSEBACK_STATE == sub ) || ( TREATMENT_RECIRC_STATE == sub ) ) ) { alarmNoRetrigger = TRUE; } } } // check special cases where we do not want to clear this alarm - otherwise, clear it - if ( ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT == a ) && ( TRUE == alarmIsDetected[ a ] ) ) + if ( ( ALARM_ID_DG_CREATING_DIALYSATE_PLEASE_WAIT == a ) && ( TRUE == alarmIsDetected[ a ] ) && ( mode != MODE_POST ) && + ( action != ALARM_USER_ACTION_RINSEBACK ) && ( action != ALARM_USER_ACTION_END_TREATMENT ) ) { - // do not clear this alarm if condition not cleared first + // do not clear this alarm if condition not cleared first (unless treatment is over) result = FALSE; } else if ( ( ( ALARM_ID_DG_FILL_CONDUCTIVITY_OUT_OF_RANGE == a ) ||