1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef DISC_EVENT_CONVERTER_H
17 #define DISC_EVENT_CONVERTER_H
18
19 #include "comm_log.h"
20 #include "softbus_event_converter.h"
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 #define DISC_ASSIGNER(type, fieldName, field) \
27 static inline bool DiscAssigner##fieldName( \
28 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
29 { \
30 if (Assigner##type(form->discExtra->field, ¶m) && \
31 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
32 param->t = paramType; \
33 return true; \
34 } \
35 return false; \
36 }
37
38 DISC_ASSIGNER(Errcode, Result, result)
39 DISC_ASSIGNER(Errcode, Errcode, errcode)
40 DISC_ASSIGNER(Int32, InitType, initType)
41 DISC_ASSIGNER(String, ServerType, serverType)
42 DISC_ASSIGNER(Int32, AdvHandle, advHandle)
43 DISC_ASSIGNER(Int32, BcOverMaxCnt, bcOverMaxCnt)
44 DISC_ASSIGNER(Int32, InterFuncType, interFuncType)
45 DISC_ASSIGNER(Int32, CapabilityBit, capabilityBit)
46 DISC_ASSIGNER(LongString, CapabilityData, capabilityData)
47 DISC_ASSIGNER(Int32, BleTurnState, bleTurnState)
48 DISC_ASSIGNER(Int32, IpLinkStatus, ipLinkStatus)
49 DISC_ASSIGNER(Int32, CoapChangeType, coapChangeType)
50 DISC_ASSIGNER(Int32, BroadcastType, broadcastType)
51 DISC_ASSIGNER(Int32, BroadcastFreq, broadcastFreq)
52 DISC_ASSIGNER(Int32, MinInterval, minInterval)
53 DISC_ASSIGNER(Int32, MaxInterval, maxInterval)
54 DISC_ASSIGNER(Int32, CurrentNum, currentNum)
55 DISC_ASSIGNER(Int32, ScanType, scanType)
56 DISC_ASSIGNER(Int32, ScanCount, scanCount)
57 DISC_ASSIGNER(String, ScanCycle, scanCycle)
58 DISC_ASSIGNER(Int32, DiscType, discType)
59 DISC_ASSIGNER(Int32, DiscMode, discMode)
60 DISC_ASSIGNER(Int32, SuccessCnt, successCnt)
61 DISC_ASSIGNER(Int32, FailCnt, failCnt)
62 DISC_ASSIGNER(Int64, StartTime, startTime)
63 DISC_ASSIGNER(Int64, CostTime, costTime)
64 DISC_ASSIGNER(AnonymizeString, LocalNetworkId, localNetworkId)
65 DISC_ASSIGNER(AnonymizeString, PeerIp, peerIp)
66 DISC_ASSIGNER(AnonymizeString, PeerBrMac, peerBrMac)
67 DISC_ASSIGNER(AnonymizeString, PeerBleMac, peerBleMac)
68 DISC_ASSIGNER(AnonymizeString, PeerWifiMac, peerWifiMac)
69 DISC_ASSIGNER(String, PeerPort, peerPort)
70 DISC_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
71 DISC_ASSIGNER(String, PeerDeviceType, peerDeviceType)
72 DISC_ASSIGNER(String, CallerPkg, callerPkg)
73
74 #define DISC_ASSIGNER_SIZE 35 // Size of g_discAssigners
75 static HiSysEventParamAssigner g_discAssigners[] = {
76 { "STAGE_RES", HISYSEVENT_INT32, DiscAssignerResult },
77 { "ERROR_CODE", HISYSEVENT_INT32, DiscAssignerErrcode },
78 { "INIT_TYPE", HISYSEVENT_INT32, DiscAssignerInitType },
79 { "SERVER_TYPE", HISYSEVENT_STRING, DiscAssignerServerType },
80 { "ADV_HANDLE", HISYSEVENT_INT32, DiscAssignerAdvHandle },
81 { "BC_OVERMAX_CNT", HISYSEVENT_INT32, DiscAssignerBcOverMaxCnt },
82 { "INTERFACE_FUNC_TYPE", HISYSEVENT_INT32, DiscAssignerInterFuncType },
83 { "CAPABILITY_BIT", HISYSEVENT_INT32, DiscAssignerCapabilityBit },
84 { "CAPABILITY_DATA", HISYSEVENT_STRING, DiscAssignerCapabilityData },
85 { "BLE_TURN_STATE", HISYSEVENT_INT32, DiscAssignerBleTurnState },
86 { "IP_LINK_STATUS", HISYSEVENT_INT32, DiscAssignerIpLinkStatus },
87 { "COAP_CHANGE_TYPE", HISYSEVENT_INT32, DiscAssignerCoapChangeType },
88 { "BROADCAST_TYPE", HISYSEVENT_INT32, DiscAssignerBroadcastType },
89 { "BROADCAST_FREQ", HISYSEVENT_INT32, DiscAssignerBroadcastFreq },
90 { "MIN_INTERVAL", HISYSEVENT_INT32, DiscAssignerMinInterval },
91 { "MAX_INTERVAL", HISYSEVENT_INT32, DiscAssignerMaxInterval },
92 { "CURRENT_NUM", HISYSEVENT_INT32, DiscAssignerCurrentNum },
93 { "SCAN_TYPE", HISYSEVENT_INT32, DiscAssignerScanType },
94 { "SCAN_COUNT", HISYSEVENT_INT32, DiscAssignerScanCount },
95 { "SCAN_CYCLE", HISYSEVENT_STRING, DiscAssignerScanCycle },
96 { "DISC_TYPE", HISYSEVENT_INT32, DiscAssignerDiscType },
97 { "DISC_MODE", HISYSEVENT_INT32, DiscAssignerDiscMode },
98 { "SUCCESS_CNT", HISYSEVENT_INT32, DiscAssignerSuccessCnt },
99 { "FAIL_CNT", HISYSEVENT_INT32, DiscAssignerFailCnt },
100 { "START_TIME", HISYSEVENT_INT64, DiscAssignerStartTime },
101 { "COST_TIME", HISYSEVENT_INT64, DiscAssignerCostTime },
102 { "LOCAL_NET_ID", HISYSEVENT_STRING, DiscAssignerLocalNetworkId },
103 { "PEER_IP", HISYSEVENT_STRING, DiscAssignerPeerIp },
104 { "PEER_BR_MAC", HISYSEVENT_STRING, DiscAssignerPeerBrMac },
105 { "PEER_BLE_MAC", HISYSEVENT_STRING, DiscAssignerPeerBleMac },
106 { "PEER_WIFI_MAC", HISYSEVENT_STRING, DiscAssignerPeerWifiMac },
107 { "PEER_PORT", HISYSEVENT_INT32, DiscAssignerPeerPort },
108 { "PEER_NET_ID", HISYSEVENT_STRING, DiscAssignerPeerNetworkId },
109 { "PEER_DEV_TYPE", HISYSEVENT_STRING, DiscAssignerPeerDeviceType },
110 { "HOST_PKG", HISYSEVENT_STRING, DiscAssignerCallerPkg },
111 // Modification Note: remember updating DISC_ASSIGNER_SIZE
112 };
113
114 #define DISC_ALARM_ASSIGNER(type, fieldName, field) \
115 static inline bool DiscAssigner##fieldName( \
116 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
117 { \
118 if (Assigner##type(form->discAlarmExtra->field, ¶m) && \
119 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
120 param->t = paramType; \
121 return true; \
122 } \
123 return false; \
124 }
125
126 DISC_ALARM_ASSIGNER(Errcode, AlarmResult, result)
127 DISC_ALARM_ASSIGNER(Errcode, AlarmErrcode, errcode)
128 DISC_ALARM_ASSIGNER(Int32, OriginalFreq, originalFreq)
129 DISC_ALARM_ASSIGNER(Int32, AbnormalFreq, abnormalFreq)
130 DISC_ALARM_ASSIGNER(Int32, Duration, duration)
131
132 #define DISC_ALARM_ASSIGNER_SIZE 5 // Size of g_discAlarmAssigners
133 static const HiSysEventParamAssigner g_discAlarmAssigners[] = {
134 { "STAGE_RES", HISYSEVENT_INT32, DiscAssignerAlarmResult },
135 { "ERROR_CODE", HISYSEVENT_INT32, DiscAssignerAlarmErrcode },
136 { "ORIGINAL_FREQ", HISYSEVENT_INT32, DiscAssignerOriginalFreq },
137 { "ABNORMAL_FREQ", HISYSEVENT_INT32, DiscAssignerAbnormalFreq },
138 { "DURATION", HISYSEVENT_INT32, DiscAssignerDuration },
139 // Modification Note: remember updating LNN_ALARM_ASSIGNER_SIZE
140 };
141
ConvertDiscForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)142 static inline size_t ConvertDiscForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
143 {
144 size_t validSize = 0;
145 COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discExtra != NULL, validSize, COMM_DFX, "invalid param");
146 for (size_t i = 0; i < size; ++i) {
147 HiSysEventParamAssigner assigner = g_discAssigners[i];
148 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
149 ++validSize;
150 }
151 }
152 return validSize;
153 }
154
ConvertDiscAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)155 static inline size_t ConvertDiscAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
156 {
157 size_t validSize = 0;
158 COMM_CHECK_AND_RETURN_RET_LOGE(form != NULL && form->discAlarmExtra != NULL, validSize, COMM_DFX, "invalid param");
159 for (size_t i = 0; i < size; ++i) {
160 HiSysEventParamAssigner assigner = g_discAlarmAssigners[i];
161 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
162 ++validSize;
163 }
164 }
165 return validSize;
166 }
167
168 #ifdef __cplusplus
169 }
170 #endif /* __cplusplus */
171 #endif // DISC_EVENT_CONVERTER_H
172