• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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, &param) &&                                                 \
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, &param) &&                                            \
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, &params[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, &params[validSize])) {
229             ++validSize;
230         }
231     }
232     return validSize;
233 }
234 
235 #ifdef __cplusplus
236 }
237 #endif /* __cplusplus */
238 #endif // CONN_EVENT_CONVERTER_H
239