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 TRANS_EVENT_CONVERTER_H
17 #define TRANS_EVENT_CONVERTER_H
18
19 #include "softbus_event_converter.h"
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 #define TRANS_ASSIGNER(type, fieldName, field) \
26 static inline bool TransAssigner##fieldName( \
27 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28 { \
29 if (Assigner##type(form->transExtra->field, ¶m) && \
30 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
31 param->t = paramType; \
32 return true; \
33 } \
34 return false; \
35 }
36
37 TRANS_ASSIGNER(Uint8, TalkieFreq, talkieFreq)
38 TRANS_ASSIGNER(Uint8, TalkieType, talkieType)
39 TRANS_ASSIGNER(Uint8, TalkieLevel, talkieLevel)
40 TRANS_ASSIGNER(Errcode, Result, result)
41 TRANS_ASSIGNER(Errcode, Errcode, errcode)
42 TRANS_ASSIGNER(AnonymizeString, SocketName, socketName)
43 TRANS_ASSIGNER(Int32, DataType, dataType)
44 TRANS_ASSIGNER(Int32, ChannelType, channelType)
45 TRANS_ASSIGNER(Int32, LaneId, laneId)
46 TRANS_ASSIGNER(Int32, PreferLinkType, preferLinkType)
47 TRANS_ASSIGNER(Int32, LaneTransType, laneTransType)
48 TRANS_ASSIGNER(Int32, ChannelId, channelId)
49 TRANS_ASSIGNER(Int32, RequestId, requestId)
50 TRANS_ASSIGNER(Int32, ConnectionId, connectionId)
51 TRANS_ASSIGNER(Int32, LinkType, linkType)
52 TRANS_ASSIGNER(Int32, AuthId, authId)
53 TRANS_ASSIGNER(Int32, SocketFd, socketFd)
54 TRANS_ASSIGNER(Int32, CostTime, costTime)
55 TRANS_ASSIGNER(Int32, ChannelScore, channelScore)
56 TRANS_ASSIGNER(Int32, PeerChannelId, peerChannelId)
57 TRANS_ASSIGNER(Int32, BtFlow, btFlow)
58 TRANS_ASSIGNER(Int32, PagingId, pagingId)
59 TRANS_ASSIGNER(Int32, CallPid, callPid)
60 TRANS_ASSIGNER(Int32, SaId, saId)
61 TRANS_ASSIGNER(Int32, BusinessFlag, businessFlag)
62 TRANS_ASSIGNER(String, GroupId, groupId)
63 TRANS_ASSIGNER(String, SubGroupId, subGroupId)
64 TRANS_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
65 TRANS_ASSIGNER(AnonymizeString, PeerUdid, peerUdid)
66 TRANS_ASSIGNER(String, PeerDevVer, peerDevVer)
67 TRANS_ASSIGNER(AnonymizeString, LocalUdid, localUdid)
68 TRANS_ASSIGNER(String, CallerPkg, callerPkg)
69 TRANS_ASSIGNER(String, CalleePkg, calleePkg)
70 TRANS_ASSIGNER(String, FirstTokenName, firstTokenName)
71 TRANS_ASSIGNER(AnonymizeString, CallerAccountId, callerAccountId)
72 TRANS_ASSIGNER(AnonymizeString, CalleeAccountId, calleeAccountId)
73 TRANS_ASSIGNER(Uint64, FirstTokenId, firstTokenId)
74 TRANS_ASSIGNER(Int32, FirstTokenType, firstTokenType)
75 TRANS_ASSIGNER(LongString, TrafficStats, trafficStats)
76 TRANS_ASSIGNER(Int32, OsType, osType)
77 TRANS_ASSIGNER(Int32, DeviceState, deviceState)
78 TRANS_ASSIGNER(Int32, BusinessId, businessId)
79 TRANS_ASSIGNER(Int32, BusinessType, businessType)
80 TRANS_ASSIGNER(Int32, SessionId, sessionId)
81 TRANS_ASSIGNER(Int32, MinBW, minBW)
82 TRANS_ASSIGNER(Int32, MaxLatency, maxLatency)
83 TRANS_ASSIGNER(Int32, MinLatency, minLatency)
84 TRANS_ASSIGNER(Uint8, LocalStaChload, localStaChload)
85 TRANS_ASSIGNER(Uint8, RemoteStaChload, remoteStaChload)
86 TRANS_ASSIGNER(Uint8, LocalHmlChload, localHmlChload)
87 TRANS_ASSIGNER(Uint8, RemoteHmlChload, remoteHmlChload)
88 TRANS_ASSIGNER(Uint8, LocalP2pChload, localP2pChload)
89 TRANS_ASSIGNER(Uint8, RemoteP2pChload, remoteP2pChload)
90 TRANS_ASSIGNER(Uint8, LocalStaChannel, localStaChannel)
91 TRANS_ASSIGNER(Uint8, RemoteStaChannel, remoteStaChannel)
92 TRANS_ASSIGNER(Uint8, HmlChannel, hmlChannel)
93 TRANS_ASSIGNER(Uint8, LocalP2pChannel, localP2pChannel)
94 TRANS_ASSIGNER(Uint8, RemoteP2pChannel, remoteP2pChannel)
95 TRANS_ASSIGNER(Int32, LocalIsDbac, localIsDbac)
96 TRANS_ASSIGNER(Int32, RemoteIsDbac, remoteIsDbac)
97 TRANS_ASSIGNER(Int32, LocalIsDbdc, localIsDbdc)
98 TRANS_ASSIGNER(Int32, RemoteIsDbdc, remoteIsDbdc)
99 TRANS_ASSIGNER(String, ConCurrentId, conCurrentId)
100
101 #define TRANS_ASSIGNER_SIZE 63 // Size of TRANS_ASSIGNERS
102 static const HiSysEventParamAssigner TRANS_ASSIGNERS[] = {
103 { "TALKIE_FREQ", HISYSEVENT_UINT8, TransAssignerTalkieFreq },
104 { "TALKIE_TYPE", HISYSEVENT_UINT8, TransAssignerTalkieType },
105 { "TALKIE_LEVEL", HISYSEVENT_UINT8, TransAssignerTalkieLevel },
106 { "STAGE_RES", HISYSEVENT_INT32, TransAssignerResult },
107 { "ERROR_CODE", HISYSEVENT_INT32, TransAssignerErrcode },
108 { "SOCKET_NAME", HISYSEVENT_STRING, TransAssignerSocketName },
109 { "DATA_TYPE", HISYSEVENT_INT32, TransAssignerDataType },
110 { "LOGIC_CHAN_TYPE", HISYSEVENT_INT32, TransAssignerChannelType },
111 { "LANE_ID", HISYSEVENT_INT32, TransAssignerLaneId },
112 { "PREFER_LINK_TYPE", HISYSEVENT_INT32, TransAssignerPreferLinkType },
113 { "LANE_TRANS_TYPE", HISYSEVENT_INT32, TransAssignerLaneTransType },
114 { "CHAN_ID", HISYSEVENT_INT32, TransAssignerChannelId },
115 { "REQ_ID", HISYSEVENT_INT32, TransAssignerRequestId },
116 { "CONN_ID", HISYSEVENT_INT32, TransAssignerConnectionId },
117 { "LINK_TYPE", HISYSEVENT_INT32, TransAssignerLinkType },
118 { "AUTH_ID", HISYSEVENT_INT32, TransAssignerAuthId },
119 { "SOCKET_FD", HISYSEVENT_INT32, TransAssignerSocketFd },
120 { "COST_TIME", HISYSEVENT_INT32, TransAssignerCostTime },
121 { "CHAN_SCORE", HISYSEVENT_INT32, TransAssignerChannelScore },
122 { "PEER_CHAN_ID", HISYSEVENT_INT32, TransAssignerPeerChannelId },
123 { "BT_FLOW", HISYSEVENT_INT32, TransAssignerBtFlow },
124 { "PAGING_ID", HISYSEVENT_INT32, TransAssignerPagingId },
125 { "CALLER_PID", HISYSEVENT_INT32, TransAssignerCallPid },
126 { "SA_ID", HISYSEVENT_INT32, TransAssignerSaId },
127 { "BUSINESS_FLAG", HISYSEVENT_INT32, TransAssignerBusinessFlag },
128 { "GROUP_ID", HISYSEVENT_STRING, TransAssignerGroupId },
129 { "SUB_GROUP_ID", HISYSEVENT_STRING, TransAssignerSubGroupId },
130 { "PEER_NET_ID", HISYSEVENT_STRING, TransAssignerPeerNetworkId },
131 { "PEER_UDID", HISYSEVENT_STRING, TransAssignerPeerUdid },
132 { "PEER_DEV_VER", HISYSEVENT_STRING, TransAssignerPeerDevVer },
133 { "LOCAL_UDID", HISYSEVENT_STRING, TransAssignerLocalUdid },
134 { "HOST_PKG", HISYSEVENT_STRING, TransAssignerCallerPkg },
135 { "TO_CALL_PKG", HISYSEVENT_STRING, TransAssignerCalleePkg },
136 { "FIRST_TOKEN_NAME", HISYSEVENT_STRING, TransAssignerFirstTokenName },
137 { "CALLER_ACCOUNT_ID", HISYSEVENT_STRING, TransAssignerCallerAccountId },
138 { "CALLEE_ACCOUNT_ID", HISYSEVENT_STRING, TransAssignerCalleeAccountId },
139 { "FIRST_TOKEN_ID", HISYSEVENT_UINT64, TransAssignerFirstTokenId },
140 { "FIRST_TOKEN_TYPE", HISYSEVENT_INT32, TransAssignerFirstTokenType },
141 { "TRAFFIC_STATS", HISYSEVENT_STRING, TransAssignerTrafficStats },
142 { "OS_TYPE", HISYSEVENT_INT32, TransAssignerOsType },
143 { "DEVICE_STATE", HISYSEVENT_INT32, TransAssignerDeviceState },
144 { "BUSINESS_ID", HISYSEVENT_INT32, TransAssignerBusinessId },
145 { "BUSINESS_TYPE", HISYSEVENT_INT32, TransAssignerBusinessType },
146 { "SESSION_ID", HISYSEVENT_INT32, TransAssignerSessionId },
147 { "MIN_BW", HISYSEVENT_INT32, TransAssignerMinBW },
148 { "MAX_LATENCY", HISYSEVENT_INT32, TransAssignerMaxLatency },
149 { "MIN_LATENCY", HISYSEVENT_INT32, TransAssignerMinLatency },
150 { "LOCAL_STA_CHLOAD", HISYSEVENT_UINT8, TransAssignerLocalStaChload },
151 { "REMOTE_STA_CHLOAD", HISYSEVENT_UINT8, TransAssignerRemoteStaChload },
152 { "LOCAL_HML_CHLOAD", HISYSEVENT_UINT8, TransAssignerLocalHmlChload },
153 { "REMOTE_HML_CHLOAD", HISYSEVENT_UINT8, TransAssignerRemoteHmlChload },
154 { "LOCAL_P2P_CHLOAD", HISYSEVENT_UINT8, TransAssignerLocalP2pChload },
155 { "REMOTE_P2P_CHLOAD", HISYSEVENT_UINT8, TransAssignerRemoteP2pChload },
156 { "LOCAL_STA_CHANNEL", HISYSEVENT_UINT8, TransAssignerLocalStaChannel },
157 { "REMOTE_STA_CHANNEL", HISYSEVENT_UINT8, TransAssignerRemoteStaChannel},
158 { "HML_CHANNEL", HISYSEVENT_UINT8, TransAssignerHmlChannel },
159 { "LOCAL_P2P_CHANNEL", HISYSEVENT_UINT8, TransAssignerLocalP2pChannel },
160 { "REMOTE_P2P_CHANNEL", HISYSEVENT_UINT8, TransAssignerRemoteP2pChannel},
161 { "LOCAL_IS_DBAC", HISYSEVENT_INT32, TransAssignerLocalIsDbac },
162 { "REMOTE_IS_DBAC", HISYSEVENT_INT32, TransAssignerRemoteIsDbac },
163 { "LOCAL_IS_DBDC", HISYSEVENT_INT32, TransAssignerLocalIsDbdc },
164 { "REMOTE_IS_DBDC", HISYSEVENT_INT32, TransAssignerRemoteIsDbdc },
165 { "CONCURRENT_ID", HISYSEVENT_STRING, TransAssignerConCurrentId },
166 // Modification Note: remember updating TRANS_ASSIGNER_SIZE
167 };
168
169 #define TRANS_ALARM_ASSIGNER(type, fieldName, field) \
170 static inline bool TransAssigner##fieldName( \
171 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
172 { \
173 if (Assigner##type(form->transAlarmExtra->field, ¶m) && \
174 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
175 param->t = paramType; \
176 return true; \
177 } \
178 return false; \
179 }
180
181 TRANS_ALARM_ASSIGNER(Errcode, AlarmResult, result)
182 TRANS_ALARM_ASSIGNER(Errcode, AlarmReason, errcode)
183 TRANS_ALARM_ASSIGNER(Int32, CallerPid, callerPid)
184 TRANS_ALARM_ASSIGNER(Int32, AlarmLinkType, linkType)
185 TRANS_ALARM_ASSIGNER(Int32, MinBw, minBw)
186 TRANS_ALARM_ASSIGNER(Int32, MethodId, methodId)
187 TRANS_ALARM_ASSIGNER(Int32, Duration, duration)
188 TRANS_ALARM_ASSIGNER(Int32, CurFlow, curFlow)
189 TRANS_ALARM_ASSIGNER(Int32, LimitFlow, limitFlow)
190 TRANS_ALARM_ASSIGNER(Int32, LimitTime, limitTime)
191 TRANS_ALARM_ASSIGNER(Int32, OccupyRes, occupyRes)
192 TRANS_ALARM_ASSIGNER(Int32, SyncType, syncType)
193 TRANS_ALARM_ASSIGNER(Int32, SyncData, syncData)
194 TRANS_ALARM_ASSIGNER(Int32, RetryCount, retryCount)
195 TRANS_ALARM_ASSIGNER(Int32, RetryReason, retryReason)
196 TRANS_ALARM_ASSIGNER(String, ConflictName, conflictName)
197 TRANS_ALARM_ASSIGNER(String, ConflictedName, conflictedName)
198 TRANS_ALARM_ASSIGNER(String, OccupyedName, occupyedName)
199 TRANS_ALARM_ASSIGNER(String, PermissionName, permissionName)
200 TRANS_ALARM_ASSIGNER(AnonymizeString, AlarmSessionName, sessionName)
201
202 #define TRANS_ALARM_ASSIGNER_SIZE 20 // Size of g_transAlarmAssigners
203 static const HiSysEventParamAssigner g_transAlarmAssigners[] = {
204 { "STAGE_RES", HISYSEVENT_INT32, TransAssignerAlarmResult },
205 { "ERROR_CODE", HISYSEVENT_INT32, TransAssignerAlarmReason },
206 { "CALLER_PID", HISYSEVENT_INT32, TransAssignerCallerPid },
207 { "LINK_TYPE", HISYSEVENT_INT32, TransAssignerAlarmLinkType },
208 { "MIN_BW", HISYSEVENT_INT32, TransAssignerMinBw },
209 { "METHOD_ID", HISYSEVENT_INT32, TransAssignerMethodId },
210 { "DURATION", HISYSEVENT_INT32, TransAssignerDuration },
211 { "CUR_FLOW", HISYSEVENT_INT32, TransAssignerCurFlow },
212 { "LIMIT_FLOW", HISYSEVENT_INT32, TransAssignerLimitFlow },
213 { "LIMIT_TIME", HISYSEVENT_INT32, TransAssignerLimitTime },
214 { "OCCUPY_RES", HISYSEVENT_INT32, TransAssignerOccupyRes },
215 { "SYNC_TYPE", HISYSEVENT_INT32, TransAssignerSyncType },
216 { "SYNC_DATA", HISYSEVENT_INT32, TransAssignerSyncData },
217 { "RETRY_COUNT", HISYSEVENT_INT32, TransAssignerRetryCount },
218 { "RETRY_REASON", HISYSEVENT_INT32, TransAssignerRetryReason },
219 { "CONFLICT_NAME", HISYSEVENT_STRING, TransAssignerConflictName },
220 { "CONFLECTED_NAME", HISYSEVENT_STRING, TransAssignerConflictedName },
221 { "OCCUPYED_NAME", HISYSEVENT_STRING, TransAssignerOccupyedName },
222 { "PERMISSION_NAME", HISYSEVENT_STRING, TransAssignerPermissionName },
223 { "SESSION_NAME", HISYSEVENT_STRING, TransAssignerAlarmSessionName },
224 // Modification Note: remember updating TRANS_ALARM_ASSIGNER_SIZE
225 };
226
ConvertTransForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)227 static inline size_t ConvertTransForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
228 {
229 size_t validSize = 0;
230 if (form == NULL || form->transExtra == NULL) {
231 return validSize;
232 }
233 for (size_t i = 0; i < size; ++i) {
234 HiSysEventParamAssigner assigner = TRANS_ASSIGNERS[i];
235 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
236 ++validSize;
237 }
238 }
239 return validSize;
240 }
241
ConvertTransAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)242 static inline size_t ConvertTransAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
243 {
244 size_t validSize = 0;
245 if (form == NULL || form->transAlarmExtra == NULL) {
246 return validSize;
247 }
248 for (size_t i = 0; i < size; ++i) {
249 HiSysEventParamAssigner assigner = g_transAlarmAssigners[i];
250 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
251 ++validSize;
252 }
253 }
254 return validSize;
255 }
256
257 #ifdef __cplusplus
258 }
259 #endif /* __cplusplus */
260 #endif // TRANS_EVENT_CONVERTER_H
261