1094332d3Sopenharmony_ci/* 2094332d3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 3094332d3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4094332d3Sopenharmony_ci * you may not use this file except in compliance with the License. 5094332d3Sopenharmony_ci * You may obtain a copy of the License at 6094332d3Sopenharmony_ci * 7094332d3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8094332d3Sopenharmony_ci * 9094332d3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10094332d3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11094332d3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12094332d3Sopenharmony_ci * See the License for the specific language governing permissions and 13094332d3Sopenharmony_ci * limitations under the License. 14094332d3Sopenharmony_ci */ 15094332d3Sopenharmony_ci 16094332d3Sopenharmony_ci#include "v1_0/hid_ddk_service.h" 17094332d3Sopenharmony_ci#include <hdf_base.h> 18094332d3Sopenharmony_ci#include "emit_event_manager.h" 19094332d3Sopenharmony_ci#include "hid_ddk_permission.h" 20094332d3Sopenharmony_ci#include "input_uhdf_log.h" 21094332d3Sopenharmony_ci 22094332d3Sopenharmony_ci#define HDF_LOG_TAG hid_ddk_service 23094332d3Sopenharmony_ci 24094332d3Sopenharmony_cinamespace OHOS { 25094332d3Sopenharmony_cinamespace HDI { 26094332d3Sopenharmony_cinamespace Input { 27094332d3Sopenharmony_cinamespace Ddk { 28094332d3Sopenharmony_cinamespace V1_0 { 29094332d3Sopenharmony_cistatic const std::string PERMISSION_NAME = "ohos.permission.ACCESS_DDK_HID"; 30094332d3Sopenharmony_ci 31094332d3Sopenharmony_ciextern "C" IHidDdk *HidDdkImplGetInstance(void) 32094332d3Sopenharmony_ci{ 33094332d3Sopenharmony_ci return new (std::nothrow) HidDdkService(); 34094332d3Sopenharmony_ci} 35094332d3Sopenharmony_ci 36094332d3Sopenharmony_ciint32_t HidDdkService::CreateDevice(const Hid_Device &hidDevice, 37094332d3Sopenharmony_ci const Hid_EventProperties &hidEventProperties, uint32_t &deviceId) 38094332d3Sopenharmony_ci{ 39094332d3Sopenharmony_ci HDF_LOGI("%{public}s create device enter", __func__); 40094332d3Sopenharmony_ci if (!DdkPermissionManager::VerifyPermission(PERMISSION_NAME)) { 41094332d3Sopenharmony_ci HDF_LOGE("%{public}s: no permission", __func__); 42094332d3Sopenharmony_ci return HDF_ERR_NOPERM; 43094332d3Sopenharmony_ci } 44094332d3Sopenharmony_ci 45094332d3Sopenharmony_ci int32_t ret = OHOS::ExternalDeviceManager::EmitEventManager::GetInstance() 46094332d3Sopenharmony_ci .CreateDevice(hidDevice, hidEventProperties); 47094332d3Sopenharmony_ci if (ret < 0) { 48094332d3Sopenharmony_ci HDF_LOGE("%{public}s create device faild, ret=%{public}d", __func__, ret); 49094332d3Sopenharmony_ci return ret; 50094332d3Sopenharmony_ci } 51094332d3Sopenharmony_ci 52094332d3Sopenharmony_ci deviceId = static_cast<uint32_t>(ret); 53094332d3Sopenharmony_ci return Hid_DdkErrCode::HID_DDK_SUCCESS; 54094332d3Sopenharmony_ci} 55094332d3Sopenharmony_ci 56094332d3Sopenharmony_ciint32_t HidDdkService::EmitEvent(uint32_t deviceId, const std::vector<Hid_EmitItem> &items) 57094332d3Sopenharmony_ci{ 58094332d3Sopenharmony_ci HDF_LOGI("%{public}s emit event enter, the id of device = %{public}d", __func__, deviceId); 59094332d3Sopenharmony_ci if (!DdkPermissionManager::VerifyPermission(PERMISSION_NAME)) { 60094332d3Sopenharmony_ci HDF_LOGE("%{public}s: no permission", __func__); 61094332d3Sopenharmony_ci return HDF_ERR_NOPERM; 62094332d3Sopenharmony_ci } 63094332d3Sopenharmony_ci 64094332d3Sopenharmony_ci return OHOS::ExternalDeviceManager::EmitEventManager::GetInstance().EmitEvent(deviceId, items); 65094332d3Sopenharmony_ci} 66094332d3Sopenharmony_ci 67094332d3Sopenharmony_ciint32_t HidDdkService::DestroyDevice(uint32_t deviceId) 68094332d3Sopenharmony_ci{ 69094332d3Sopenharmony_ci HDF_LOGI("%{public}s destroy device enter, the id of device = %{public}d", __func__, deviceId); 70094332d3Sopenharmony_ci if (!DdkPermissionManager::VerifyPermission(PERMISSION_NAME)) { 71094332d3Sopenharmony_ci HDF_LOGE("%{public}s: no permission", __func__); 72094332d3Sopenharmony_ci return HDF_ERR_NOPERM; 73094332d3Sopenharmony_ci } 74094332d3Sopenharmony_ci 75094332d3Sopenharmony_ci return OHOS::ExternalDeviceManager::EmitEventManager::GetInstance().DestroyDevice(deviceId); 76094332d3Sopenharmony_ci} 77094332d3Sopenharmony_ci 78094332d3Sopenharmony_ci} // V1_0 79094332d3Sopenharmony_ci} // Ddk 80094332d3Sopenharmony_ci} // Input 81094332d3Sopenharmony_ci} // HDI 82094332d3Sopenharmony_ci} // OHOS 83