/************************************************************************** * * Copyright (c) 2020-2025 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file PersistentAlarm.h * * @author (last) Bill Bracken * @date (last) 13-Jun-2023 * * @author (original) Quang Nguyen * @date (original) 17-Aug-2020 * ***************************************************************************/ #ifndef __PERSISTENTALARM_H__ #define __PERSISTENTALARM_H__ #include "Common.h" /** * @defgroup PersistentAlarm PersistentAlarm * @brief Persistent alarm monitor module. * Check for persistent error and return indication on whether alarm is triggered or alarm condition is cleared. * * @addtogroup PersistentAlarm * @{ */ // ********** public definitions ********** #ifdef _DG_ /// FPGA persistent alarm groups data structure typedef enum { FPGA_PERS_ERROR_TWO_WIRE_ADC_TEMP_SENSORS = 0, ///< Two wire ADC temperature sensors. FPGA_PERS_ERROR_THD_ADC_TEMP_SENSORS, ///< THd ADC temperature sensors. FPGA_PERS_ERROR_TDI_ADC_TEMP_SENSORS, ///< TDi ADC temperature sensors. FPGA_PERS_ERROR_TRO_ADC_TEMP_SENSORS, ///< TRo ADC temperature sensors. FPGA_PERS_ERROR_CPI_CPO_COND_SENSORS, ///< CPi/CPo conductivity sensors. FPGA_PERS_ERROR_CD1_CD2_COND_SENSORS, ///< CD1/CD2 conductivity sensors. FPGA_PERS_ERROR_BARO_SENSOR, ///< Barometric sensor. FPGA_PERS_ERROR_LOAD_CELL_A1_B1_SENSORS, ///< Load cell A1/B1 sensors. FPGA_PERS_ERROR_LOAD_CELL_A2_B2_SENSORS, ///< Load cell A2/B2 sensors. FPGA_PERS_ERROR_MAIN_PRIMARY_HEATER_VOLTAGE_ADC, ///< Main primary heater voltage ADC. NUM_OF_FPGA_SENSOR_GROUPS ///< Number of FPGA sensor groups. } FPGA_PERSISTENT_ALARMS_GROUP_T; #endif #ifdef _HD_ /// FPGA persistent alarm groups data structure typedef enum { FPGA_PERS_ERROR_OCCLUSION_PRESSURE_SENSOR = 0, ///< FPGA persistent error occlusion pressure sensor. FPGA_PERS_ERROR_ARTERIAL_PRESSURE_SENSOR, ///< FPGA persistent error arterial pressure sensor. FPGA_PERS_ERROR_VENOUS_PRESSURE_SESNOR, ///< FPGA persistent error venous pressure sensor. FPGA_PERS_ERROR_SYRINGE_PUMP_ADC, ///< FPGA persistent error syringe pump ADC. NUM_OF_FPGA_SENSOR_GROUPS ///< Number of FPGA sensor groups. } FPGA_PERSISTENT_ALARMS_GROUP_T; #endif // ********** public function prototypes ********** // Persistent period resolution is in ms void initPersistentAlarm( ALARM_ID_T alarmIndex, U32 persistentClearPeriod, U32 persistentTriggerPeriod ); void initFPGAPersistentAlarm( FPGA_PERSISTENT_ALARMS_GROUP_T group, ALARM_ID_T alarmIndex, U32 persistentClearPeriod, U32 persistentTriggerPeriod ); BOOL isPersistentAlarmTriggered( ALARM_ID_T alarmIndex, BOOL const isErrorOccurred ); BOOL isPersistentAlarmConditionCleared( ALARM_ID_T alarmIndex, BOOL const isErrorOccurred ); BOOL checkPersistentAlarm( ALARM_ID_T alarm, BOOL isErrorOccured, F32 data, F32 limit ); void resetPersistentAlarmTimer( ALARM_ID_T alarmId ); void checkFPGAPersistentAlarms( FPGA_PERSISTENT_ALARMS_GROUP_T group, U32 readCount ); void checkFPGAPersistentErrorCountAlarm( FPGA_PERSISTENT_ALARMS_GROUP_T group, U32 errorCount ); /**@}*/ #endif