Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -rbd1ef41547aab439201897e2dcc873479a468c0a -r766708fceb0bdf1af8c7897df29d4f5036bfd3db --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision bd1ef41547aab439201897e2dcc873479a468c0a) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 766708fceb0bdf1af8c7897df29d4f5036bfd3db) @@ -33,7 +33,25 @@ // ********** public definitions ********** #include "AlarmDefs.h" - + +/// Interval (in ms) at which alarm lamp and audio control will be executed. +#define ALARM_LAMP_AND_AUDIO_CONTROL_INTERVAL_MS 250 + +#define MAX_ALARM_VOLUME_LEVEL 5 +#define MAX_ALARM_VOLUME_ATTENUATION 4 +#define MIN_ALARM_VOLUME_ATTENUATION 0 + +/// Enumeration of alarm actions. +typedef enum Alarm_Actions +{ + ALARM_ACTION_STOP = 0, ///< Alarm state requests HD in safe state (pumps stopped, heater off, valves in safe state) + ALARM_ACTION_RESUME, ///< User selected resume from alarm recovery options + ALARM_ACTION_RINSEBACK, ///< User selected rinseback from alarm recovery options + ALARM_ACTION_END_TREATMENT, ///< User selected end treatment from alarm recovery options + ALARM_ACTION_ACK, ///< User selected Ack from alarm recovery options + NUMBER_OF_ALARM_ACTIONS ///< Number of alarm actions +} ALARM_ACTION_T; + /// Alarm data types list. typedef enum Alarm_Data_Types { @@ -49,22 +67,23 @@ /// Record structure for detailing the properties of the current composite alarm status. typedef struct { - ALARM_PRIORITY_T alarmsState; ///< current alarm priority level - BOOL alarmsSilenced; ///< alarms are currently silenced? - U32 alarmsSilenceStart; ///< time stamp for when alarms were silenced (ms) - U32 alarmsSilenceExpiresIn; ///< time until alarm silence expires (seconds) - BOOL alarmsToEscalate; ///< are any active alarms due to escalate (should UI show count down timer?) - U32 alarmsEscalatesIn; ///< time until alarm will escalate (seconds) - ALARM_ID_T alarmTop; ///< ID of current top alarm that will drive lamp/audio and UI should be displaying right now - BOOL systemFault; ///< a system fault is active? - BOOL stop; ///< we should be in controlled stop right now - BOOL noClear; ///< no recovery will be possible - BOOL noResume; ///< treatment may not be resumed at this time - BOOL noRinseback; ///< rinseback may not be initiated at this time - BOOL noEndTreatment; ///< ending the treatment is not an option at this time - BOOL noNewTreatment; ///< no new treatments may be started even if current treatment is ended - BOOL bypassDialyzer; ///< the dialyzer should be bypassed at this time - BOOL lampOn; ///< the alarm lamp is on + ALARM_PRIORITY_T alarmsState; ///< Current alarm priority level + BOOL alarmsSilenced; ///< Alarms are currently silenced? + U32 alarmsSilenceStart; ///< Time stamp for when alarms were silenced (ms) + U32 alarmsSilenceExpiresIn; ///< Time until alarm silence expires (seconds) + BOOL alarmsToEscalate; ///< Are any active alarms due to escalate (should UI show count down timer?) + U32 alarmsEscalatesIn; ///< Time until alarm will escalate (seconds) + ALARM_ID_T alarmTop; ///< ID of current top alarm that will drive lamp/audio and UI should be displaying right now + BOOL topAlarmConditionnDetected; ///< Condition for top alarm is still being detected + BOOL systemFault; ///< A system fault is active? + BOOL stop; ///< We should be in controlled stop right now + BOOL noClear; ///< No recovery will be possible + BOOL noResume; ///< Treatment may not be resumed at this time + BOOL noRinseback; ///< Rinseback may not be initiated at this time + BOOL noEndTreatment; ///< Ending the treatment is not an option at this time + BOOL noNewTreatment; ///< No new treatments may be started even if current treatment is ended + BOOL usrACKRequired; ///< The user must acknowledge top alarm + BOOL lampOn; ///< The alarm lamp is on } COMP_ALARM_STATUS_T; /// Record structure for unsigned integer alarm data. @@ -116,7 +135,7 @@ U32 alarmTop; ///< ID of top active alarm U32 escalatesIn; ///< Top active alarm escalates in this many seconds U32 silenceExpiresIn; ///< Silencing of alarms expires in this many seconds - U16 alarmsFlags; ///< bit flags: 1 = true, 0 = false for each bit flag + U16 alarmsFlags; ///< Bit flags: 1 = true, 0 = false for each bit flag } ALARM_COMP_STATUS_PAYLOAD_T; #pragma pack(pop) @@ -165,18 +184,18 @@ SW_FAULT_ID_DIAL_OUT_FLOW_INVALID_DIAL_OUT_PUMP_DIRECTION, SW_FAULT_ID_DIAL_OUT_FLOW_INVALID_DIAL_OUT_PUMP_STATE, // 40 SW_FAULT_ID_DIAL_OUT_FLOW_SET_TOO_HIGH, - SW_FAULT_ID____AVAILABLE_1, - SW_FAULT_ID____AVAILABLE_2, + SW_FAULT_ID_ALARM_MGMT_AUDIO_INVALID_ALARM_STATE, + SW_FAULT_ID_FPGA_INVALID_ALARM_AUDIO_PARAM, SW_FAULT_ID_RTC_EXEC_INVALID_STATE, SW_FAULT_ID_RTC_SELF_TEST_INVALID_STATE, // 45 SW_FAULT_ID_RTC_TRANSACTION_SERVICE_INVALID_STATE, - SW_FAULT_ID_PRES_OCCL_INVALID_STATE, - SW_FAULT_ID____AVAILABLE_3, - SW_FAULT_ID____AVAILABLE_4, + SW_FAULT_ID_PRES_OCCL_INVALID_STATE, + SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_SIGNAL_ACTION, + SW_FAULT_ID_ALARM_MGMT_INVALID_USER_ACTION, SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL, // 50 SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, - SW_FAULT_ID____AVAILABLE_5, + SW_FAULT_ID_MODE_TREATMENT_INVALID_ALARM_ACTION, SW_FAULT_ID_MODE_PRIME_RESERVOIR_MGMT_INVALID_STATE, SW_FAULT_ID_DIALYSIS_INVALID_STATE, // 55 SW_FAULT_ID_DIALYSIS_INVALID_UF_STATE, @@ -217,6 +236,8 @@ SW_FAULT_ID_DIALYSIS_INVALID_SALINE_BOLUS_STATE, SW_FAULT_ID_MODE_PRE_TREATMENT_INVALID_STATE, SW_FAULT_ID_MODE_PRE_TREATMENT_PRIME_INVALID_STATE, + SW_FAULT_ID_SYSTEM_COMM_INVALID_FRAME_SIZE, + SW_FAULT_ID_SYSTEM_CMMM_CAN_TRANSMIT_REJECTED, // 95 NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; @@ -228,13 +249,16 @@ void activateAlarmNoData( ALARM_ID_T alarm ); void activateAlarm1Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData ); void activateAlarm2Data( ALARM_ID_T alarm, ALARM_DATA_T alarmData1, ALARM_DATA_T alarmData2 ); -void clearAlarm( ALARM_ID_T alarm ); +void clearAlarm( ALARM_ID_T alarm ); +void clearAlarmCondition( ALARM_ID_T alarm ); +void setAlarmUserActionEnabled( ALARM_USER_ACTION_T action, BOOL enabled ); +void signalAlarmSilence( U32 cmd ); +void signalAlarmUserActionInitiated( ALARM_USER_ACTION_T action ); BOOL isAlarmActive( ALARM_ID_T alarm ); ALARM_PRIORITY_T getCurrentAlarmStatePriority( void ); -BOOL isAlarmRecoverable( ALARM_ID_T alarm ); +BOOL isAlarmRecoverable( ALARM_ID_T alarm ); +void setAlarmAudioVolume( U32 volumeLevel ); -BOOL testSetAlarmStatusPublishIntervalOverride( U32 value ); -BOOL testResetAlarmStatusPublishIntervalOverride( void ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); BOOL testSetAlarmStartOverride( U32 alarmID, U32 value );