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