Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r0f8c9626c8f4a0565242528d66f529394e6a5857 -r55e1e33ff4ec66e826b25a8d8bbde85e83c00771 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 0f8c9626c8f4a0565242528d66f529394e6a5857) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 55e1e33ff4ec66e826b25a8d8bbde85e83c00771) @@ -1257,7 +1257,8 @@ BOOL noResume = FALSE; BOOL noResumePerAlarmPropertyOnly = alarmNoRetrigger; // cannot resume if no re-trigger flag is set BOOL noRinseback = FALSE; - BOOL noEndTreatment = FALSE; + BOOL noEndTreatment = FALSE; + BOOL endTxOnlyAlarmActive = FALSE; BOOL usrAckReq = FALSE; BOOL noMinimize = TRUE; HD_OP_MODE_T currentMode = getCurrentOperationMode(); @@ -1308,7 +1309,14 @@ else { noEndTreatment = TRUE; - } + } + // if there are any active alarms that only allow end treatment, set flag so we can ensure we do not allow OK option. + if ( ( TRUE == ALARM_TABLE[ a ].alarmNoResume ) && + ( TRUE == ALARM_TABLE[ a ].alarmNoRinseback ) && + ( FALSE == ALARM_TABLE[ a ].alarmNoEndTreatment ) ) + { + endTxOnlyAlarmActive = TRUE; + } } // If alarm active } // Alarm table loop @@ -1329,6 +1337,13 @@ noEndTreatment = TRUE; } + // if OK option enabled and there are any active alarms that only allow end treatment, block OK option and allow end treatment option (DEN-16594). + if ( ( TRUE == usrAckReq ) && ( TRUE == endTxOnlyAlarmActive ) ) + { + usrAckReq = FALSE; + noEndTreatment = FALSE; + } + // If AC power is out, block all user options if ( TRUE == getCPLDACPowerLossDetected() ) {