Index: firmware/App/Services/AlarmMgmt.c =================================================================== diff -u -r6cb2aa52c6701efe0788ee453da6449e29860927 -rdf41331377d5da437e853327019c17c58e3af775 --- firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision 6cb2aa52c6701efe0788ee453da6449e29860927) +++ firmware/App/Services/AlarmMgmt.c (.../AlarmMgmt.c) (revision df41331377d5da437e853327019c17c58e3af775) @@ -37,6 +37,7 @@ #define ALARM_STATUS_PUBLISH_INTERVAL ( ALARM_LAMP_AND_AUDIO_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) #define ALARM_SILENCE_EXPIRES_IN_SECS (60) ///< Alarm silence expiration time in seconds. +#define ALARM_SILENCE_REQUESTED 1 ///< User cmd to request alarm silence (1=silence, 0=cancel silence). #define SUPERVISOR_ALARM_KEY 0xD2C3B4A5 ///< 32-bit key required for clear all alarms request. @@ -422,6 +423,37 @@ /*********************************************************************//** * @brief + * The signalAlarmSilence function handles an alarm silence request from + * the user. + * @details Inputs: none + * @details Outputs: alarm silence status updated + * @param cmd ID of user command (1=silence, 0=cancel silence) + * @return none + *************************************************************************/ +void signalAlarmSilence( U08 cmd ) +{ + if ( ALARM_SILENCE_REQUESTED == cmd ) + { + if ( FALSE == alarmStatus.alarmsSilenced ) + { + alarmStatus.alarmsSilenced = TRUE; + alarmStatus.alarmsSilenceStart = getMSTimerCount(); + alarmStatus.alarmsSilenceExpiresIn = ALARM_SILENCE_EXPIRES_IN_SECS; + } + } + else + { + if ( TRUE == alarmStatus.alarmsSilenced ) + { + alarmStatus.alarmsSilenced = FALSE; + alarmStatus.alarmsSilenceStart = 0; + alarmStatus.alarmsSilenceExpiresIn = 0; + } + } +} + +/*********************************************************************//** + * @brief * The signalAlarmUserActionInitiated function clears all non-recoverable alarms * and initiates selected user action. * @details Inputs: none Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r7325348a8b5fce9101d0f68d89c791d48e1a3575 -rdf41331377d5da437e853327019c17c58e3af775 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 7325348a8b5fce9101d0f68d89c791d48e1a3575) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision df41331377d5da437e853327019c17c58e3af775) @@ -246,6 +246,7 @@ void clearAlarm( ALARM_ID_T alarm ); void clearAlarmCondition( ALARM_ID_T alarm ); void setAlarmUserActionEnabled( ALARM_USER_ACTION_T action, BOOL enabled ); +void signalAlarmSilence( U08 cmd ); void signalAlarmUserActionInitiated( ALARM_USER_ACTION_T action ); BOOL isAlarmActive( ALARM_ID_T alarm ); ALARM_PRIORITY_T getCurrentAlarmStatePriority( void ); Index: firmware/App/Services/SystemComm.c =================================================================== diff -u -rce3e0696642099164fa482c864509c67ce65579b -rdf41331377d5da437e853327019c17c58e3af775 --- firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision ce3e0696642099164fa482c864509c67ce65579b) +++ firmware/App/Services/SystemComm.c (.../SystemComm.c) (revision df41331377d5da437e853327019c17c58e3af775) @@ -1179,8 +1179,8 @@ handleDGReservoirData( message ); break; - case MSG_ID_TESTER_LOGIN_REQUEST: - handleTesterLogInRequest( message ); + case MSG_ID_USER_REQUEST_ALARM_SILENCE: + handleUIAlarmSilenceRequest( message ); break; case MSG_ID_UI_NEW_TREATMENT_PARAMS: @@ -1207,6 +1207,10 @@ handleUFVolumeSetRequest( message ); break; + case MSG_ID_TESTER_LOGIN_REQUEST: + handleTesterLogInRequest( message ); + break; + default: // TODO - unrecognized message ID received - ignore break; Index: firmware/App/Services/SystemCommMessages.c =================================================================== diff -u -rce3e0696642099164fa482c864509c67ce65579b -rdf41331377d5da437e853327019c17c58e3af775 --- firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision ce3e0696642099164fa482c864509c67ce65579b) +++ firmware/App/Services/SystemCommMessages.c (.../SystemCommMessages.c) (revision df41331377d5da437e853327019c17c58e3af775) @@ -1318,6 +1318,32 @@ /*********************************************************************//** * @brief + * The handleUIAlarmSilenceRequest function handles an alarm silence request + * message. + * @details Inputs: none + * @details Outputs: alarm silence command is handled. + * @param message a pointer to the message to handle + * @return none + *************************************************************************/ +void handleUIAlarmSilenceRequest( MESSAGE_T *message ) +{ + if ( message->hdr.payloadLen == sizeof( U08 ) ) + { + U08 *payloadPtr = message->payload; + U08 cmd; + + memcpy( &cmd, payloadPtr, sizeof( U08 ) ); + + signalAlarmSilence( cmd ); + } + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } +} + +/*********************************************************************//** + * @brief * The handleAlarmUserAction function handles a user alarm action event message. * @details Inputs: none * @details Outputs: selected action initiated. @@ -1338,6 +1364,10 @@ signalAlarmUserActionInitiated( (ALARM_USER_ACTION_T)action ); } } + else + { + sendAckResponseMsg( (MSG_ID_T)message->hdr.msgID, COMM_BUFFER_OUT_CAN_HD_2_UI, FALSE ); + } } /*********************************************************************//** Index: firmware/App/Services/SystemCommMessages.h =================================================================== diff -u -rce3e0696642099164fa482c864509c67ce65579b -rdf41331377d5da437e853327019c17c58e3af775 --- firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision ce3e0696642099164fa482c864509c67ce65579b) +++ firmware/App/Services/SystemCommMessages.h (.../SystemCommMessages.h) (revision df41331377d5da437e853327019c17c58e3af775) @@ -66,6 +66,9 @@ // MSG_ID_ALARM_CLEARED void handleAlarmCleared( MESSAGE_T *message ); +// MSG_ID_USER_REQUEST_ALARM_SILENCE +void handleUIAlarmSilenceRequest( MESSAGE_T *message ); + // MSG_ID_ALARM_CONDITION_CLEARED void handleAlarmUserAction( MESSAGE_T *message );