01ad245de674d4bfe1f5607440eb3a99fbdb9e24
[scp/ocu/5gnr.git] / Include / plat_alarm.h
1 /******************************************************************************
2 ###############################################################################
3 #   Copyright (c) [2017-2020] [ICT/CAS]                                        #
4 #   Licensed under the ORAN Software License v1.0 (License)             #
5 ###############################################################################
6 ******************************************************************************/
7
8
9 #ifndef __PLAT_ALARM_H__
10 #define __PLAT_ALARM_H__
11 #include "vos_types.h"
12
13 #ifdef    __cplusplus
14 extern "C"
15 {
16 #endif /* __cplusplus */
17
18 #include "vos_common.h"
19
20
21
22 /** trap OID 长度 */
23 #define TRAP_OID_LEN   (32)
24
25 /** 告警源信息中index最大个数 */
26 #define ALARM_INDEX_MAX_LEN     5
27
28 /** 告警源信息中所携带数据大小 *sizeof(ULONG) */
29 #define MAXLEN_EVENT_DATA       16
30
31 /** 记录告警源信息 */
32 typedef  union alarmSrc_s{
33         ULONG  alarmSrcData[MAXLEN_EVENT_DATA];  ///< 告警数据
34 }__attribute__((packed)) alarmSrc_t;
35
36
37 /**
38 * 告警消息
39 */
40 typedef struct alarmMsg_s
41 {
42         UCHAR   alarmType;    ///< 告警类型
43         UCHAR   alarmId;      ///< 告警标识:用于映射告警描述
44         alarmSrc_t alarmSrc;  ///< 告警源信息
45 }__attribute__((packed))alarmMsg_t;
46
47
48 typedef struct {
49         ULONG  year             :6;
50         ULONG  month    :4;
51         ULONG  day              :5;
52         ULONG  hour             :5;
53         ULONG  minute   :6;
54         ULONG  second   :6;
55 }__attribute__((packed)) logDateAndTime_t;
56
57 /**
58 * 用于当前告警和历史告警存储
59 */
60 typedef struct {
61     ULONG  sequenceID;              ///< 告警序号
62         UCHAR  alarmType;               ///< 告警类型
63         UCHAR  alarmId;                 ///< 告警标识:用于映射告警描述
64         alarmSrc_t alarmSrc;            ///< 告警源
65         logDateAndTime_t  alarmTime;    ///< 告警发生时间
66         logDateAndTime_t  clearTime;    ///< 告警清除时间
67         UCHAR   alarmMskFlg;            ///< 告警屏蔽标记
68         UCHAR   alarmInvFlg;            ///< 告警翻转标记
69         UCHAR   reserved[2];            ///< 保留字段
70 } __attribute__((packed)) alm_status_t;
71
72 /** 
73  * 通用告警上报API,使用变长参数,变长参数只支持ULONG  和char * 字符串。
74  * 设备索引和上报参数依次排列,不能乱序。
75  * @param[in]   alarmType    告警类型
76  * @param[in]   alarmId      告警ID
77  * @return        VOS_OK - 成功,VOS_ERROR- 失败
78  */
79 LONG alarm_commonReport( LONG alarmType, LONG alarmId, ... );
80
81
82 /** 
83  * 根据 alarmType 和 alarmId 获取告警 TrapOid。
84  * @param[in ]   alarmType    告警类型
85  * @param[in ]   alarmId      告警ID
86  * @param[out]   pTrapOid     存放oid 的数组
87  * @param[out]   pOidLen      oid长度
88  * @return      成功返回 VOS_OK ,失败返回 其他 
89  */
90 LONG alarm_TrapOid_get( ULONG alarmType, ULONG alarmId, ULONG pTrapOid[TRAP_OID_LEN], LONG *pOidLen );
91
92
93 /** 
94  * 根据 alarmType 和 alarmId 获取告警 level。
95  * @param[in]   alarmType    告警类型
96  * @param[in]   alarmId      告警ID
97  * @return      成功返回告警 level,失败返回 0 
98  */
99 ULONG alarm_Level_get( ULONG alarmType, ULONG alarmId );
100
101
102 /** 
103  * 根据 alarmType 和 alarmId 获取告警 trap使能。
104  * @param[in]   alarmType    告警类型
105  * @param[in]   alarmId      告警ID
106  * @return      返回告警 trap是否使能
107  */
108 ULONG alarm_TrapEnable_get( ULONG alarmType, ULONG alarmId );
109
110
111 /** 
112  * 根据 alarmType 和 alarmId 获取告警 index个数。
113  * @param[in]   alarmType    告警类型
114  * @param[in]   alarmId      告警ID
115  * @return      返回告警 index个数
116  */
117 ULONG alarm_IndexNum_get( ULONG alarmType, ULONG alarmId );
118
119
120 /** 
121  * 根据 alarmType 和 alarmId 获取告警 参数个数。
122  * @param[in]   alarmType    告警类型
123  * @param[in]   alarmId      告警ID
124  * @return      返回告警 参数个数
125  */
126 ULONG alarm_ParaNum_get( ULONG alarmType, ULONG alarmId );
127
128
129 /** 
130  * 根据 alarmType 和 alarmId 获取告警 index打印格式。
131  * @param[in ]   alarmType    告警类型
132  * @param[in ]   alarmId      告警ID
133  * @param[out]   fmt          index打印格式
134  * @return      成功返回 VOS_OK ,失败返回 其他 
135  */
136 LONG alarm_IndexFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
137
138
139 /** 
140  * 根据 alarmType 和 alarmId 获取告警 参数打印格式。
141  * @param[in ]   alarmType    告警类型
142  * @param[in ]   alarmId      告警ID
143  * @param[out]   fmt          参数打印格式
144  * @return      成功返回 VOS_OK ,失败返回 其他 
145  */
146 LONG alarm_ParaFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
147
148
149
150 /** 
151  * 根据 alarmType 和 alarmId 获取告警 priority
152  * @param[in]   alarmType    告警类型
153  * @param[in]   alarmId      告警ID
154  * @return      成功返回告警 priority,失败返回 0 
155  */
156 ULONG alarm_Priority_get( ULONG alarmType, ULONG alarmId );
157
158 /** 
159  * 根据 alarmType 和 alarmId 获取告警 PartnerId
160  * @param[in]   alarmType    告警类型
161  * @param[in]   alarmId      告警ID
162  * @return      成功返回告警 PartnerId,失败返回 0 
163  */
164 ULONG alarm_PartnerId_get( ULONG alarmType, ULONG alarmId );
165
166 /** 
167  * 判断该告警是否为事件
168  * @param[in]   alarmType    告警类型
169  * @param[in]   alarmId      告警ID
170  * @return      为事件返回真,为告警返回false 
171  */
172 BOOL alarm_is_event( ULONG alarmType, ULONG alarmId );
173
174 /** 
175  * 将告警数据转换成字符串
176  * @param[in]   pAlmMsg    告警数据
177  * @param[in]   logDesc    存放转换后的结果
178  * @param[in]   size       logDesc 的大小,建议大小512字节
179  * @return      返回指向转换结果的指针(同logDesc) 
180  */
181 CHAR *alarmDataToStrings( alarmMsg_t *pAlmMsg, CHAR *logDesc,LONG size );
182
183 /** 
184  * 获取当前告警的第一条。
185  * @param[out]   pItem    告警条目
186  * @return      成功返回 VOS_OK ,失败返回 其他 
187  */
188 LONG alarm_alm_cur_list_get_first(alm_status_t *pItem);
189
190
191 /** 
192  * 获取当前告警的下一条。
193  * @param[in ]   pItem    当前条目
194  * @param[out]   pItem    下一条目
195  * @return      成功返回 VOS_OK ,失败返回 其他 
196  */
197 LONG alarm_alm_cur_list_get_next(alm_status_t *pItem);
198
199
200 /** 
201  * 获取历史告警的第一条。
202  * @param[out]   pItem    告警条目
203  * @return      成功返回 VOS_OK ,失败返回 其他 
204  */
205 LONG alarm_alm_hist_list_get_first(alm_status_t *pItem);
206
207
208 /** 
209  * 获取历史告警的下一条。
210  * @param[in ]   pItem    当前条目
211  * @param[out]   pItem    下一条目
212  * @return      成功返回 VOS_OK ,失败返回 其他 
213  */
214 LONG alarm_alm_hist_list_get_next(alm_status_t *pItem);
215
216 /** 
217  * 获取事件的第一条。
218  * @param[in ]   pItem    当前条目
219  * @return      成功返回 VOS_OK ,失败返回 其他 
220  */
221 LONG alarm_alm_event_list_get_first(alm_status_t *pItem);
222
223
224 /** 
225  * 获取事件的下一条。
226  * @param[in ]   pItem    当前条目
227  * @param[out]   pItem    下一条目
228  * @return      成功返回 VOS_OK ,失败返回 其他 
229  */
230 LONG alarm_alm_event_list_get_next(alm_status_t *pItem);
231
232
233 #ifdef __cplusplus
234 }
235 #endif /* __cplusplus */
236 #endif /* __PLAT_ALARM_H__ */