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 "dfx_hisysevent.h"
17
18 #include "input_windows_manager.h"
19
20 namespace OHOS {
21 namespace MMI {
22 namespace {
23 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, MMI_LOG_DOMAIN, "DfxHisysevent" };
24 constexpr int32_t INVALID_DEVICE_ID = -1;
25 constexpr uint32_t REPORT_DISPATCH_TIMES = 100;
26 constexpr uint32_t REPORT_COMBO_START_TIMES = 100;
27 constexpr uint32_t POINTER_CLEAR_TIMES = 10;
28 constexpr int32_t CONVERSION_US_TO_MS = 1000;
29 constexpr int32_t TIMES_LEVEL1 = 10;
30 constexpr int32_t TIMES_LEVEL2 = 25;
31 constexpr int32_t TIMES_LEVEL3 = 30;
32 constexpr int32_t TIMES_LEVEL4 = 50;
33 } // namespace
34
OnDeviceConnect(int32_t id,OHOS::HiviewDFX::HiSysEvent::EventType type)35 void DfxHisysevent::OnDeviceConnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type)
36 {
37 std::shared_ptr dev = InputDevMgr->GetInputDevice(id);
38 CHKPV(dev);
39 std::string message;
40 std::string name = "";
41 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::FAULT) {
42 message = "The input_device connection failed for already existing";
43 name = "INPUT_DEV_CONNECTION_FAILURE";
44 } else {
45 message = "The input_device connection succeed";
46 name = "INPUT_DEV_CONNECTION_SUCCESS";
47 }
48 if (id == INT32_MAX) {
49 int32_t ret = HiSysEventWrite(
50 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
51 name,
52 type,
53 "MSG", "The input_device connection failed because the nextId_ exceeded the upper limit");
54 if (ret != 0) {
55 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
56 }
57 } else {
58 int32_t ret = HiSysEventWrite(
59 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
60 name,
61 type,
62 "DEVICE_ID", id,
63 "DEVICE_PHYS", dev->GetPhys(),
64 "DEVICE_NAME", dev->GetName(),
65 "DEVICE_TYPE", dev->GetType(),
66 "MSG", message);
67 if (ret != 0) {
68 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
69 }
70 }
71 }
72
OnDeviceDisconnect(int32_t id,OHOS::HiviewDFX::HiSysEvent::EventType type)73 void DfxHisysevent::OnDeviceDisconnect(int32_t id, OHOS::HiviewDFX::HiSysEvent::EventType type)
74 {
75 if (id == INVALID_DEVICE_ID) {
76 int32_t ret = HiSysEventWrite(
77 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
78 "INPUT_DEV_DISCONNECTION_FAILURE",
79 type,
80 "MSG", "The input device failed to disconnect to server");
81 if (ret != 0) {
82 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
83 }
84 } else {
85 std::shared_ptr dev = InputDevMgr->GetInputDevice(id);
86 CHKPV(dev);
87 int32_t ret = HiSysEventWrite(
88 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
89 "INPUT_DEV_DISCONNECTION_SUCCESS",
90 type,
91 "DEVICE_Id", id,
92 "DEVICE_PHYS", dev->GetPhys(),
93 "DEVICE_NAME", dev->GetName(),
94 "DEVICE_TYPE", dev->GetType(),
95 "MSG", "The input device successfully disconnect to server");
96 if (ret != 0) {
97 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
98 }
99 }
100 }
101
OnClientConnect(const ClientConnectData & data,OHOS::HiviewDFX::HiSysEvent::EventType type)102 void DfxHisysevent::OnClientConnect(const ClientConnectData &data, OHOS::HiviewDFX::HiSysEvent::EventType type)
103 {
104 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
105 int32_t ret = HiSysEventWrite(
106 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
107 "CLIENT_CONNECTION_SUCCESS",
108 type,
109 "PID", data.pid,
110 "UID", data.uid,
111 "MODULE_TYPE", data.moduleType,
112 "SERVER_FD", data.serverFd,
113 "PROGRAMNAME", data.programName,
114 "MSG", "The client successfully connected to the server");
115 if (ret != 0) {
116 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
117 }
118 } else {
119 int32_t ret = HiSysEventWrite(
120 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
121 "CLIENT_CONNECTION_FAILURE",
122 type,
123 "PID", data.pid,
124 "UID", data.uid,
125 "MODULE_TYPE", data.moduleType,
126 "PROGRAMNAME", data.programName,
127 "MSG", "The client failed to connect to the server");
128 if (ret != 0) {
129 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
130 }
131 }
132 }
133
OnClientDisconnect(const SessionPtr & secPtr,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)134 void DfxHisysevent::OnClientDisconnect(const SessionPtr& secPtr, int32_t fd,
135 OHOS::HiviewDFX::HiSysEvent::EventType type)
136 {
137 CHKPV(secPtr);
138 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
139 int32_t ret = HiSysEventWrite(
140 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
141 "CLIENT_DISCONNECTION_SUCCESS",
142 type,
143 "PID", secPtr->GetPid(),
144 "UID", secPtr->GetUid(),
145 "MODULE_TYPE", secPtr->GetModuleType(),
146 "FD", fd,
147 "PROGRAMNAME", secPtr->GetProgramName(),
148 "MSG", "The client successfully disconnected to the server");
149 if (ret != 0) {
150 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
151 }
152 } else {
153 if (secPtr == nullptr) {
154 int32_t ret = HiSysEventWrite(
155 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
156 "CLIENT_DISCONNECTION_FAILURE",
157 type,
158 "MSG", "The client failed to disconnect to the server because secPtr is nullptr");
159 if (ret != 0) {
160 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
161 }
162 } else {
163 int32_t ret = HiSysEventWrite(
164 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
165 "CLIENT_DISCONNECTION_FAILURE",
166 type,
167 "MSG", "The client failed to disconnect to the server because close(fd) return error");
168 if (ret != 0) {
169 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
170 }
171 }
172 }
173 }
174
OnUpdateTargetPointer(std::shared_ptr<PointerEvent> pointer,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)175 void DfxHisysevent::OnUpdateTargetPointer(std::shared_ptr<PointerEvent> pointer, int32_t fd,
176 OHOS::HiviewDFX::HiSysEvent::EventType type)
177 {
178 CHKPV(pointer);
179 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
180 int32_t ret = HiSysEventWrite(
181 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
182 "TARGET_POINTER_EVENT_SUCCESS",
183 type,
184 "EVENTTYPE", pointer->GetEventType(),
185 "AGENT_WINDOWID", pointer->GetAgentWindowId(),
186 "TARGET_WINDOWID", pointer->GetTargetWindowId(),
187 "PID", WinMgr->GetWindowPid(pointer->GetTargetWindowId()),
188 "FD", fd,
189 "MSG", "The window manager successfully update target pointer");
190 if (ret != 0) {
191 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
192 }
193 } else {
194 int32_t ret = HiSysEventWrite(
195 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
196 "TARGET_POINTER_EVENT_FAILURE",
197 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
198 "EVENTTYPE", pointer->GetEventType(),
199 "MSG", "The window manager failed to update target pointer");
200 if (ret != 0) {
201 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
202 }
203 }
204 }
205
OnUpdateTargetKey(std::shared_ptr<KeyEvent> key,int32_t fd,OHOS::HiviewDFX::HiSysEvent::EventType type)206 void DfxHisysevent::OnUpdateTargetKey(std::shared_ptr<KeyEvent> key, int32_t fd,
207 OHOS::HiviewDFX::HiSysEvent::EventType type)
208 {
209 CHKPV(key);
210 if (type == OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR) {
211 int32_t ret = HiSysEventWrite(
212 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
213 "TARGET_KEY_EVENT_SUCCESS",
214 type,
215 "EVENTTYPE", key->GetEventType(),
216 "KEYCODE", key->GetKeyCode(),
217 "ACTION", key->GetAction(),
218 "ACTION_TIME", key->GetActionTime(),
219 "ACTION_STARTTIME", key->GetActionStartTime(),
220 "FLAG", key->GetFlag(),
221 "KEYACTION", key->GetKeyAction(),
222 "FD", fd,
223 "AGENT_WINDOWID", key->GetAgentWindowId(),
224 "TARGET_WINDOWID", key->GetTargetWindowId(),
225 "PID", WinMgr->GetWindowPid(key->GetTargetWindowId()),
226 "MSG", "The window manager successfully update target key");
227 if (ret != 0) {
228 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
229 }
230 } else {
231 int32_t ret = HiSysEventWrite(
232 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
233 "TARGET_KEY_EVENT_FAILURE",
234 type,
235 "EVENTTYPE", key->GetEventType(),
236 "KEYCODE", key->GetKeyCode(),
237 "ACTION", key->GetAction(),
238 "ACTION_TIME", key->GetActionTime(),
239 "ACTION_STARTTIME", key->GetActionStartTime(),
240 "FLAG", key->GetFlag(),
241 "KEYACTION", key->GetKeyAction(),
242 "MSG", "The window manager failed to update target key");
243 if (ret != 0) {
244 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
245 }
246 }
247 }
248
OnFocusWindowChanged(int32_t oldFocusWindowId,int32_t newFocusWindowId,int32_t oldFocusWindowPid,int32_t newFocusWindowPid)249 void DfxHisysevent::OnFocusWindowChanged(int32_t oldFocusWindowId, int32_t newFocusWindowId,
250 int32_t oldFocusWindowPid, int32_t newFocusWindowPid)
251 {
252 int32_t ret = HiSysEventWrite(
253 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
254 "FOCUS_WINDOW_CHANGE",
255 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
256 "OLD_FOCUS_WINDOWID", oldFocusWindowId,
257 "NEW_FOCUS_WINDOWID", newFocusWindowId,
258 "OLD_FOCUS_WINDOWPID", oldFocusWindowPid,
259 "NEW_FOCUS_WINDOWPID", newFocusWindowPid,
260 "MSG", "The focusWindowId changing succeeded");
261 if (ret != 0) {
262 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
263 }
264 }
265
OnZorderWindowChanged(int32_t oldZorderFirstWindowId,int32_t newZorderFirstWindowId,int32_t oldZorderFirstWindowPid,int32_t newZorderFirstWindowPid)266 void DfxHisysevent::OnZorderWindowChanged(int32_t oldZorderFirstWindowId, int32_t newZorderFirstWindowId,
267 int32_t oldZorderFirstWindowPid, int32_t newZorderFirstWindowPid)
268 {
269 int32_t ret = HiSysEventWrite(
270 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
271 "Z_ORDER_WINDOW_CHANGE",
272 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
273 "OLD_ZORDER_FIRST_WINDOWID", oldZorderFirstWindowId,
274 "NEW_ZORDER_FIRST_WINDOWID", newZorderFirstWindowId,
275 "OLD_ZORDER_FIRST_WINDOWPID", oldZorderFirstWindowPid,
276 "NEW_ZORDER_FIRST_WINDOWPID", newZorderFirstWindowPid,
277 "MSG", "The ZorderFirstWindow changing succeeded");
278 if (ret != 0) {
279 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
280 }
281 }
282
OnLidSwitchChanged(int32_t lidSwitch)283 void DfxHisysevent::OnLidSwitchChanged(int32_t lidSwitch)
284 {
285 int32_t ret = HiSysEventWrite(
286 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
287 "LID_SWITCH",
288 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
289 "SWITCH", lidSwitch);
290 if (ret != 0) {
291 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
292 }
293 }
294
ApplicationBlockInput(const SessionPtr & sess)295 void DfxHisysevent::ApplicationBlockInput(const SessionPtr& sess)
296 {
297 int32_t ret = HiSysEventWrite(
298 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
299 "APPLICATION_BLOCK_INPUT",
300 OHOS::HiviewDFX::HiSysEvent::EventType::FAULT,
301 "PID", sess->GetPid(),
302 "UID", sess->GetUid(),
303 "PACKAGE_NAME", sess->GetProgramName(),
304 "PROCESS_NAME", sess->GetProgramName(),
305 "MSG", "User input does not respond");
306 if (ret != 0) {
307 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
308 }
309 }
310
CalcKeyDispTimes()311 void DfxHisysevent::CalcKeyDispTimes()
312 {
313 int64_t endTime = GetSysClockTime();
314 dispCastTime_.totalTimes++;
315 int64_t castTime = (endTime - dispatchStartTime_) / CONVERSION_US_TO_MS;
316 if (castTime <= TIMES_LEVEL1) {
317 dispCastTime_.below10msTimes++;
318 } else if (castTime <= TIMES_LEVEL2) {
319 dispCastTime_.below25msTimes++;
320 } else if (castTime <= TIMES_LEVEL4) {
321 dispCastTime_.below50msTimes++;
322 } else {
323 dispCastTime_.above50msTimes++;
324 }
325 }
326
CalcPointerDispTimes()327 void DfxHisysevent::CalcPointerDispTimes()
328 {
329 int64_t endTime = GetSysClockTime();
330 dispCastTime_.sampleCount++;
331 int64_t castTime = (endTime - dispatchStartTime_) / CONVERSION_US_TO_MS;
332 if (dispCastTime_.sampleCount == POINTER_CLEAR_TIMES) {
333 dispCastTime_.sampleCount = 0;
334 dispCastTime_.totalTimes++;
335 if (castTime <= TIMES_LEVEL1) {
336 dispCastTime_.below10msTimes++;
337 } else if (castTime <= TIMES_LEVEL2) {
338 dispCastTime_.below25msTimes++;
339 } else if (castTime <= TIMES_LEVEL4) {
340 dispCastTime_.below50msTimes++;
341 } else {
342 dispCastTime_.above50msTimes++;
343 }
344 }
345 }
346
ReportDispTimes()347 void DfxHisysevent::ReportDispTimes()
348 {
349 if (dispCastTime_.totalTimes >= REPORT_DISPATCH_TIMES) {
350 int32_t ret = HiSysEventWrite(
351 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
352 "INPUT_DISPATCH_TIME",
353 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
354 "BELOW10MS", dispCastTime_.below10msTimes,
355 "BELOW25MS", dispCastTime_.below25msTimes,
356 "BELOW50MS", dispCastTime_.below50msTimes,
357 "ABOVE50MS", dispCastTime_.above50msTimes,
358 "MSG", "The costing time to dispatch event");
359 if (ret != 0) {
360 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
361 } else {
362 dispCastTime_.sampleCount = 0;
363 dispCastTime_.totalTimes = 0;
364 dispCastTime_.below10msTimes = 0;
365 dispCastTime_.below25msTimes = 0;
366 dispCastTime_.below50msTimes = 0;
367 dispCastTime_.above50msTimes = 0;
368 }
369 }
370 }
371
CalcComboStartTimes(const int32_t keyDownDuration)372 void DfxHisysevent::CalcComboStartTimes(const int32_t keyDownDuration)
373 {
374 int64_t endTime = GetSysClockTime();
375 comboStartCastTime_.totalTimes++;
376 int64_t castTime = (endTime - comboStartTime_) / CONVERSION_US_TO_MS - keyDownDuration;
377 if (castTime <= TIMES_LEVEL1) {
378 comboStartCastTime_.below10msTimes++;
379 } else if (castTime <= TIMES_LEVEL3) {
380 comboStartCastTime_.below30msTimes++;
381 } else if (castTime <= TIMES_LEVEL4) {
382 comboStartCastTime_.below50msTimes++;
383 } else {
384 comboStartCastTime_.above50msTimes++;
385 }
386 }
387
ReportComboStartTimes()388 void DfxHisysevent::ReportComboStartTimes()
389 {
390 if (comboStartCastTime_.totalTimes >= REPORT_COMBO_START_TIMES) {
391 int32_t ret = HiSysEventWrite(
392 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
393 "COMBO_START_TIME",
394 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
395 "BELOW10MS", comboStartCastTime_.below10msTimes,
396 "BELOW30MS", comboStartCastTime_.below30msTimes,
397 "BELOW50MS", comboStartCastTime_.below50msTimes,
398 "ABOVE50MS", comboStartCastTime_.above50msTimes,
399 "MSG", "The costing time to launch application of combination");
400 if (ret != 0) {
401 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
402 } else {
403 comboStartCastTime_.totalTimes = 0;
404 comboStartCastTime_.below10msTimes = 0;
405 comboStartCastTime_.below30msTimes = 0;
406 comboStartCastTime_.below50msTimes = 0;
407 comboStartCastTime_.above50msTimes = 0;
408 }
409 }
410 }
411
ReportPowerInfo(std::shared_ptr<KeyEvent> key,OHOS::HiviewDFX::HiSysEvent::EventType type)412 void DfxHisysevent::ReportPowerInfo(std::shared_ptr<KeyEvent> key, OHOS::HiviewDFX::HiSysEvent::EventType type)
413 {
414 if (key == nullptr) {
415 MMI_HILOGE("get key is failed");
416 return;
417 }
418 if (key->GetKeyAction() == KeyEvent::KEY_ACTION_UP) {
419 int32_t ret = HiSysEventWrite(
420 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
421 "INPUT_POWER_UP",
422 type);
423 if (ret != RET_OK) {
424 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
425 }
426 } else if (key->GetKeyAction() == KeyEvent::KEY_ACTION_DOWN) {
427 int32_t ret = HiSysEventWrite(
428 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
429 "INPUT_POWER_DOWN",
430 type);
431 if (ret != RET_OK) {
432 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
433 }
434 } else {
435 MMI_HILOGW("press power key is error");
436 }
437 }
438
StatisticTouchpadGesture(std::shared_ptr<PointerEvent> pointerEvent)439 void DfxHisysevent::StatisticTouchpadGesture(std::shared_ptr<PointerEvent> pointerEvent)
440 {
441 CHKPV(pointerEvent);
442 int32_t pointerAction = pointerEvent->GetPointerAction();
443 int32_t fingerCount = pointerEvent->GetFingerCount();
444
445 if (pointerAction == PointerEvent::POINTER_ACTION_AXIS_BEGIN) {
446 int32_t ret = HiSysEventWrite(
447 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
448 "TOUCHPAD_PINCH",
449 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
450 "FINGER_COUNT", fingerCount);
451 if (ret != RET_OK) {
452 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
453 }
454 } else if (pointerAction == PointerEvent::POINTER_ACTION_SWIPE_BEGIN) {
455 int32_t ret = HiSysEventWrite(
456 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
457 "TOUCHPAD_SWIPE",
458 OHOS::HiviewDFX::HiSysEvent::EventType::STATISTIC,
459 "FINGER_COUNT", fingerCount);
460 if (ret != RET_OK) {
461 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
462 }
463 } else {
464 MMI_HILOGW("HiviewDFX Statistic touchpad gesture is error, pointer action is invalid.");
465 }
466 }
467
ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode,bool flag)468 void DfxHisysevent::ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, bool flag)
469 {
470 const std::map<uint32_t, std::string> mapSettingCodeToSettingType = {
471 { TOUCHPAD_SCROLL_SETTING, "TOUCHPAD_SCROLL_SETTING" },
472 { TOUCHPAD_SCROLL_DIR_SETTING, "TOUCHPAD_SCROLL_DIR_SETTING" },
473 { TOUCHPAD_TAP_SETTING, "TOUCHPAD_TAP_SETTING" },
474 { TOUCHPAD_SWIPE_SETTING, "TOUCHPAD_SWIPE_SETTING" },
475 { TOUCHPAD_PINCH_SETTING, "TOUCHPAD_PINCH_SETTING" },
476 };
477
478 auto it = mapSettingCodeToSettingType.find(settingCode);
479 if (it == mapSettingCodeToSettingType.end()) {
480 MMI_HILOGE("HiviewDFX Report touchpad setting state is error, setting code is invalid.");
481 return;
482 }
483 std::string name = it->second;
484
485 int32_t ret = HiSysEventWrite(
486 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
487 name,
488 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
489 "SWITCH_STATE", flag);
490 if (ret != RET_OK) {
491 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
492 }
493 }
494
ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode,int32_t value)495 void DfxHisysevent::ReportTouchpadSettingState(TOUCHPAD_SETTING_CODE settingCode, int32_t value)
496 {
497 const std::map<uint32_t, std::string> mapSettingCodeToSettingType = {
498 { TOUCHPAD_POINTER_SPEED_SETTING, "TOUCHPAD_POINTER_SPEED_SETTING" },
499 { TOUCHPAD_RIGHT_CLICK_SETTING, "TOUCHPAD_RIGHT_CLICK_SETTING" },
500 };
501
502 auto it = mapSettingCodeToSettingType.find(settingCode);
503 if (it == mapSettingCodeToSettingType.end()) {
504 MMI_HILOGW("HiviewDFX Report touchpad setting state is error, setting code is invalid.");
505 return;
506 }
507 std::string name = it->second;
508
509 int32_t ret = HiSysEventWrite(
510 OHOS::HiviewDFX::HiSysEvent::Domain::MULTI_MODAL_INPUT,
511 name,
512 OHOS::HiviewDFX::HiSysEvent::EventType::BEHAVIOR,
513 "SWITCH_VALUE", value);
514 if (ret != RET_OK) {
515 MMI_HILOGE("HiviewDFX Write failed, ret:%{public}d", ret);
516 }
517 }
518
519 }
520 }
521
522