1 /*
2 * Copyright (C) 2022 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 #include "wifi_hisysevent.h"
17 #include "hisysevent.h"
18 #include "wifi_logger.h"
19 #include "json/json.h"
20
21 namespace OHOS {
22 namespace Wifi {
23 DEFINE_WIFILOG_LABEL("WifiHiSysEvent");
24
25 template<typename... Types>
WriteEvent(const std::string & eventType,Types...args)26 static void WriteEvent(const std::string& eventType, Types... args)
27 {
28 int ret = HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::COMMUNICATION, eventType,
29 HiviewDFX::HiSysEvent::EventType::STATISTIC, args...);
30 if (ret != 0) {
31 WIFI_LOGE("Write event fail: %{public}s", eventType.c_str());
32 }
33 }
34
35 template<typename... Type>
WriteEventBehavior(const std::string & eventType,Type...args)36 static void WriteEventBehavior(const std::string& eventType, Type... args)
37 {
38 int ret = HiSysEventWrite(HiviewDFX::HiSysEvent::Domain::COMMUNICATION, eventType,
39 HiviewDFX::HiSysEvent::EventType::BEHAVIOR, args...);
40 if (ret != 0) {
41 WIFI_LOGE("Write event fail: %{public}s", eventType.c_str());
42 }
43 }
44
WriteWifiStateHiSysEvent(const std::string & serviceType,WifiOperType operType)45 void WriteWifiStateHiSysEvent(const std::string& serviceType, WifiOperType operType)
46 {
47 WriteEvent("WIFI_STATE", "TYPE", serviceType, "OPER_TYPE", static_cast<int>(operType));
48
49 Json::Value root;
50 Json::FastWriter writer;
51 root["WIFI_STATE"] = static_cast<int>(operType);
52 root["TYPE"] = serviceType;
53 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_WIFI_STATE", "EVENT_VALUE", writer.write(root));
54 }
55
WriteWifiApStateHiSysEvent(int32_t state)56 void WriteWifiApStateHiSysEvent(int32_t state)
57 {
58 WriteEventBehavior("WIFI_AP_STATE", "STATE", state);
59 }
60
WriteWifiP2pStateHiSysEvent(const std::string & inter,int32_t type,int32_t state)61 void WriteWifiP2pStateHiSysEvent(const std::string& inter, int32_t type, int32_t state)
62 {
63 WriteEventBehavior("WIFI_P2P_STATE", "INTERFACE", inter, "P2PTYPE", type, "STATE", state);
64 }
65
WriteWifiConnectionHiSysEvent(const WifiConnectionType & type,const std::string & pkgName)66 void WriteWifiConnectionHiSysEvent(const WifiConnectionType& type, const std::string& pkgName)
67 {
68 WriteEvent("WIFI_CONNECTION", "TYPE", static_cast<int>(type), "PACKAGE_NAME", pkgName);
69 }
70
WriteWifiScanHiSysEvent(const int result,const std::string & pkgName)71 void WriteWifiScanHiSysEvent(const int result, const std::string& pkgName)
72 {
73 WriteEvent("WIFI_SCAN", "EXECUTE_RESULT", result, "PACKAGE_NAME", pkgName);
74 }
75
WriteWifiEventReceivedHiSysEvent(const std::string & eventType,int value)76 void WriteWifiEventReceivedHiSysEvent(const std::string& eventType, int value)
77 {
78 WriteEvent("WIFI_EVENT_RECEIVED", "EVENT_TYPE", eventType, "VALUE", value);
79 }
80
WriteWifiBandHiSysEvent(int band)81 void WriteWifiBandHiSysEvent(int band)
82 {
83 WriteEvent("WIFI_BAND", "BAND", band);
84 }
85
WriteWifiSignalHiSysEvent(int direction,int txPackets,int rxPackets)86 void WriteWifiSignalHiSysEvent(int direction, int txPackets, int rxPackets)
87 {
88 WriteEvent("WIFI_SIGNAL", "DIRECTION", direction, "TXPACKETS", txPackets, "RXPACKETS", rxPackets);
89 }
90
WriteWifiOperateStateHiSysEvent(int operateType,int operateState)91 void WriteWifiOperateStateHiSysEvent(int operateType, int operateState)
92 {
93 Json::Value root;
94 Json::FastWriter writer;
95 root["OPERATE_TYPE"] = operateType;
96 root["OPERATE_STATE"] = operateState;
97 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_OPERATE_STATE", "EVENT_VALUE", writer.write(root));
98 }
99
WriteWifiAbnormalDisconnectHiSysEvent(int errorCode)100 void WriteWifiAbnormalDisconnectHiSysEvent(int errorCode)
101 {
102 Json::Value root;
103 Json::FastWriter writer;
104 root["ERROR_CODE"] = errorCode;
105 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_ABNORMAL_DISCONNECT", "EVENT_VALUE", writer.write(root));
106 }
107
WriteWifiConnectionInfoHiSysEvent(int networkId)108 void WriteWifiConnectionInfoHiSysEvent(int networkId)
109 {
110 Json::Value root;
111 Json::FastWriter writer;
112 root["NETWORK_ID"] = networkId;
113 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_CONNECTION_INFO", "EVENT_VALUE", writer.write(root));
114 }
115
WriteWifiOpenAndCloseFailedHiSysEvent(int operateType,std::string failReason,int apState)116 void WriteWifiOpenAndCloseFailedHiSysEvent(int operateType, std::string failReason, int apState)
117 {
118 Json::Value root;
119 Json::FastWriter writer;
120 root["OPERATE_TYPE"] = operateType;
121 root["FAIL_REASON"] = failReason;
122 root["AP_STATE"] = apState;
123 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_OPEN_AND_CLOSE_FAILED", "EVENT_VALUE", writer.write(root));
124 }
125
WriteSoftApOpenAndCloseFailedEvent(int operateType,std::string failReason)126 void WriteSoftApOpenAndCloseFailedEvent(int operateType, std::string failReason)
127 {
128 WIFI_LOGE("WriteSoftApOpenAndCloseFailedEvent operateType=%{public}d", operateType);
129 Json::Value root;
130 Json::FastWriter writer;
131 root["OPERATE_TYPE"] = operateType;
132 root["FAIL_REASON"] = failReason;
133 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "SOFTAP_OPEN_AND_CLOSE_FAILED", "EVENT_VALUE", writer.write(root));
134 }
135
WriteWifiAccessIntFailedHiSysEvent(int operateRes,int failCnt)136 void WriteWifiAccessIntFailedHiSysEvent(int operateRes, int failCnt)
137 {
138 Json::Value root;
139 Json::FastWriter writer;
140 root["OPERATE_TYPE"] = operateRes;
141 root["FAIL_CNT"] = failCnt;
142 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_ACCESS_INTERNET_FAILED", "EVENT_VALUE", writer.write(root));
143 }
144
WriteWifiPnoScanHiSysEvent(int isStartScan,int suspendReason)145 void WriteWifiPnoScanHiSysEvent(int isStartScan, int suspendReason)
146 {
147 Json::Value root;
148 Json::FastWriter writer;
149 root["IS_START"] = isStartScan;
150 root["SUSPEND_REASON"] = suspendReason;
151 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_PNO_SCAN_INFO", "EVENT_VALUE", writer.write(root));
152 }
153
WriteBrowserFailedForPortalHiSysEvent(int respCode,std::string & server)154 void WriteBrowserFailedForPortalHiSysEvent(int respCode, std::string &server)
155 {
156 Json::Value root;
157 Json::FastWriter writer;
158 root["RESP_CODE"] = respCode;
159 root["SERVER"] = server;
160 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "BROWSER_FAILED_FOR_PORTAL", "EVENT_VALUE", writer.write(root));
161 }
162
WriteWifiConnectFailedEventHiSysEvent(int operateType)163 void WriteWifiConnectFailedEventHiSysEvent(int operateType)
164 {
165 Json::Value root;
166 Json::FastWriter writer;
167 root["OPERATE_TYPE"] = operateType;
168 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_CONNECT_FAILED_EVENT", "EVENT_VALUE", writer.write(root));
169 }
170
WriteP2pKpiCountHiSysEvent(int eventType)171 void WriteP2pKpiCountHiSysEvent(int eventType)
172 {
173 Json::Value root;
174 Json::FastWriter writer;
175 root["EVENT_TYPE"] = eventType;
176 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "P2P_CONNECT_STATICS", "EVENT_VALUE", writer.write(root));
177 }
178
WriteP2pConnectFailedHiSysEvent(int errCode,int failRes)179 void WriteP2pConnectFailedHiSysEvent(int errCode, int failRes)
180 {
181 Json::Value root;
182 Json::FastWriter writer;
183 root["EVENT_TYPE"] = errCode;
184 root["FAIL_RES"] = failRes;
185 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "P2P_CONNECT_FAIL", "EVENT_VALUE", writer.write(root));
186 }
187
WriteP2pAbDisConnectHiSysEvent(int errCode,int failRes)188 void WriteP2pAbDisConnectHiSysEvent(int errCode, int failRes)
189 {
190 Json::Value root;
191 Json::FastWriter writer;
192 root["EVENT_TYPE"] = errCode;
193 root["FAIL_RES"] = failRes;
194 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "P2P_ABNORMAL_DISCONNECT", "EVENT_VALUE", writer.write(root));
195 }
196
WriteSoftApAbDisconnectHiSysEvent(int errorCode)197 void WriteSoftApAbDisconnectHiSysEvent(int errorCode)
198 {
199 Json::Value root;
200 Json::FastWriter writer;
201 root["ERROR_CODE"] = errorCode;
202 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "SOFTAP_ABNORMAL_DISCONNECT", "EVENT_VALUE", writer.write(root));
203 }
204
WriteIsInternetHiSysEvent(int isInternet)205 void WriteIsInternetHiSysEvent(int isInternet)
206 {
207 Json::Value root;
208 Json::FastWriter writer;
209 root["IS_INTERNET"] = isInternet;
210 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_KPI_INTERNET", "EVENT_VALUE", writer.write(root));
211 }
212
WriteSoftApConnectFailHiSysEvent(int errorCnt)213 void WriteSoftApConnectFailHiSysEvent(int errorCnt)
214 {
215 WIFI_LOGE("WriteSoftApConnectFailHiSysEvent errorCnt=%{public}d", errorCnt);
216 Json::Value root;
217 Json::FastWriter writer;
218 root["ERROR_CODE"] = errorCnt;
219 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "SOFTAP_CONNECT_FAILED", "EVENT_VALUE", writer.write(root));
220 }
221
WriteWifiScanApiFailHiSysEvent(const std::string & pkgName,int failReason)222 void WriteWifiScanApiFailHiSysEvent(const std::string& pkgName, int failReason)
223 {
224 Json::Value root;
225 Json::FastWriter writer;
226 root["PKG_NAME"] = pkgName;
227 root["FAIL_REASON"] = failReason;
228 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFISCANCONTROL_TRIGGER_API_FAIL", "EVENT_VALUE", writer.write(root));
229 }
230
WriteWifiEncryptionFailHiSysEvent(int event,const std::string & maskSsid,const std::string & keyMgmt,int encryptedModule)231 void WriteWifiEncryptionFailHiSysEvent(int event, const std::string& maskSsid, const std::string &keyMgmt, int encryptedModule)
232 {
233 Json::Value root;
234 Json::FastWriter writer;
235 root["ENCRY_OR_DECRY_EVENT"] = event;
236 root["SSID"] = maskSsid;
237 root["ENCRYKEYMANAGEMENT"] = keyMgmt;
238 root["ENCRYEVENTMODULE"] = encryptedModule;
239 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFIENCRY_OR_DECRY_FAIL", "EVENT_VALUE", writer.write(root));
240 }
241
WritePortalStateHiSysEvent(int portalState)242 void WritePortalStateHiSysEvent(int portalState)
243 {
244 Json::Value root;
245 Json::FastWriter writer;
246 root["PORTAL_STATE"] = portalState;
247 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_PORTAL_STATE", "EVENT_VALUE", writer.write(root));
248 }
249
WriteArpInfoHiSysEvent(uint64_t arpRtt,int arpFailedCount)250 void WriteArpInfoHiSysEvent(uint64_t arpRtt, int arpFailedCount)
251 {
252 Json::Value root;
253 Json::FastWriter writer;
254 root["ARP_RTT"] = arpRtt;
255 root["ARP_FAILED_COUNT"] = arpFailedCount;
256 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_ARP_DETECTION_INFO", "EVENT_VALUE", writer.write(root));
257 }
258
WriteLinkInfoHiSysEvent(int signalLevel,int rssi,int band,int linkSpeed)259 void WriteLinkInfoHiSysEvent(int signalLevel, int rssi, int band, int linkSpeed)
260 {
261 Json::Value root;
262 Json::FastWriter writer;
263 root["LEVEL"] = signalLevel;
264 root["BAND"] = band;
265 root["RSSI"] = rssi;
266 root["LINKSPEED"] = linkSpeed;
267 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_LINK_INFO", "EVENT_VALUE", writer.write(root));
268 }
269
WirteConnectTypeHiSysEvent(std::string connectType)270 void WirteConnectTypeHiSysEvent(std::string connectType)
271 {
272 Json::Value root;
273 Json::FastWriter writer;
274 root["CONNECT_TYPE"] = connectType;
275 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_CONNECT_TYPE", "EVENT_VALUE", writer.write(root));
276 }
277
WriteWifiWpaStateHiSysEvent(int state)278 void WriteWifiWpaStateHiSysEvent(int state)
279 {
280 Json::Value root;
281 Json::FastWriter writer;
282 root["WPA_STATE"] = state;
283 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "EVENT_WPA_STATE", "EVENT_VALUE", writer.write(root));
284 }
285
WritePortalAuthExpiredHisysevent(int respCode,int detectNum,time_t connTime,time_t portalAuthTime,bool isNotificationClicked)286 void WritePortalAuthExpiredHisysevent(int respCode, int detectNum, time_t connTime,
287 time_t portalAuthTime, bool isNotificationClicked)
288 {
289 Json::Value root;
290 Json::FastWriter writer;
291 time_t now = time(nullptr);
292 if (now < 0) {
293 now = 0;
294 }
295 int64_t authDura = (now > 0 && portalAuthTime > 0 && now > portalAuthTime) ? now - portalAuthTime : 0;
296 int64_t connDura = (now > 0 && connTime > 0 && now > connTime) ? now - connTime : 0;
297 int64_t authCostDura =
298 (portalAuthTime > 0 && connTime > 0 && portalAuthTime > connTime) ? portalAuthTime - connTime : 0;
299 root["RESP_CODE"] = respCode;
300 root["DURA"] = authDura;
301 root["CONN_DURA"] = connDura;
302 root["AUTH_COST_DURA"] = authCostDura;
303 root["DET_NUM"] = detectNum;
304 root["IS_NOTIFICA_CLICKED"] = isNotificationClicked ? 1 : 0;
305 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "PORTAL_AUTH_EXPIRED", "EVENT_VALUE", writer.write(root));
306 }
307
WriteWifiSelfcureHisysevent(int type)308 void WriteWifiSelfcureHisysevent(int type)
309 {
310 Json::Value root;
311 Json::FastWriter writer;
312 root["WIFI_SELFCURE_TYPE"] = type;
313 WriteEvent("WIFI_CHR_EVENT", "EVENT_NAME", "WIFI_SELFCURE", "EVENT_VALUE", writer.write(root));
314 }
315 } // namespace Wifi
316 } // namespace OHOS