12d4d9a4dSopenharmony_ci/* 22d4d9a4dSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd. 32d4d9a4dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 42d4d9a4dSopenharmony_ci * you may not use this file except in compliance with the License. 52d4d9a4dSopenharmony_ci * You may obtain a copy of the License at 62d4d9a4dSopenharmony_ci * 72d4d9a4dSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 82d4d9a4dSopenharmony_ci * 92d4d9a4dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 102d4d9a4dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 112d4d9a4dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 122d4d9a4dSopenharmony_ci * See the License for the specific language governing permissions and 132d4d9a4dSopenharmony_ci * limitations under the License. 142d4d9a4dSopenharmony_ci */ 152d4d9a4dSopenharmony_ci 162d4d9a4dSopenharmony_ci#ifndef OHOS_VIRTUAL_DEVICE_H 172d4d9a4dSopenharmony_ci#define OHOS_VIRTUAL_DEVICE_H 182d4d9a4dSopenharmony_ci 192d4d9a4dSopenharmony_ci#include <map> 202d4d9a4dSopenharmony_ci#include <string> 212d4d9a4dSopenharmony_ci#include <vector> 222d4d9a4dSopenharmony_ci 232d4d9a4dSopenharmony_ci#include <dirent.h> 242d4d9a4dSopenharmony_ci#include <fcntl.h> 252d4d9a4dSopenharmony_ci#include <unistd.h> 262d4d9a4dSopenharmony_ci 272d4d9a4dSopenharmony_ci#include <linux/input.h> 282d4d9a4dSopenharmony_ci#include "linux/uinput.h" 292d4d9a4dSopenharmony_ci 302d4d9a4dSopenharmony_ci#include "constants_dinput.h" 312d4d9a4dSopenharmony_ci 322d4d9a4dSopenharmony_cinamespace OHOS { 332d4d9a4dSopenharmony_cinamespace DistributedHardware { 342d4d9a4dSopenharmony_cinamespace DistributedInput { 352d4d9a4dSopenharmony_ciclass VirtualDevice { 362d4d9a4dSopenharmony_cipublic: 372d4d9a4dSopenharmony_ci explicit VirtualDevice(const InputDevice &event); 382d4d9a4dSopenharmony_ci virtual ~VirtualDevice(); 392d4d9a4dSopenharmony_ci bool DoIoctl(int32_t fd, int32_t request, const uint32_t value); 402d4d9a4dSopenharmony_ci bool CreateKey(const InputDevice &inputDevice); 412d4d9a4dSopenharmony_ci void SetABSInfo(struct uinput_user_dev &inputUserDev, const InputDevice &inputDevice); 422d4d9a4dSopenharmony_ci bool SetPhys(const std::string &deviceName, const std::string &dhId); 432d4d9a4dSopenharmony_ci bool SetUp(const InputDevice &inputDevice, const std::string &devId, const std::string &dhId); 442d4d9a4dSopenharmony_ci bool InjectInputEvent(const input_event &event); 452d4d9a4dSopenharmony_ci void SetNetWorkId(const std::string &netWorkId); 462d4d9a4dSopenharmony_ci void SetPath(const std::string &path); 472d4d9a4dSopenharmony_ci std::string GetNetWorkId(); 482d4d9a4dSopenharmony_ci std::string GetPath(); 492d4d9a4dSopenharmony_ci uint16_t GetClasses(); 502d4d9a4dSopenharmony_ci 512d4d9a4dSopenharmony_ci int32_t GetDeviceFd(); 522d4d9a4dSopenharmony_ci uint16_t GetDeviceType(); 532d4d9a4dSopenharmony_ci 542d4d9a4dSopenharmony_ciprivate: 552d4d9a4dSopenharmony_ci int32_t fd_ = -1; 562d4d9a4dSopenharmony_ci std::string deviceName_; 572d4d9a4dSopenharmony_ci std::string netWorkId_; 582d4d9a4dSopenharmony_ci std::string path_; 592d4d9a4dSopenharmony_ci const uint16_t busType_; 602d4d9a4dSopenharmony_ci const uint16_t vendorId_; 612d4d9a4dSopenharmony_ci const uint16_t productId_; 622d4d9a4dSopenharmony_ci const uint16_t version_; 632d4d9a4dSopenharmony_ci const uint16_t classes_; 642d4d9a4dSopenharmony_ci struct uinput_user_dev dev_ {}; 652d4d9a4dSopenharmony_ci const std::string pid_ = std::to_string(getpid()); 662d4d9a4dSopenharmony_ci 672d4d9a4dSopenharmony_ciprivate: 682d4d9a4dSopenharmony_ci void RecordEventLog(const input_event &event); 692d4d9a4dSopenharmony_ci}; 702d4d9a4dSopenharmony_ci} // namespace DistributedInput 712d4d9a4dSopenharmony_ci} // namespace DistributedHardware 722d4d9a4dSopenharmony_ci} // namespace OHOS 732d4d9a4dSopenharmony_ci 742d4d9a4dSopenharmony_ci#endif // OHOS_VIRTUAL_DEVICE_H 75