Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r2e6fa609bde16c6e335cbea127ecfa7a6afad6c9 -r579bc4f9f48d639777faa8354c921c3c9e60f80c --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 2e6fa609bde16c6e335cbea127ecfa7a6afad6c9) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 579bc4f9f48d639777faa8354c921c3c9e60f80c) @@ -358,7 +358,7 @@ *************************************************************************/ void activateAlarmNoData( ALARM_ID_T alarm ) { - activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA ); + activateAlarm2Data( alarm, BLANK_ALARM_DATA, BLANK_ALARM_DATA, FALSE ); } /*********************************************************************//** @@ -374,7 +374,7 @@ *************************************************************************/ void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ) { - activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA ); + activateAlarm2Data( alarm, alarmData, BLANK_ALARM_DATA, FALSE ); } /*********************************************************************//** @@ -386,11 +386,17 @@ * @details Outputs: alarm triggered message sent, alarm activated * @param alarm ID of alarm to activate * @param alarmData1 supporting data to include in alarm msg - * @param alarmData2 supporting data to include in alarm msg + * @param alarmData2 supporting data to include in alarm msg + * @param outside flag indicates whether alarm is originating from outside HD f/w * @return none *************************************************************************/ -void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ) -{ +void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2, BOOL outside ) +{ + // Block if new alarms are occur during loss of AC power + if ( ( TRUE == getCPLDACPowerLossDetected() ) ) + { + alarmsBlockedTimer = ALARM_BLOCKED_COUNT_AFTER_AC_RETURN; + } // Sanity check, verify valid alarm index if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) { @@ -401,12 +407,13 @@ { // do not re-trigger alarm if blocked by property if ( ( FALSE == alarmNoRetrigger ) || ( ( ALARM_TABLE[ alarm ].alarmNoRetrigOnRB != TRUE ) && ( ALARM_TABLE[ alarm ].alarmNoRetrigOnEndTx != TRUE ) ) ) - { // do not trigger alarm if blocked by current mode/state + { HD_OP_MODE_T opMode = getCurrentOperationMode(); TREATMENT_STATE_T ts = getTreatmentState(); - if ( ( ( ALARM_TABLE[ alarm ].alarmBlockRinseback != TRUE ) || ( opMode != MODE_TREA ) || ( ts != TREATMENT_RINSEBACK_STATE ) ) && - ( ( ALARM_TABLE[ alarm ].alarmBlockEndTx != TRUE ) || ( opMode != MODE_POST ) ) ) + // do not trigger alarm if blocked by current mode/state + if ( ( ( ALARM_TABLE[ alarm ].alarmBlockRinseback != TRUE ) || ( opMode != MODE_TREA ) || ( ts != TREATMENT_RINSEBACK_STATE ) || ( TRUE == outside ) ) && + ( ( ALARM_TABLE[ alarm ].alarmBlockEndTx != TRUE ) || ( opMode != MODE_POST ) || ( TRUE == outside )) ) { // Broadcast alarm and data if alarm not already active if ( FALSE == alarmIsActive[ alarm ] )