1/* 2 * Copyright (c) 2024 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 "gesturesense_wrapper.h" 17 18#include <dlfcn.h> 19 20#include "define_multimodal.h" 21#include "pointer_event.h" 22 23#undef MMI_LOG_TAG 24#define MMI_LOG_TAG "GesturesenseWrapper" 25 26namespace OHOS { 27namespace MMI { 28namespace { 29const std::string GESTURESENSE_WRAPPER_PATH { "libgesture.z.so" }; 30} // namespace 31 32GesturesenseWrapper::GesturesenseWrapper() {} 33 34GesturesenseWrapper::~GesturesenseWrapper() 35{ 36 CALL_INFO_TRACE; 37 CHKPV(gesturesenseWrapperHandle_); 38 dlclose(gesturesenseWrapperHandle_); 39 gesturesenseWrapperHandle_ = nullptr; 40} 41 42void GesturesenseWrapper::InitGestureSenseWrapper() 43{ 44 CALL_INFO_TRACE; 45 gesturesenseWrapperHandle_ = dlopen(GESTURESENSE_WRAPPER_PATH.c_str(), RTLD_NOW); 46 if (gesturesenseWrapperHandle_ == nullptr) { 47 MMI_HILOGE("libgesture.z.so was not loaded, path:%{private}s, error:%{public}s", 48 GESTURESENSE_WRAPPER_PATH.c_str(), dlerror()); 49 goto fail; 50 return; 51 } 52 touchUp_ = (TOUCH_UP)dlsym(gesturesenseWrapperHandle_, "TouchUp"); 53 if (touchUp_ == nullptr) { 54 MMI_HILOGE("Gesturesense wrapper symbol failed, touchUp_ error:%{public}s", dlerror()); 55 goto fail; 56 return; 57 } 58 getBoundingSquareness_ = (GET_BOUNDING_SQUARENESS)dlsym(gesturesenseWrapperHandle_, "GetBoundingSquareness"); 59 if (getBoundingSquareness_ == nullptr) { 60 MMI_HILOGE("Gesturesense wrapper symbol failed, getBoundingSquareness_ error:%{public}s", dlerror()); 61 goto fail; 62 return; 63 } 64 MMI_HILOGI("Gesturesense wrapper init success"); 65 return; 66fail: 67 dlclose(gesturesenseWrapperHandle_); 68} 69} // namespace MMI 70} // namespace OHOS