O-CU-UP
[scp/ocu/5gnr.git] / Include / plat_alarm.h
diff --git a/Include/plat_alarm.h b/Include/plat_alarm.h
new file mode 100644 (file)
index 0000000..01ad245
--- /dev/null
@@ -0,0 +1,236 @@
+/******************************************************************************
+###############################################################################
+#   Copyright (c) [2017-2020] [ICT/CAS]                                        #
+#   Licensed under the ORAN Software License v1.0 (License)             #
+###############################################################################
+******************************************************************************/
+
+
+#ifndef __PLAT_ALARM_H__
+#define __PLAT_ALARM_H__
+#include "vos_types.h"
+
+#ifdef    __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+#include "vos_common.h"
+
+
+
+/** trap OID 长度 */
+#define TRAP_OID_LEN   (32)
+
+/** 告警源信息中index最大个数 */
+#define ALARM_INDEX_MAX_LEN    5
+
+/** 告警源信息中所携带数据大小 *sizeof(ULONG) */
+#define MAXLEN_EVENT_DATA      16
+
+/** 记录告警源信息 */
+typedef  union alarmSrc_s{
+       ULONG  alarmSrcData[MAXLEN_EVENT_DATA];  ///< 告警数据
+}__attribute__((packed)) alarmSrc_t;
+
+
+/**
+* 告警消息
+*/
+typedef struct alarmMsg_s
+{
+       UCHAR   alarmType;    ///< 告警类型
+       UCHAR   alarmId;      ///< 告警标识:用于映射告警描述
+       alarmSrc_t alarmSrc;  ///< 告警源信息
+}__attribute__((packed))alarmMsg_t;
+
+
+typedef struct {
+       ULONG  year             :6;
+       ULONG  month    :4;
+       ULONG  day              :5;
+       ULONG  hour             :5;
+       ULONG  minute   :6;
+       ULONG  second   :6;
+}__attribute__((packed)) logDateAndTime_t;
+
+/**
+* 用于当前告警和历史告警存储
+*/
+typedef struct {
+    ULONG  sequenceID;              ///< 告警序号
+       UCHAR  alarmType;               ///< 告警类型
+       UCHAR  alarmId;                 ///< 告警标识:用于映射告警描述
+       alarmSrc_t alarmSrc;            ///< 告警源
+       logDateAndTime_t  alarmTime;    ///< 告警发生时间
+       logDateAndTime_t  clearTime;    ///< 告警清除时间
+       UCHAR   alarmMskFlg;            ///< 告警屏蔽标记
+       UCHAR   alarmInvFlg;            ///< 告警翻转标记
+       UCHAR   reserved[2];            ///< 保留字段
+} __attribute__((packed)) alm_status_t;
+
+/** 
+ * 通用告警上报API,使用变长参数,变长参数只支持ULONG  和char * 字符串。
+ * 设备索引和上报参数依次排列,不能乱序。
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return        VOS_OK - 成功,VOS_ERROR- 失败
+ */
+LONG alarm_commonReport( LONG alarmType, LONG alarmId, ... );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 TrapOid。
+ * @param[in ]   alarmType    告警类型
+ * @param[in ]   alarmId      告警ID
+ * @param[out]   pTrapOid     存放oid 的数组
+ * @param[out]   pOidLen      oid长度
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_TrapOid_get( ULONG alarmType, ULONG alarmId, ULONG pTrapOid[TRAP_OID_LEN], LONG *pOidLen );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 level。
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      成功返回告警 level,失败返回 0 
+ */
+ULONG alarm_Level_get( ULONG alarmType, ULONG alarmId );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 trap使能。
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      返回告警 trap是否使能
+ */
+ULONG alarm_TrapEnable_get( ULONG alarmType, ULONG alarmId );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 index个数。
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      返回告警 index个数
+ */
+ULONG alarm_IndexNum_get( ULONG alarmType, ULONG alarmId );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 参数个数。
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      返回告警 参数个数
+ */
+ULONG alarm_ParaNum_get( ULONG alarmType, ULONG alarmId );
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 index打印格式。
+ * @param[in ]   alarmType    告警类型
+ * @param[in ]   alarmId      告警ID
+ * @param[out]   fmt          index打印格式
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_IndexFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 参数打印格式。
+ * @param[in ]   alarmType    告警类型
+ * @param[in ]   alarmId      告警ID
+ * @param[out]   fmt          参数打印格式
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_ParaFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
+
+
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 priority
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      成功返回告警 priority,失败返回 0 
+ */
+ULONG alarm_Priority_get( ULONG alarmType, ULONG alarmId );
+
+/** 
+ * 根据 alarmType 和 alarmId 获取告警 PartnerId
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      成功返回告警 PartnerId,失败返回 0 
+ */
+ULONG alarm_PartnerId_get( ULONG alarmType, ULONG alarmId );
+
+/** 
+ * 判断该告警是否为事件
+ * @param[in]   alarmType    告警类型
+ * @param[in]   alarmId      告警ID
+ * @return      为事件返回真,为告警返回false 
+ */
+BOOL alarm_is_event( ULONG alarmType, ULONG alarmId );
+
+/** 
+ * 将告警数据转换成字符串
+ * @param[in]   pAlmMsg    告警数据
+ * @param[in]   logDesc    存放转换后的结果
+ * @param[in]   size       logDesc 的大小,建议大小512字节
+ * @return      返回指向转换结果的指针(同logDesc) 
+ */
+CHAR *alarmDataToStrings( alarmMsg_t *pAlmMsg, CHAR *logDesc,LONG size );
+
+/** 
+ * 获取当前告警的第一条。
+ * @param[out]   pItem    告警条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_cur_list_get_first(alm_status_t *pItem);
+
+
+/** 
+ * 获取当前告警的下一条。
+ * @param[in ]   pItem    当前条目
+ * @param[out]   pItem    下一条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_cur_list_get_next(alm_status_t *pItem);
+
+
+/** 
+ * 获取历史告警的第一条。
+ * @param[out]   pItem    告警条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_hist_list_get_first(alm_status_t *pItem);
+
+
+/** 
+ * 获取历史告警的下一条。
+ * @param[in ]   pItem    当前条目
+ * @param[out]   pItem    下一条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_hist_list_get_next(alm_status_t *pItem);
+
+/** 
+ * 获取事件的第一条。
+ * @param[in ]   pItem    当前条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_event_list_get_first(alm_status_t *pItem);
+
+
+/** 
+ * 获取事件的下一条。
+ * @param[in ]   pItem    当前条目
+ * @param[out]   pItem    下一条目
+ * @return      成功返回 VOS_OK ,失败返回 其他 
+ */
+LONG alarm_alm_event_list_get_next(alm_status_t *pItem);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __PLAT_ALARM_H__ */