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 CONN_EVENT_CONVERTER_H
17 #define CONN_EVENT_CONVERTER_H
18
19 #include "softbus_event_converter.h"
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 #define CONN_ASSIGNER(type, fieldName, field) \
26 static inline bool ConnAssigner##fieldName( \
27 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
28 { \
29 if (Assigner##type(form->connExtra->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 CONN_ASSIGNER(Errcode, Result, result)
38 CONN_ASSIGNER(Errcode, Errcode, errcode)
39 CONN_ASSIGNER(Int32, ConnectionId, connectionId)
40 CONN_ASSIGNER(Errcode, ConnReqId, requestId)
41 CONN_ASSIGNER(Int32, LinkType, linkType)
42 CONN_ASSIGNER(Int32, AuthType, authType)
43 CONN_ASSIGNER(Int32, AuthId, authId)
44 CONN_ASSIGNER(String, LnnType, lnnType)
45 CONN_ASSIGNER(Int32, ExpectRole, expectRole)
46 CONN_ASSIGNER(Int32, CostTime, costTime)
47 CONN_ASSIGNER(Int32, Rssi, rssi)
48 CONN_ASSIGNER(Int32, Load, load)
49 CONN_ASSIGNER(Int32, Frequency, frequency)
50 CONN_ASSIGNER(Int32, ConnProtocol, connProtocol)
51 CONN_ASSIGNER(Int32, ConnRole, connRole)
52 CONN_ASSIGNER(Int32, ConnRcDelta, connRcDelta)
53 CONN_ASSIGNER(Int32, ConnRc, connRc)
54 CONN_ASSIGNER(Int32, SupportFeature, supportFeature)
55 CONN_ASSIGNER(Int32, ModuleId, moduleId)
56 CONN_ASSIGNER(Uint32, ProtocolType, proType)
57 CONN_ASSIGNER(Int32, Fd, fd)
58 CONN_ASSIGNER(Int32, Cfd, cfd)
59 CONN_ASSIGNER(String, ChallengeCode, challengeCode)
60 CONN_ASSIGNER(AnonymizeString, PeerIp, peerIp)
61 CONN_ASSIGNER(AnonymizeString, PeerBrMac, peerBrMac)
62 CONN_ASSIGNER(AnonymizeString, PeerBleMac, peerBleMac)
63 CONN_ASSIGNER(AnonymizeString, PeerWifiMac, peerWifiMac)
64 CONN_ASSIGNER(AnonymizeString, PeerSleMac, peerSleMac)
65 CONN_ASSIGNER(String, PeerPort, peerPort)
66 CONN_ASSIGNER(AnonymizeString, PeerNetworkId, peerNetworkId)
67 CONN_ASSIGNER(AnonymizeString, PeerUdid, peerUdid)
68 CONN_ASSIGNER(String, PeerDeviceType, peerDeviceType)
69 CONN_ASSIGNER(AnonymizeString, LocalNetworkId, localNetworkId)
70 CONN_ASSIGNER(String, CallerPkg, callerPkg)
71 CONN_ASSIGNER(String, CalleePkg, calleePkg)
72 CONN_ASSIGNER(String, SrcAccountIdHash, srcAccountIdHash)
73 CONN_ASSIGNER(String, DstAccountIdHash, dstAccountIdHash)
74 CONN_ASSIGNER(Errcode, BootLinkType, bootLinkType)
75 CONN_ASSIGNER(Errcode, IsRenegotiate, isRenegotiate)
76 CONN_ASSIGNER(Errcode, IsReuse, isReuse)
77 CONN_ASSIGNER(Uint64, NegotiateTime, negotiateTime)
78 CONN_ASSIGNER(Uint64, LinkTime, linkTime)
79 CONN_ASSIGNER(Errcode, OsType, osType)
80 CONN_ASSIGNER(String, LocalDeviceType, localDeviceType)
81 CONN_ASSIGNER(String, RemoteDeviceType, remoteDeviceType)
82 CONN_ASSIGNER(Errcode, P2pChannel, p2pChannel)
83 CONN_ASSIGNER(Errcode, HmlChannel, hmlChannel)
84 CONN_ASSIGNER(Errcode, StaChannel, staChannel)
85 CONN_ASSIGNER(Errcode, ApChannel, apChannel)
86 CONN_ASSIGNER(String, PeerDevVer, peerDevVer)
87 CONN_ASSIGNER(Errcode, RemoteScreenStatus, remoteScreenStatus)
88 CONN_ASSIGNER(Errcode, LocalScreenStatus, localScreenStatus)
89 CONN_ASSIGNER(Errcode, BusinessType, businessType)
90 CONN_ASSIGNER(Int32, BusinessId, businessId)
91 CONN_ASSIGNER(Errcode, Timeout, timeout)
92 CONN_ASSIGNER(Errcode, FastestConnectEnable, fastestConnectEnable)
93 CONN_ASSIGNER(Errcode, CoapDataChannel, coapDataChannel)
94 CONN_ASSIGNER(Errcode, EnableWideBandwidth, enableWideBandwidth)
95 CONN_ASSIGNER(Errcode, P2pRole, p2pRole)
96 CONN_ASSIGNER(Errcode, NeedHmlConnect, needHmlConnect)
97 CONN_ASSIGNER(String, BusinessTag, businessTag)
98 CONN_ASSIGNER(Errcode, StaChload, staChload)
99 CONN_ASSIGNER(Errcode, SameAccount, sameAccount)
100 CONN_ASSIGNER(Errcode, DiscoveryCnt, discoveryCnt)
101 CONN_ASSIGNER(Errcode, ConnectingCnt, connectingCnt)
102 CONN_ASSIGNER(Errcode, ConnectSuccessCnt, connectSuccessCnt)
103 CONN_ASSIGNER(Errcode, ConnectFailCnt, connectFailCnt)
104
105 #define CONN_ASSIGNER_SIZE 67 // Size of g_connAssigners
106 static HiSysEventParamAssigner g_connAssigners[] = {
107 { "STAGE_RES", HISYSEVENT_INT32, ConnAssignerResult },
108 { "ERROR_CODE", HISYSEVENT_INT32, ConnAssignerErrcode },
109 { "CONN_ID", HISYSEVENT_INT32, ConnAssignerConnectionId },
110 { "CONN_REQ_ID", HISYSEVENT_INT32, ConnAssignerConnReqId },
111 { "LINK_TYPE", HISYSEVENT_INT32, ConnAssignerLinkType },
112 { "AUTH_TYPE", HISYSEVENT_INT32, ConnAssignerAuthType },
113 { "AUTH_ID", HISYSEVENT_INT32, ConnAssignerAuthId },
114 { "LNN_TYPE", HISYSEVENT_STRING, ConnAssignerLnnType },
115 { "EXPECT_ROLE", HISYSEVENT_INT32, ConnAssignerExpectRole },
116 { "COST_TIME", HISYSEVENT_INT32, ConnAssignerCostTime },
117 { "RSSI", HISYSEVENT_INT32, ConnAssignerRssi },
118 { "CHLOAD", HISYSEVENT_INT32, ConnAssignerLoad },
119 { "FREQ", HISYSEVENT_INT32, ConnAssignerFrequency },
120 { "CONN_PROTOCOL", HISYSEVENT_INT32, ConnAssignerConnProtocol },
121 { "CONN_ROLE", HISYSEVENT_INT32, ConnAssignerConnRole },
122 { "CONN_RC_DELTA", HISYSEVENT_INT32, ConnAssignerConnRcDelta },
123 { "CONN_RC", HISYSEVENT_INT32, ConnAssignerConnRc },
124 { "SUPT_FEATURE", HISYSEVENT_INT32, ConnAssignerSupportFeature},
125 { "MODULE_ID", HISYSEVENT_INT32, ConnAssignerModuleId },
126 { "PROTOCOL_TYPE", HISYSEVENT_UINT32, ConnAssignerProtocolType },
127 { "FD", HISYSEVENT_INT32, ConnAssignerFd },
128 { "CFD", HISYSEVENT_INT32, ConnAssignerCfd },
129 { "CHALLENGE_CODE", HISYSEVENT_STRING, ConnAssignerChallengeCode },
130 { "PEER_IP", HISYSEVENT_STRING, ConnAssignerPeerIp },
131 { "PEER_BR_MAC", HISYSEVENT_STRING, ConnAssignerPeerBrMac },
132 { "PEER_BLE_MAC", HISYSEVENT_STRING, ConnAssignerPeerBleMac },
133 { "PEER_WIFI_MAC", HISYSEVENT_STRING, ConnAssignerPeerWifiMac },
134 { "PEER_SLE_MAC", HISYSEVENT_STRING, ConnAssignerPeerSleMac },
135 { "PEER_PORT", HISYSEVENT_STRING, ConnAssignerPeerPort },
136 { "PEER_NET_ID", HISYSEVENT_STRING, ConnAssignerPeerNetworkId },
137 { "PEER_UDID", HISYSEVENT_STRING, ConnAssignerPeerUdid },
138 { "PEER_DEV_TYPE", HISYSEVENT_STRING, ConnAssignerPeerDeviceType},
139 { "LOCAL_NET_ID", HISYSEVENT_STRING, ConnAssignerLocalNetworkId},
140 { "HOST_PKG", HISYSEVENT_STRING, ConnAssignerCallerPkg },
141 { "TO_CALL_PKG", HISYSEVENT_STRING, ConnAssignerCalleePkg },
142 { "SRC_ACCOUNT_ID_HASH", HISYSEVENT_STRING, ConnAssignerSrcAccountIdHash },
143 { "DST_ACCOUNT_ID_HASH", HISYSEVENT_STRING, ConnAssignerDstAccountIdHash },
144 { "BOOT_LINK_TYPE", HISYSEVENT_INT32, ConnAssignerBootLinkType },
145 { "IS_RENEGOTIATE", HISYSEVENT_INT32, ConnAssignerIsRenegotiate },
146 { "IS_REUSE", HISYSEVENT_INT32, ConnAssignerIsReuse },
147 { "NEGOTIATE_TIME", HISYSEVENT_UINT64, ConnAssignerNegotiateTime },
148 { "LINK_TIME", HISYSEVENT_UINT64, ConnAssignerLinkTime },
149 { "OS_TYPE", HISYSEVENT_INT32, ConnAssignerOsType },
150 { "LOCAL_DEV_TYPE", HISYSEVENT_STRING, ConnAssignerLocalDeviceType },
151 { "PEER_DEV_TYPE", HISYSEVENT_STRING, ConnAssignerRemoteDeviceType },
152 { "P2P_CHANNEL", HISYSEVENT_INT32, ConnAssignerP2pChannel },
153 { "HML_CHANNEL", HISYSEVENT_INT32, ConnAssignerHmlChannel },
154 { "STA_CHANNEL", HISYSEVENT_INT32, ConnAssignerStaChannel },
155 { "AP_CHANNEL", HISYSEVENT_INT32, ConnAssignerApChannel },
156 { "PEER_DEV_VER", HISYSEVENT_STRING, ConnAssignerPeerDevVer },
157 { "REMOTE_SCREEN_STATUS", HISYSEVENT_INT32, ConnAssignerRemoteScreenStatus},
158 { "LOCAL_SCREEN_STATUS", HISYSEVENT_INT32, ConnAssignerLocalScreenStatus },
159 { "BUSINESS_TYPE", HISYSEVENT_INT32, ConnAssignerBusinessType },
160 { "BUSINESS_ID", HISYSEVENT_INT32, ConnAssignerBusinessId },
161 { "TIME_OUT", HISYSEVENT_INT32, ConnAssignerTimeout },
162 { "FASTEST_CONNECT_ENABLE", HISYSEVENT_INT32, ConnAssignerFastestConnectEnable},
163 { "COAP_DATA_CHANNEL", HISYSEVENT_INT32, ConnAssignerCoapDataChannel },
164 { "ENABLE_WIDE_BANDWIDTH", HISYSEVENT_INT32, ConnAssignerEnableWideBandwidth },
165 { "P2P_ROLE", HISYSEVENT_INT32, ConnAssignerP2pRole },
166 { "NEED_HML_CONNECT", HISYSEVENT_INT32, ConnAssignerNeedHmlConnect },
167 { "BUSINESS_TAG", HISYSEVENT_STRING, ConnAssignerBusinessTag },
168 { "STA_CHLOAD", HISYSEVENT_INT32, ConnAssignerStaChload },
169 { "SAME_ACCOUNT", HISYSEVENT_INT32, ConnAssignerSameAccount },
170 { "DISCOVERY_CNT", HISYSEVENT_INT32, ConnAssignerDiscoveryCnt },
171 { "CONNECTING_CNT", HISYSEVENT_INT32, ConnAssignerConnectingCnt },
172 { "CONNECT_SUCCESS_CNT", HISYSEVENT_INT32, ConnAssignerConnectSuccessCnt },
173 { "CONNECT_FAIL_CNT", HISYSEVENT_INT32, ConnAssignerConnectFailCnt },
174 // Modification Note: remember updating CONN_ASSIGNER_SIZE
175 };
176
177 #define CONN_ALARM_ASSIGNER(type, fieldName, field) \
178 static inline bool ConnAssigner##fieldName( \
179 const char *eventName, HiSysEventParamType paramType, SoftbusEventForm *form, HiSysEventParam *param) \
180 { \
181 if (Assigner##type(form->connAlarmExtra->field, ¶m) && \
182 CopyString(param->name, eventName, MAX_LENGTH_OF_PARAM_NAME)) { \
183 param->t = paramType; \
184 return true; \
185 } \
186 return false; \
187 }
188
189 CONN_ALARM_ASSIGNER(Errcode, AlarmResult, result)
190 CONN_ALARM_ASSIGNER(Errcode, AlarmErrcode, errcode)
191 CONN_ALARM_ASSIGNER(Int32, AlarmLinkType, linkType)
192 CONN_ALARM_ASSIGNER(Int32, Duration, duration)
193 CONN_ALARM_ASSIGNER(Int32, NetType, netType)
194
195 #define CONN_ALARM_ASSIGNER_SIZE 5 // Size of g_transAlarmAssigners
196 static const HiSysEventParamAssigner g_connAlarmAssigners[] = {
197 { "STAGE_RES", HISYSEVENT_INT32, ConnAssignerAlarmResult },
198 { "ERROR_CODE", HISYSEVENT_INT32, ConnAssignerAlarmErrcode },
199 { "LINK_TYPE", HISYSEVENT_INT32, ConnAssignerAlarmLinkType },
200 { "DURATION", HISYSEVENT_INT32, ConnAssignerDuration },
201 { "NET_TYPE", HISYSEVENT_INT32, ConnAssignerNetType },
202 // Modification Note: remember updating CONN_ALARM_ASSIGNER_SIZE
203 };
204
ConvertConnForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)205 static inline size_t ConvertConnForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
206 {
207 size_t validSize = 0;
208 if (form == NULL || form->connExtra == NULL) {
209 return validSize;
210 }
211 for (size_t i = 0; i < size; ++i) {
212 HiSysEventParamAssigner assigner = g_connAssigners[i];
213 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
214 ++validSize;
215 }
216 }
217 return validSize;
218 }
219
ConvertConnAlarmForm2Param(HiSysEventParam params[],size_t size,SoftbusEventForm * form)220 static inline size_t ConvertConnAlarmForm2Param(HiSysEventParam params[], size_t size, SoftbusEventForm *form)
221 {
222 size_t validSize = 0;
223 if (form == NULL || form->connAlarmExtra == NULL) {
224 return validSize;
225 }
226 for (size_t i = 0; i < size; ++i) {
227 HiSysEventParamAssigner assigner = g_connAlarmAssigners[i];
228 if (assigner.Assign(assigner.name, assigner.type, form, ¶ms[validSize])) {
229 ++validSize;
230 }
231 }
232 return validSize;
233 }
234
235 #ifdef __cplusplus
236 }
237 #endif /* __cplusplus */
238 #endif // CONN_EVENT_CONVERTER_H
239