Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -rceeba51c01b896855eb03ab81281a2b0f48c75d2 -re5fc9a1e8898da7bc6d26f1e333ee44f6544d214 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision ceeba51c01b896855eb03ab81281a2b0f48c75d2) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision e5fc9a1e8898da7bc6d26f1e333ee44f6544d214) @@ -8,7 +8,7 @@ * @file AlarmMgmt.c * * @author (last) Sean Nash -* @date (last) 05-Feb-2023 +* @date (last) 13-Mar-2023 * * @author (original) Sean Nash * @date (original) 07-Nov-2019 @@ -44,8 +44,7 @@ #define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. -#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. -#define MAX_ALARM_LIST_SIZE 10 ///< Maximum number of active alarms inside alarm list. +#define LOWEST_ALARM_SUB_RANK 999 ///< Lowest alarm sub-rank that can be set. // *** This declaration will cause a compiler error if ALARM_TABLE does not have same # of alarms as the Alarm_List enumeration. U08 alarmTableSizeAssertion[ ( ( sizeof( ALARM_TABLE ) / sizeof( ALARM_T ) ) == NUM_OF_ALARM_IDS ? 1 : -1 ) ]; @@ -522,7 +521,8 @@ break; case ALARM_USER_ACTION_END_TREATMENT: - initiateAlarmAction( ALARM_ACTION_END_TREATMENT ); + // Send message to UI to get user confirmation to end treatment - action initiated only upon receipt of user confirmation from UI + addConfirmationRequest( GENERIC_CONFIRM_ID_TREATMENT_END, GENERIC_CONFIRM_CMD_REQUEST_OPEN, 0 ); break; case ALARM_USER_ACTION_ACK: @@ -710,16 +710,17 @@ *************************************************************************/ void handleActiveAlarmListRequest( void ) { - BOOL accepted = TRUE; - REQUEST_REJECT_REASON_CODE_T rejReason = REQUEST_REJECT_REASON_NONE; - U32 activeAlarmList[ MAX_ALARM_LIST_SIZE ]; + ACTIVE_ALARM_LIST_RESPONSE_PAYLOAD_T activeAlarmPayload; U32 index; U32 activeAlarmListIndex = 0; + activeAlarmPayload.accepted = TRUE; + activeAlarmPayload.rejectionReason = (U32)REQUEST_REJECT_REASON_NONE; + // Blank alarm list initially for ( index = 0; index < MAX_ALARM_LIST_SIZE; index++ ) { - activeAlarmList[ index ] = ALARM_ID_NO_ALARM; + activeAlarmPayload.activeAlarmList[ index ] = ALARM_ID_NO_ALARM; } // Fill alarm list from (up to) 10 highest priority active alarms @@ -729,13 +730,13 @@ { if ( ( TRUE == isAlarmActive( ALARM_RANK_TABLE[ index ].alarmID ) ) && ( activeAlarmListIndex < MAX_ALARM_LIST_SIZE ) ) { - activeAlarmList[ activeAlarmListIndex ] = ALARM_RANK_TABLE[ index ].alarmID; + activeAlarmPayload.activeAlarmList[ activeAlarmListIndex ] = ALARM_RANK_TABLE[ index ].alarmID; activeAlarmListIndex++; } } } - sendActiveAlarmsList( accepted, rejReason, activeAlarmList, sizeof( activeAlarmList ) ); + sendActiveAlarmsList( activeAlarmPayload ); } /*********************************************************************//** @@ -819,6 +820,12 @@ alarmPrimaryAudioCurrentLG.data = getIntADCVoltageConverted( INT_ADC_PRIMARY_ALARM_CURRENT_LG ); alarmBackupAudioCurrent.data = getFPGABackupAlarmAudioCurrent(); + // Check for user confirmation of end treatment alarm response + if ( CONFIRMATION_REQUEST_STATUS_ACCEPTED == getConfirmationRequestStatus( GENERIC_CONFIRM_ID_TREATMENT_END ) ) + { + initiateAlarmAction( ALARM_ACTION_END_TREATMENT ); + } + // TODO - Check current vs. expected audio output } @@ -1302,7 +1309,7 @@ data.uiAlarmButtonBlocks[ ALARM_BUTTON_STATE_BLOCK_RINSEBACK ] = (U08)alarmButtonBlockers[ ALARM_BUTTON_STATE_BLOCK_RINSEBACK ]; data.uiAlarmButtonBlocks[ ALARM_BUTTON_STATE_BLOCK_END_TREATMENT ] = (U08)alarmButtonBlockers[ ALARM_BUTTON_STATE_BLOCK_END_TREATMENT ]; - broadcastData( MSG_ID_HD_ALARM_INFORMATION, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( ALARM_INFO_PAYLOAD_T ) ); + broadcastData( MSG_ID_HD_ALARM_INFORMATION_DATA, COMM_BUFFER_OUT_CAN_HD_BROADCAST, (U08*)&data, sizeof( ALARM_INFO_PAYLOAD_T ) ); alarmInfoPublicationTimerCounter = 0; } }