/************************************************************************** * * Copyright (c) 2019-2021 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 * * @author (last) Sean Nash * @date (last) 13-Aug-2021 * * @author (original) Sean * @date (original) 04-Feb-2020 * ***************************************************************************/ #ifndef __ALARM_MGMT_H__ #define __ALARM_MGMT_H__ #include "DGCommon.h" /** * @defgroup AlarmManagement AlarmManagement * @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 "AlarmMgmtSWFaults.h" #pragma pack(push,4) /// Record structure for unsigned integer alarm data. typedef struct { 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 } ALARM_DATA_S32_T; /// Record structure for floating point alarm data. typedef struct { 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 } 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_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_T; #pragma pack(pop) // ********** public function prototypes ********** void initAlarmMgmt( void ); void execAlarmMgmt( void ); 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 clearAlarmCondition( ALARM_ID_T alarm ); BOOL isAlarmActive( ALARM_ID_T alarm ); void checkPersistentAlarm( ALARM_ID_T alarm, BOOL const isErrorOccured, F32 const data, F32 const limit ); BOOL testSetAlarmStateOverride( U32 alarmID, BOOL value ); BOOL testResetAlarmStateOverride( U32 alarmID ); BOOL testClearAllAlarms( U32 key ); BOOL testSetAlarmInfoPublishIntervalOverride( U32 ms ); BOOL testResetAlarmInfoPublishIntervalOverride( void ); /**@}*/ #endif