Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -rd91a24c730aeb5cd7e3eba9ef4eca78e442911f8 -r933a18d740285e70be9d00696ed0f5a5381bc8e4 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision d91a24c730aeb5cd7e3eba9ef4eca78e442911f8) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 933a18d740285e70be9d00696ed0f5a5381bc8e4) @@ -8,7 +8,7 @@ * @file AlarmMgmt.h * * @author (last) Sean Nash -* @date (last) 10-Sep-2020 +* @date (last) 14-Oct-2020 * * @author (original) Sean Nash * @date (original) 07-Nov-2019 @@ -45,7 +45,7 @@ NUM_OF_ALARM_DATA_TYPES ///< Total number of alarm data types. } ALARM_DATA_TYPES_T; -#pragma pack(push,4) +#pragma pack(push, 4) /// Record structure for detailing the properties of the current composite alarm status. typedef struct { @@ -63,7 +63,8 @@ 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 bypassDialyzer; ///< the dialyzer should be bypassed at this time + BOOL lampOn; ///< the alarm lamp is on } COMP_ALARM_STATUS_T; /// Record structure for unsigned integer alarm data. @@ -105,6 +106,18 @@ ALARM_DATA_TYPES_T dataType; ///< The type of alarm data provided. ALARM_DATAS_T data; ///< The alarm data of specified type. } ALARM_DATA_T; +#pragma pack(pop) + +#pragma pack(push, 2) +/// Payload record structure for an alarm status message. +typedef struct +{ + U32 alarmState; ///< Alarm state: 0 = no alarms, 1 = low priority, 2 = medium priority, 3 = high priority + 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 +} ALARM_COMP_STATUS_PAYLOAD_T; #pragma pack(pop) /// Listing of specific software faults for logging purposes. @@ -152,19 +165,19 @@ 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_BLOOD_FLOW_INVALID_FILTER_STATE, - SW_FAULT_ID_DIAL_IN_FLOW_INVALID_FILTER_STATE, + SW_FAULT_ID____AVAILABLE_1, + SW_FAULT_ID____AVAILABLE_2, 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_PRES_OCCL_INVALID_PRES_SENSOR, - SW_FAULT_ID_PRES_OCCL_INVALID_OCCL_SENSOR, + SW_FAULT_ID____AVAILABLE_3, + SW_FAULT_ID____AVAILABLE_4, 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_DIAL_OUT_INVALID_MEASURED_SIGNAL_STATE, - SW_FAULT_ID_DIAL_OUT_SET_RX_OUT_OF_RANGE, + SW_FAULT_ID____AVAILABLE_5, + SW_FAULT_ID____AVAILABLE_6, SW_FAULT_ID_DIALYSIS_INVALID_STATE, // 55 SW_FAULT_ID_DIALYSIS_INVALID_UF_STATE, SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, @@ -193,6 +206,15 @@ SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_GET_S32_PARAM, // 80 SW_FAULT_ID_MODE_TREATMENT_PARAMS_INVALID_GET_F32_PARAM, SW_FAULT_ID_PERSISTENT_ALARM_INVALID_INDEX, + SW_FAULT_ID_HD_VALVES_INVALID_SELF_TEST_STATE, + SW_FAULT_ID_HD_VALVES_INVALID_EXEC_STATE, + SW_FAULT_ID_HD_VALVES_INVALID_VALVE_SELECTED, // 85 + SW_FAULT_ID_HD_VALVES_INVALID_AIR_TRAP_REQUEST, + SW_FAULT_ID_HD_VALVES_INVALID_CONTROL_MODE_SELECTED, + SW_FAULT_ID_HD_VAVLES_INVALID_POSITION_SELECTED, + SW_FAULT_ID_AIR_TRAP_INVALID_STATE, + SW_FAULT_ID_AIR_TRAP_INVALID_LEVEL_SENSOR, // 90 + SW_FAULT_ID_DIALYSIS_INVALID_SALINE_BOLUS_STATE, NUM_OF_SW_FAULT_IDS } SW_FAULT_ID_T; @@ -205,14 +227,17 @@ 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 ); -BOOL isAlarmActive( ALARM_ID_T alarm ); +BOOL isAlarmActive( ALARM_ID_T alarm ); +ALARM_PRIORITY_T getCurrentAlarmStatePriority( void ); +BOOL isAlarmRecoverable( ALARM_ID_T alarm ); BOOL testSetAlarmStatusPublishIntervalOverride( U32 value ); BOOL testResetAlarmStatusPublishIntervalOverride( void ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); BOOL testSetAlarmStartOverride( U32 alarmID, U32 value ); -BOOL testResetAlarmStartOverride( U32 alarmID ); +BOOL testResetAlarmStartOverride( U32 alarmID ); +BOOL testClearAllAlarms( U32 key ); /**@}*/