1 /******************************************************************************
3 * Copyright (c) 2020 ICT/CAS.
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
9 * https://www.o-ran.org/software
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.
17 *******************************************************************************/
21 #ifndef __PLAT_ALARM_H__
22 #define __PLAT_ALARM_H__
23 #include "vos_types.h"
28 #endif /* __cplusplus */
30 #include "vos_common.h"
35 #define TRAP_OID_LEN (32)
37 /** 告警源信息中index最大个数 */
38 #define ALARM_INDEX_MAX_LEN 5
40 /** 告警源信息中所携带数据大小 *sizeof(ULONG) */
41 #define MAXLEN_EVENT_DATA 16
44 typedef union alarmSrc_s{
45 ULONG alarmSrcData[MAXLEN_EVENT_DATA]; ///< 告警数据
46 }__attribute__((packed)) alarmSrc_t;
52 typedef struct alarmMsg_s
54 UCHAR alarmType; ///< 告警类型
55 UCHAR alarmId; ///< 告警标识:用于映射告警描述
56 alarmSrc_t alarmSrc; ///< 告警源信息
57 }__attribute__((packed))alarmMsg_t;
67 }__attribute__((packed)) logDateAndTime_t;
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;
85 * 通用告警上报API,使用变长参数,变长参数只支持ULONG 和char * 字符串。
87 * @param[in] alarmType 告警类型
88 * @param[in] alarmId 告警ID
89 * @return VOS_OK - 成功,VOS_ERROR- 失败
91 LONG alarm_commonReport( LONG alarmType, LONG alarmId, ... );
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 ,失败返回 其他
102 LONG alarm_TrapOid_get( ULONG alarmType, ULONG alarmId, ULONG pTrapOid[TRAP_OID_LEN], LONG *pOidLen );
106 * 根据 alarmType 和 alarmId 获取告警 level。
107 * @param[in] alarmType 告警类型
108 * @param[in] alarmId 告警ID
109 * @return 成功返回告警 level,失败返回 0
111 ULONG alarm_Level_get( ULONG alarmType, ULONG alarmId );
115 * 根据 alarmType 和 alarmId 获取告警 trap使能。
116 * @param[in] alarmType 告警类型
117 * @param[in] alarmId 告警ID
118 * @return 返回告警 trap是否使能
120 ULONG alarm_TrapEnable_get( ULONG alarmType, ULONG alarmId );
124 * 根据 alarmType 和 alarmId 获取告警 index个数。
125 * @param[in] alarmType 告警类型
126 * @param[in] alarmId 告警ID
127 * @return 返回告警 index个数
129 ULONG alarm_IndexNum_get( ULONG alarmType, ULONG alarmId );
133 * 根据 alarmType 和 alarmId 获取告警 参数个数。
134 * @param[in] alarmType 告警类型
135 * @param[in] alarmId 告警ID
138 ULONG alarm_ParaNum_get( ULONG alarmType, ULONG alarmId );
142 * 根据 alarmType 和 alarmId 获取告警 index打印格式。
143 * @param[in ] alarmType 告警类型
144 * @param[in ] alarmId 告警ID
145 * @param[out] fmt index打印格式
146 * @return 成功返回 VOS_OK ,失败返回 其他
148 LONG alarm_IndexFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
152 * 根据 alarmType 和 alarmId 获取告警 参数打印格式。
153 * @param[in ] alarmType 告警类型
154 * @param[in ] alarmId 告警ID
155 * @param[out] fmt 参数打印格式
156 * @return 成功返回 VOS_OK ,失败返回 其他
158 LONG alarm_ParaFormat_get( ULONG alarmType, ULONG alarmId ,CHAR *fmt);
163 * 根据 alarmType 和 alarmId 获取告警 priority
164 * @param[in] alarmType 告警类型
165 * @param[in] alarmId 告警ID
166 * @return 成功返回告警 priority,失败返回 0
168 ULONG alarm_Priority_get( ULONG alarmType, ULONG alarmId );
171 * 根据 alarmType 和 alarmId 获取告警 PartnerId
172 * @param[in] alarmType 告警类型
173 * @param[in] alarmId 告警ID
174 * @return 成功返回告警 PartnerId,失败返回 0
176 ULONG alarm_PartnerId_get( ULONG alarmType, ULONG alarmId );
180 * @param[in] alarmType 告警类型
181 * @param[in] alarmId 告警ID
182 * @return 为事件返回真,为告警返回false
184 BOOL alarm_is_event( ULONG alarmType, ULONG alarmId );
188 * @param[in] pAlmMsg 告警数据
189 * @param[in] logDesc 存放转换后的结果
190 * @param[in] size logDesc 的大小,建议大小512字节
191 * @return 返回指向转换结果的指针(同logDesc)
193 CHAR *alarmDataToStrings( alarmMsg_t *pAlmMsg, CHAR *logDesc,LONG size );
197 * @param[out] pItem 告警条目
198 * @return 成功返回 VOS_OK ,失败返回 其他
200 LONG alarm_alm_cur_list_get_first(alm_status_t *pItem);
205 * @param[in ] pItem 当前条目
206 * @param[out] pItem 下一条目
207 * @return 成功返回 VOS_OK ,失败返回 其他
209 LONG alarm_alm_cur_list_get_next(alm_status_t *pItem);
214 * @param[out] pItem 告警条目
215 * @return 成功返回 VOS_OK ,失败返回 其他
217 LONG alarm_alm_hist_list_get_first(alm_status_t *pItem);
222 * @param[in ] pItem 当前条目
223 * @param[out] pItem 下一条目
224 * @return 成功返回 VOS_OK ,失败返回 其他
226 LONG alarm_alm_hist_list_get_next(alm_status_t *pItem);
230 * @param[in ] pItem 当前条目
231 * @return 成功返回 VOS_OK ,失败返回 其他
233 LONG alarm_alm_event_list_get_first(alm_status_t *pItem);
238 * @param[in ] pItem 当前条目
239 * @param[out] pItem 下一条目
240 * @return 成功返回 VOS_OK ,失败返回 其他
242 LONG alarm_alm_event_list_get_next(alm_status_t *pItem);
247 #endif /* __cplusplus */
248 #endif /* __PLAT_ALARM_H__ */