Index: firmware/App/Services/AlarmMgmtTD.c =================================================================== diff -u -rf1e3338feb8fccadf01aa629aec4a55132f6fd77 -r2d40deb50ffb27667c3e57f427b1e197e163910e --- firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision f1e3338feb8fccadf01aa629aec4a55132f6fd77) +++ firmware/App/Services/AlarmMgmtTD.c (.../AlarmMgmtTD.c) (revision 2d40deb50ffb27667c3e57f427b1e197e163910e) @@ -334,63 +334,63 @@ *************************************************************************/ 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 ) ) + // Block if new alarms are occur during loss of AC power +// if ( ( TRUE == getCPLDACPowerLossDetected() ) ) // { -// // if the block timer is 0 OR we have an unblockable alarm -//// if ( ( ALARM_NOT_BLOCKED == alarmsBlockedTimer ) -//// || ( ALARM_ID_TD_AC_POWER_LOST == alarm ) -//// || ( ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT == alarm ) -//// || ( ALARM_ID_TD_DD_RESTARTED_FAULT == alarm ) ) -// { -// TD_OP_MODE_T opMode = getCurrentOperationMode(); -//// TREATMENT_STATE_T ts = getTreatmentState(); -// -// ALARM_T props = getAlarmProperties( alarm ); -// -// // do not trigger alarm if blocked by current mode/state -//// if ( ( ( props.alarmBlockRinseback != TRUE ) || ( opMode != MODE_TREA ) || ( ts != TREATMENT_RINSEBACK_STATE ) || ( TRUE == outside ) ) && -//// ( ( props.alarmBlockEndTx != TRUE ) || ( opMode != MODE_POST ) || ( TRUE == outside )) ) -// { -// // Broadcast alarm and data if alarm not already active -// if ( FALSE == isAlarmActive( alarm ) ) -// { -// ALARM_TRIGGERED_PAYLOAD_T data; -// -// data.alarm = (U32)alarm; -// data.almDataType1 = (U32)alarmData1.dataType; -// data.almData1 = alarmData1.data.uInt.data; -// data.almDataType2 = (U32)alarmData2.dataType; -// data.almData2 = alarmData2.data.uInt.data; -// data.almPriority = props.alarmPriority; -// data.almRank = props.alarmSubRank; -// data.almClrTopOnly = props.alarmClearOnly; -// -// broadcastData( MSG_ID_ALARM_TRIGGERED, COMM_BUFFER_OUT_CAN_TD_ALARM, (U08*)&data, sizeof( ALARM_TRIGGERED_PAYLOAD_T ) ); -// // Send information for UI to log to treatment log -// if ( ( TRUE == props.alarmTreatmentLog ) && ( MODE_TREA == getCurrentOperationMode() ) ) -// { -// F32 data1; -// F32 data2; -// -// memcpy( &data1, &alarmData1.data, sizeof( F32 ) ); -// memcpy( &data2, &alarmData2.data, sizeof( F32 ) ); -//// sendTreatmentLogAlarmEventData( alarm, data1, data2 ); -// } -// } -// activateAlarmTD( alarm ); -// } -// } +// alarmsBlockedTimer = ALARM_BLOCKED_COUNT_AFTER_AC_RETURN; // } -// else -// { -// SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE2, alarm ) -// } + // Sanity check, verify valid alarm index + if ( ( alarm > ALARM_ID_NO_ALARM ) && ( alarm < NUM_OF_ALARM_IDS ) ) + { + // if the block timer is 0 OR we have an unblockable alarm +// if ( ( ALARM_NOT_BLOCKED == alarmsBlockedTimer ) +// || ( ALARM_ID_TD_AC_POWER_LOST == alarm ) +// || ( ALARM_ID_TD_AC_POWER_LOST_IN_TREATMENT == alarm ) +// || ( ALARM_ID_TD_DD_RESTARTED_FAULT == alarm ) ) + { + TD_OP_MODE_T opMode = getCurrentOperationMode(); +// TREATMENT_STATE_T ts = getTreatmentState(); + + ALARM_T props = getAlarmProperties( alarm ); + + // do not trigger alarm if blocked by current mode/state +// if ( ( ( props.alarmBlockRinseback != TRUE ) || ( opMode != MODE_TREA ) || ( ts != TREATMENT_RINSEBACK_STATE ) || ( TRUE == outside ) ) && +// ( ( props.alarmBlockEndTx != TRUE ) || ( opMode != MODE_POST ) || ( TRUE == outside )) ) + { + // Broadcast alarm and data if alarm not already active + if ( FALSE == isAlarmActive( alarm ) ) + { + ALARM_TRIGGERED_PAYLOAD_T data; + + data.alarm = (U32)alarm; + data.almDataType1 = (U32)alarmData1.dataType; + data.almData1 = alarmData1.data.uInt.data; + data.almDataType2 = (U32)alarmData2.dataType; + data.almData2 = alarmData2.data.uInt.data; + data.almPriority = props.alarmPriority; + data.almRank = props.alarmSubRank; + data.almClrTopOnly = props.alarmClearOnly; + + broadcastData( MSG_ID_ALARM_TRIGGERED, COMM_BUFFER_OUT_CAN_TD_ALARM, (U08*)&data, sizeof( ALARM_TRIGGERED_PAYLOAD_T ) ); + // Send information for UI to log to treatment log + if ( ( TRUE == props.alarmTreatmentLog ) && ( MODE_TREA == getCurrentOperationMode() ) ) + { + F32 data1; + F32 data2; + + memcpy( &data1, &alarmData1.data, sizeof( F32 ) ); + memcpy( &data2, &alarmData2.data, sizeof( F32 ) ); +// sendTreatmentLogAlarmEventData( alarm, data1, data2 ); + } + } + activateAlarmTD( alarm ); + } + } + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_TD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE2, alarm ) + } } /*********************************************************************//**