Index: firmware/App/Services/AlarmMgmt.h =================================================================== diff -u -r0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f -r0f6b35ef8da4d30793a181750d0a6d5898118120 --- firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 0dec8744af40d0c87a6d7cd1923920c1c2bd1d2f) +++ firmware/App/Services/AlarmMgmt.h (.../AlarmMgmt.h) (revision 0f6b35ef8da4d30793a181750d0a6d5898118120) @@ -1,17 +1,17 @@ /************************************************************************** * -* Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. +* Copyright (c) 2020-2022 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 AlarmMgmt.h +* @file AlarmMgmt.h * -* @author (last) Quang Nguyen -* @date (last) 24-Jul-2020 +* @author (last) Dara Navaei +* @date (last) 26-Mar-2022 * -* @author (original) Sean -* @date (original) 04-Feb-2020 +* @author (original) Sean +* @date (original) 04-Feb-2020 * ***************************************************************************/ @@ -22,120 +22,72 @@ /** * @defgroup AlarmManagement AlarmManagement - * @brief Alarm Management service module. Provides general alarm management \n - * functionality including support functions for triggering and clearing \n - * specific alarms. + * @brief Alarm management service module. Provides general alarm management functionality + * including support functions for triggering and clearing specific alarms. * * @addtogroup AlarmManagement * @{ */ // ********** public definitions ********** -#include "AlarmDefs.h" +#include "AlarmDefs.h" +#include "AlarmMgmtSWFaults.h" -/// Alarm data types list. -typedef enum Alarm_Data_Types -{ - ALARM_DATA_TYPE_NONE = 0, ///< No data given. - ALARM_DATA_TYPE_U32 = 1, ///< Alarm data is unsigned 32-bit integer type. - ALARM_DATA_TYPE_S32 = 2, ///< Alarm data is signed 32-bit integer type. - ALARM_DATA_TYPE_F32 = 3, ///< Alarm data is 32-bit floating point type. - ALARM_DATA_TYPE_BOOL = 4, ///< Alarm data is 32-bit boolean type. - NUM_OF_ALARM_DATA_TYPES ///< Total number of alarm data types. -} ALARM_DATA_TYPES_T; - #pragma pack(push,4) /// Record structure for unsigned integer alarm data. typedef struct { - U32 data; ///< Alarm data of unsigned integer type. + U32 data; ///< Alarm data of unsigned integer type } ALARM_DATA_U32_T; /// Record structure for signed integer alarm data. typedef struct { - S32 data; ///< Alarm data of signed integer type. + S32 data; ///< Alarm data of signed integer type } ALARM_DATA_S32_T; /// Record structure for floating point alarm data. typedef struct { - F32 data; ///< Alarm data of floating point type. + F32 data; ///< Alarm data of floating point type } ALARM_DATA_F32_T; /// Record structure for boolean alarm data. typedef struct { - BOOL data; ///< Alarm data of boolean type. + BOOL data; ///< Alarm data of boolean type } ALARM_DATA_BOOL_T; /// Record structure for alarm data of any supported type. typedef union { - ALARM_DATA_U32_T uInt; ///< Alarm data of unsigned integer type. - ALARM_DATA_S32_T sInt; ///< Alarm data of signed integer type. - ALARM_DATA_F32_T flt; ///< Alarm data of floating point type. - ALARM_DATA_BOOL_T bln; ///< Alarm data of boolean type. + ALARM_DATA_U32_T uInt; ///< Alarm data of unsigned integer type + ALARM_DATA_S32_T sInt; ///< Alarm data of signed integer type + ALARM_DATA_F32_T flt; ///< Alarm data of floating point type + ALARM_DATA_BOOL_T bln; ///< Alarm data of boolean type } ALARM_DATAS_T; /// Record structure for alarm data including the data type to aid in interpretation. typedef struct { - ALARM_DATA_TYPES_T dataType; ///< The type of alarm data provided. - ALARM_DATAS_T data; ///< The alarm data of specified type. + 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(pop) + +/// Safety shutdown activation status +typedef struct +{ + U32 safetyShutdownStatus; ///< Safety shutdown activation status +} SAFETY_SHUTDOWN_ACTIVATION_DATA_T; + +/// Alarm name data publish +typedef struct +{ + U32 alarmName; ///< Alarm name. +} ALARM_NAME_DATA_T; -// Listing of specific software faults for logging purposes. -typedef enum -{ - SW_FAULT_ID_NONE = 0, - SW_FAULT_ID_INT_ADC_DATA_OVERRUN, - SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED, - SW_FAULT_ID_MODE_INIT_POST_INVALID_POST_STATE, - SW_FAULT_ID_OP_MODES_ILLEGAL_MODE_TRANSITION_REQUESTED, - SW_FAULT_ID_OP_MODES_INVALID_MODE_STATE, - SW_FAULT_ID_OP_MODES_INVALID_MODE_REQUESTED, - SW_FAULT_ID_OP_MODES_INVALID_MODE_TO_TRANSITION_TO, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_ACTIVATE, - SW_FAULT_ID_ALARM_MGMT_INVALID_ALARM_TO_CLEAR, - SW_FAULT_ID_COMM_BUFFERS_ADD_TOO_MUCH_DATA, - SW_FAULT_ID_COMM_BUFFERS_ADD_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_GET_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_PEEK_INVALID_BUFFER, - SW_FAULT_ID_COMM_BUFFERS_COUNT_INVALID_BUFFER, - SW_FAULT_ID_FPGA_INVALID_IN_STATE, - SW_FAULT_ID_FPGA_INVALID_OUT_STATE, - SW_FAULT_ID_FPGA_WRITE_CMD_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_WRITE_RSP_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_READ_CMD_TOO_MUCH_DATA, - SW_FAULT_ID_FPGA_READ_RSP_TOO_MUCH_DATA, - SW_FAULT_ID_MSG_QUEUES_ADD_QUEUE_FULL, - SW_FAULT_ID_MSG_QUEUES_ADD_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_GET_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_IS_EMPTY_INVALID_QUEUE, - SW_FAULT_ID_MSG_QUEUES_IS_FULL_INVALID_QUEUE, - SW_FAULT_ID_WATCHDOG_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_RTC_EXEC_INVALID_STATE, - SW_FAULT_ID_RTC_SELF_TEST_INVALID_STATE, - SW_FAULT_ID_RTC_TRANSACTION_SERVICE_INVALID_STATE, - SW_FAULT_ID_MSG_PENDING_ACK_LIST_FULL, - SW_FAULT_ID_PI_CTRL_INVALID_CONTROLLER, - SW_FAULT_ID_PI_CTRL_INVALID_SIGNAL, - SW_FAULT_ID_NVDATAMGMT_EXEC_INVALID_STATE, - SW_FAULT_ID_NVDATAMGMT_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_TEMPERATURE_SENSORS_INVALID_SELF_TEST_STATE, - SW_FAULT_ID_TEMPERATURE_SENSORS_EXEC_INVALID_STATE, - SW_FAULT_ID_HEATERS_SELF_TEST_INVALID_STATE, - SW_FAULT_ID_HEATERS_PRIMARY_HEATER_EXEC_INVALID_STATE, - SW_FAULT_ID_HEATERS_TRIMMER_HEATER_EXEC_INVALID_STATE, - SW_FAULT_ID_VALVES_INVALID_VALVE_STATE_NAME, - SW_FAULT_ID_VALVES_INVALID_VALVE_ID, - SW_FAULT_ID_UTIL_TIME_WINDOWED_COUNT_ERROR, - NUM_OF_SW_FAULT_IDS -} SW_FAULT_ID_T; - // ********** public function prototypes ********** void initAlarmMgmt( void ); @@ -144,12 +96,19 @@ 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 ); -BOOL isAlarmActive( ALARM_ID_T alarm ); +void clearAlarm( ALARM_ID_T alarm ); +void clearAlarmCondition( ALARM_ID_T alarm ); +BOOL isAlarmActive( ALARM_ID_T alarm ); + +BOOL checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ); +void handleResendActiveAlarmsRequest( void ); -/**@}*/ - BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); - +BOOL testClearAllAlarms( U32 key ); +BOOL testSetAlarmInfoPublishIntervalOverride( U32 ms ); +BOOL testResetAlarmInfoPublishIntervalOverride( void ); + +/**@}*/ + #endif