Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r031a5ae459c0b73d8b95e6cb8a484309846c1b46 -r52a40b3e01e67899cdeabdf64f4efddbe4654007 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 031a5ae459c0b73d8b95e6cb8a484309846c1b46) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 52a40b3e01e67899cdeabdf64f4efddbe4654007) @@ -8,7 +8,7 @@ * @file AlarmMgmt.c * * @author (last) Dara Navaei -* @date (last) 04-Jan-2022 +* @date (last) 26-Feb-2022 * * @author (original) Sean Nash * @date (original) 07-Nov-2019 @@ -63,8 +63,8 @@ #define CLR_BACKUP_AUDIO_ENABLE() {mibspiREG3->PC3 &= ~BACKUP_AUDIO_ENABLE_SPI3_PORT_MASK;} ///< Macro to disable backup alarm audio. #define ALARM_AUDIO_TEST_TONE 4 ///< Alarm audio state for continuous test tone. -#define ALARM_AUDIO_CURRENT_HG_MIN_MA 20.0 ///< Minimum audio current (high gain) during test tone self-test (in mA). // TODO - Why is HG so low? S/B same as LG I think. -#define ALARM_AUDIO_CURRENT_LG_MIN_MA 60.0 ///< Minimum audio current (low gain) during test tone self-test (in mA). +#define ALARM_AUDIO_CURRENT_HG_MIN_MA 20.0F ///< Minimum audio current (high gain) during test tone self-test (in mA). // TODO - Why is HG so low? S/B same as LG I think. +#define ALARM_AUDIO_CURRENT_LG_MIN_MA 60.0F ///< Minimum audio current (low gain) during test tone self-test (in mA). #define ALARM_AUDIO_MAX_TEST_TIME_MS 1000 ///< Maximum time for audio current to reach threshold in test. #define MAX_ALARM_AUDIO_VOLUME_INDEX (MAX_ALARM_VOLUME_LEVEL - 1 ) ///< Index for maximum alarm audio volume. #define MIN_ALARM_AUDIO_VOLUME_INDEX 0 ///< Index for minimum alarm audio volume. @@ -115,19 +115,14 @@ static OVERRIDE_U32_T alarmStatusPublishInterval = { ALARM_STATUS_PUBLISH_INTERVAL, ALARM_STATUS_PUBLISH_INTERVAL, ALARM_STATUS_PUBLISH_INTERVAL, 0 }; /// Interval (in task intervals) at which to publish alarm information to CAN bus. static OVERRIDE_U32_T alarmInfoPublishInterval = { ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, ALARM_INFO_PUB_INTERVAL, 0 }; -#ifndef ALARM_VOLUME_DEFAULT_LOW -/// Set alarm audio volume attenuation level (0..4 - lower level = higher gain). -static OVERRIDE_U32_T alarmAudioVolumeLevel = { MIN_ALARM_VOLUME_ATTENUATION, MIN_ALARM_VOLUME_ATTENUATION, MIN_ALARM_VOLUME_ATTENUATION, 0 }; -#else static OVERRIDE_U32_T alarmAudioVolumeLevel = { MAX_ALARM_VOLUME_ATTENUATION, MAX_ALARM_VOLUME_ATTENUATION, MAX_ALARM_VOLUME_ATTENUATION, 0 }; -#endif -/// Alarm audio current (high gain) measured at ADC. -static OVERRIDE_F32_T alarmPrimaryAudioCurrentHG = { 0.0, 0.0, 0.0, 0 }; -/// Alarm audio current (low gain) measured at ADC. -static OVERRIDE_F32_T alarmPrimaryAudioCurrentLG = { 0.0, 0.0, 0.0, 0 }; -/// Alarm backup audio current measured at ADC. -static OVERRIDE_F32_T alarmBackupAudioCurrent = { 0.0, 0.0, 0.0, 0 }; +static OVERRIDE_F32_T alarmPrimaryAudioCurrentHG = { 0.0, 0.0, 0.0, 0 }; /// Alarm audio current (high gain) measured at ADC. + +static OVERRIDE_F32_T alarmPrimaryAudioCurrentLG = { 0.0, 0.0, 0.0, 0 }; /// Alarm audio current (low gain) measured at ADC. + +static OVERRIDE_F32_T alarmBackupAudioCurrent = { 0.0, 0.0, 0.0, 0 }; /// Alarm backup audio current measured at ADC. + static COMP_ALARM_STATUS_T alarmStatus; ///< Record for the current composite alarm status. static ALARM_PRIORITY_RANKS_T alarmPriorityFIFO[ NUM_OF_ALARM_PRIORITIES ]; ///< FIFO - first activated or highest sub-rank alarm in each alarm priority category. @@ -204,7 +199,6 @@ alarmStatus.noResume = FALSE; alarmStatus.noRinseback = FALSE; alarmStatus.noEndTreatment = FALSE; - alarmStatus.noNewTreatment = FALSE; alarmStatus.noDialRecirc = FALSE; alarmStatus.ok = FALSE; @@ -222,7 +216,7 @@ * @return none *************************************************************************/ void execAlarmMgmt( void ) -{ +{ monitorAlarms(); handleAlarmEscalations(); updateAlarmsState(); @@ -344,6 +338,9 @@ data.almData1 = alarmData1.data.uInt.data; data.almDataType2 = (U32)alarmData2.dataType; data.almData2 = alarmData2.data.uInt.data; + data.almPriority = ALARM_TABLE[ alarm ].alarmPriority; + data.almRank = ALARM_TABLE[ alarm ].alarmSubRank; + data.almClrTopOnly = ALARM_TABLE[ alarm ].alarmClearOnly; broadcastData( MSG_ID_ALARM_TRIGGERED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&data, sizeof( ALARM_TRIGGERED_PAYLOAD_T ) ); // Send information for UI to log to treatment log @@ -372,10 +369,12 @@ // Clear alarm condition and broadcast alarm condition clear if not already cleared if ( TRUE == alarmIsDetected[ alarm ] ) { - U32 a = (U32)alarm; + ALARM_NAME_DATA_T data; + data.alarmName = (U32)alarm; + alarmIsDetected[ alarm ] = FALSE; - broadcastData( MSG_ID_ALARM_CONDITION_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&a, sizeof( U32 ) ); + broadcastData( MSG_ID_ALARM_CONDITION_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&data, sizeof( ALARM_NAME_DATA_T ) ); } } } @@ -401,9 +400,11 @@ // Clear alarm and broadcast alarm clear if not already cleared if ( TRUE == alarmIsActive[ alarm ] ) { - U32 a = (U32)alarm; + ALARM_NAME_DATA_T data; + + data.alarmName = (U32) alarm; - broadcastData( MSG_ID_ALARM_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&a, sizeof( U32 ) ); + broadcastData( MSG_ID_ALARM_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&data, sizeof( ALARM_NAME_DATA_T ) ); alarmIsActive[ alarm ] = FALSE; clearAlarmCondition( alarm ); @@ -494,7 +495,7 @@ if ( ALARM_USER_ACTION_ACK == action ) { - // // If user acknowledged alarm w/ clear only property, just clear that alarm + // If user acknowledged alarm w/ clear only property, just clear that alarm if ( TRUE == ALARM_TABLE[ a ].alarmClearOnly ) { clearAlarm( a ); @@ -651,19 +652,6 @@ /*********************************************************************//** * @brief -* The getNoNewTreatmentStatus function gets the persistent no new -* treatment alarm status flag. -* @details Inputs: alarmStatus.noNewTreatment -* @details Outputs: none -* @return TRUE if no new treatment allowed, otherwise FALSE -*************************************************************************/ -BOOL getNoNewTreatmentStatus( void ) -{ - return alarmStatus.noNewTreatment; -} - -/*********************************************************************//** - * @brief * The handleActiveAlarmListRequest function processed the active alarms list * request from UI. * @details Inputs: alarmIsActive[] @@ -913,14 +901,17 @@ else { if ( alarmStatus.alarmsState < NUM_OF_ALARM_PRIORITIES ) +#ifndef _RELEASE_ { -#ifndef DISABLE_ALARM_AUDIO - setAlarmAudioState( alarmStatus.alarmsState, - ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_GAIN], - ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_DIVIDER] ); -#endif + if ( getSoftwareConfigStatus( SW_CONFIG_DISABLE_ALARM_AUDIO ) != SW_CONFIG_ENABLE_VALUE ) + { + setAlarmAudioState( alarmStatus.alarmsState, + ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_GAIN], + ALARM_AUDIO_DIVIDER_LOOKUP_TABLE[volume][ALARM_AUDIO_VOLUME_DIVIDER] ); + } } else +#endif { SET_ALARM_WITH_2_U32_DATA( ALARM_ID_HD_SOFTWARE_FAULT, SW_FAULT_ID_ALARM_MGMT_AUDIO_INVALID_ALARM_STATE, alarmStatus.alarmsState ) setAlarmAudioState( ALARM_PRIORITY_HIGH, @@ -1042,7 +1033,6 @@ BOOL noResume = FALSE; BOOL noRinseback = FALSE; BOOL noEndTreatment = FALSE; - BOOL noNewTreatment = FALSE; BOOL usrAckReq = FALSE; BOOL noMinimize = TRUE; ALARM_ID_T a; @@ -1114,7 +1104,10 @@ alarmStatus.noResume = noResume; alarmStatus.noRinseback = noRinseback; alarmStatus.noEndTreatment = noEndTreatment; - alarmStatus.noNewTreatment |= noNewTreatment; +//<<<<<<< HEAD +//======= DEBUG_DENALI + //alarmStatus.noNewTreatment |= noNewTreatment; +//>>>>>>> DEN-11928-dg-conductivity-update alarmStatus.ok = usrAckReq; alarmStatus.noMinimize = noMinimize; } @@ -1202,6 +1195,14 @@ { U32 result = alarmAudioVolumeLevel.data; +#ifndef _RELEASE_ + // Check the software configurations + if ( SW_CONFIG_ENABLE_VALUE == getSoftwareConfigStatus( SW_CONFIG_ENABLE_ALARM_VOLUME_DEFAULT_LOW ) ) + { + result = MIN_ALARM_VOLUME_ATTENUATION; + } +#endif + if ( OVERRIDE_KEY == alarmAudioVolumeLevel.override ) { result = alarmAudioVolumeLevel.ovData; @@ -1482,9 +1483,11 @@ { if ( TRUE == alarmIsActive[ a ] ) { - U32 al = (U32)a; + ALARM_NAME_DATA_T data; - broadcastData( MSG_ID_ALARM_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&al, sizeof( U32 ) ); + data.alarmName = (U32)a; + + broadcastData( MSG_ID_ALARM_CLEARED, COMM_BUFFER_OUT_CAN_HD_ALARM, (U08*)&data, sizeof( ALARM_NAME_DATA_T ) ); alarmIsActive[ a ] = FALSE; alarmStartedAt[ a ].data = 0; // Clear FIFO if this alarm was in it