hidl: Remove fingerprint HAL
authorTim Zimmermann <tim@linux4.de>
Mon, 22 Jan 2024 16:35:13 +0000 (17:35 +0100)
committerTim Zimmermann <tim@linux4.de>
Mon, 22 Jan 2024 16:35:13 +0000 (17:35 +0100)
* Everyone should be able to switch to the AIDL HAL now

Change-Id: I07e88fb41021e2887c72c8d78076dd06486f3118

hidl/fingerprint/Android.mk [deleted file]
hidl/fingerprint/BiometricsFingerprint.cpp [deleted file]
hidl/fingerprint/BiometricsFingerprint.h [deleted file]
hidl/fingerprint/VendorConstants.h [deleted file]
hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.rc [deleted file]
hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.xml [deleted file]
hidl/fingerprint/service.cpp [deleted file]

diff --git a/hidl/fingerprint/Android.mk b/hidl/fingerprint/Android.mk
deleted file mode 100644 (file)
index acd6bc5..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#
-# Copyright (C) 2019 The LineageOS Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-    BiometricsFingerprint.cpp \
-    service.cpp
-
-LOCAL_SHARED_LIBRARIES := \
-    libbase \
-    libhardware \
-    libhidlbase \
-    liblog \
-    libutils \
-    android.hardware.biometrics.fingerprint@2.1 \
-    android.hardware.biometrics.fingerprint@2.2 \
-    android.hardware.biometrics.fingerprint@2.3
-
-ifeq ($(TARGET_SEC_FP_CALL_NOTIFY_ON_CANCEL),true)
-    LOCAL_CFLAGS += -DCALL_NOTIFY_ON_CANCEL
-endif
-
-ifeq ($(TARGET_SEC_FP_USES_PERCENTAGE_SAMPLES),true)
-    LOCAL_CFLAGS += -DUSES_PERCENTAGE_SAMPLES
-endif
-
-ifeq ($(TARGET_SEC_FP_CALL_CANCEL_ON_ENROLL_COMPLETION),true)
-    LOCAL_CFLAGS += -DCALL_CANCEL_ON_ENROLL_COMPLETION
-endif
-
-ifeq ($(TARGET_SEC_FP_HAS_FINGERPRINT_GESTURES),true)
-    LOCAL_CFLAGS += -DHAS_FINGERPRINT_GESTURES
-endif
-
-ifeq ($(TARGET_SEC_FP_REQUEST_FORCE_CALIBRATE),true)
-    LOCAL_CFLAGS += -DREQUEST_FORCE_CALIBRATE
-endif
-
-ifeq ($(TARGET_SEC_FP_REQUEST_TOUCH_EVENT),true)
-    LOCAL_CFLAGS += -DREQUEST_TOUCH_EVENT
-endif
-
-LOCAL_MODULE := android.hardware.biometrics.fingerprint@2.3-service.samsung
-LOCAL_INIT_RC := android.hardware.biometrics.fingerprint@2.3-service.samsung.rc
-LOCAL_VINTF_FRAGMENTS := android.hardware.biometrics.fingerprint@2.3-service.samsung.xml
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_OWNER := samsung
-LOCAL_VENDOR_MODULE := true
-
-include $(BUILD_EXECUTABLE)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/hidl/fingerprint/BiometricsFingerprint.cpp b/hidl/fingerprint/BiometricsFingerprint.cpp
deleted file mode 100644 (file)
index 1e24391..0000000
+++ /dev/null
@@ -1,524 +0,0 @@
-/*
- * Copyright (C) 2019 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#define LOG_TAG "android.hardware.biometrics.fingerprint@2.3-service.samsung"
-
-#include <android-base/logging.h>
-
-#include <hardware/hw_auth_token.h>
-
-#include <hardware/fingerprint.h>
-#include <hardware/hardware.h>
-#include "BiometricsFingerprint.h"
-
-#include <dlfcn.h>
-#include <fstream>
-#include <inttypes.h>
-#include <unistd.h>
-
-#ifdef HAS_FINGERPRINT_GESTURES
-#include <fcntl.h>
-#endif
-
-namespace android {
-namespace hardware {
-namespace biometrics {
-namespace fingerprint {
-namespace V2_3 {
-namespace implementation {
-
-using RequestStatus = android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
-
-BiometricsFingerprint* BiometricsFingerprint::sInstance = nullptr;
-
-BiometricsFingerprint::BiometricsFingerprint() : mClientCallback(nullptr) {
-    sInstance = this;  // keep track of the most recent instance
-    if (!openHal()) {
-        LOG(ERROR) << "Can't open HAL module";
-    }
-
-    std::ifstream in("/sys/devices/virtual/fingerprint/fingerprint/position");
-    mIsUdfps = !!in;
-    if (in)
-        in.close();
-
-#ifdef HAS_FINGERPRINT_GESTURES
-    request(FINGERPRINT_REQUEST_NAVIGATION_MODE_START, 1);
-
-    uinputFd = open("/dev/uinput", O_WRONLY | O_NONBLOCK);
-    if (uinputFd < 0) {
-        LOG(ERROR) << "Unable to open uinput node";
-        return;
-    }
-
-    int err = ioctl(uinputFd, UI_SET_EVBIT, EV_KEY) |
-          ioctl(uinputFd, UI_SET_KEYBIT, KEY_UP) |
-          ioctl(uinputFd, UI_SET_KEYBIT, KEY_DOWN);
-    if (err != 0) {
-        LOG(ERROR) << "Unable to enable key events";
-        return;
-    }
-
-    struct uinput_user_dev uidev;
-    sprintf(uidev.name, "uinput-sec-fp");
-    uidev.id.bustype = BUS_VIRTUAL;
-
-    err = write(uinputFd, &uidev, sizeof(uidev));
-    if (err < 0) {
-       LOG(ERROR) << "Write user device to uinput node failed";
-       return;
-    }
-
-    err = ioctl(uinputFd, UI_DEV_CREATE);
-    if (err < 0) {
-       LOG(ERROR) << "Unable to create uinput device";
-       return;
-    }
-
-    LOG(INFO) << "Successfully registered uinput-sec-fp for fingerprint gestures";
-#endif
-}
-
-BiometricsFingerprint::~BiometricsFingerprint() {
-    if (ss_fingerprint_close() != 0) {
-        LOG(ERROR) << "Can't close HAL module";
-    }
-}
-
-Return<bool> BiometricsFingerprint::isUdfps(uint32_t) {
-    return mIsUdfps;
-}
-
-Return<void> BiometricsFingerprint::onFingerDown(uint32_t, uint32_t, float, float) {
-#ifdef REQUEST_TOUCH_EVENT
-    request(SEM_REQUEST_TOUCH_EVENT, 2);
-#endif
-    return Void();
-}
-
-Return<void> BiometricsFingerprint::onFingerUp() {
-#ifdef REQUEST_TOUCH_EVENT
-    request(SEM_REQUEST_TOUCH_EVENT, 1);
-#endif
-    return Void();
-}
-
-Return<RequestStatus> BiometricsFingerprint::ErrorFilter(int32_t error) {
-    switch (error) {
-        case 0:
-            return RequestStatus::SYS_OK;
-        case -2:
-            return RequestStatus::SYS_ENOENT;
-        case -4:
-            return RequestStatus::SYS_EINTR;
-        case -5:
-            return RequestStatus::SYS_EIO;
-        case -11:
-            return RequestStatus::SYS_EAGAIN;
-        case -12:
-            return RequestStatus::SYS_ENOMEM;
-        case -13:
-            return RequestStatus::SYS_EACCES;
-        case -14:
-            return RequestStatus::SYS_EFAULT;
-        case -16:
-            return RequestStatus::SYS_EBUSY;
-        case -22:
-            return RequestStatus::SYS_EINVAL;
-        case -28:
-            return RequestStatus::SYS_ENOSPC;
-        case -110:
-            return RequestStatus::SYS_ETIMEDOUT;
-        default:
-            LOG(ERROR) << "An unknown error returned from fingerprint vendor library: " << error;
-            return RequestStatus::SYS_UNKNOWN;
-    }
-}
-
-// Translate from errors returned by traditional HAL (see fingerprint.h) to
-// HIDL-compliant FingerprintError.
-FingerprintError BiometricsFingerprint::VendorErrorFilter(int32_t error, int32_t* vendorCode) {
-    *vendorCode = 0;
-    switch (error) {
-        case FINGERPRINT_ERROR_HW_UNAVAILABLE:
-            return FingerprintError::ERROR_HW_UNAVAILABLE;
-        case FINGERPRINT_ERROR_UNABLE_TO_PROCESS:
-            return FingerprintError::ERROR_UNABLE_TO_PROCESS;
-        case FINGERPRINT_ERROR_TIMEOUT:
-            return FingerprintError::ERROR_TIMEOUT;
-        case FINGERPRINT_ERROR_NO_SPACE:
-            return FingerprintError::ERROR_NO_SPACE;
-        case FINGERPRINT_ERROR_CANCELED:
-            return FingerprintError::ERROR_CANCELED;
-        case FINGERPRINT_ERROR_UNABLE_TO_REMOVE:
-            return FingerprintError::ERROR_UNABLE_TO_REMOVE;
-        case FINGERPRINT_ERROR_LOCKOUT:
-            return FingerprintError::ERROR_LOCKOUT;
-        default:
-            if (error >= FINGERPRINT_ERROR_VENDOR_BASE) {
-                // vendor specific code.
-                *vendorCode = error - FINGERPRINT_ERROR_VENDOR_BASE;
-                return FingerprintError::ERROR_VENDOR;
-            }
-    }
-    LOG(ERROR) << "Unknown error from fingerprint vendor library: " << error;
-    return FingerprintError::ERROR_UNABLE_TO_PROCESS;
-}
-
-// Translate acquired messages returned by traditional HAL (see fingerprint.h)
-// to HIDL-compliant FingerprintAcquiredInfo.
-FingerprintAcquiredInfo BiometricsFingerprint::VendorAcquiredFilter(int32_t info,
-                                                                    int32_t* vendorCode) {
-    *vendorCode = 0;
-    switch (info) {
-        case FINGERPRINT_ACQUIRED_GOOD:
-            return FingerprintAcquiredInfo::ACQUIRED_GOOD;
-        case FINGERPRINT_ACQUIRED_PARTIAL:
-            return FingerprintAcquiredInfo::ACQUIRED_PARTIAL;
-        case FINGERPRINT_ACQUIRED_INSUFFICIENT:
-            return FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT;
-        case FINGERPRINT_ACQUIRED_IMAGER_DIRTY:
-            return FingerprintAcquiredInfo::ACQUIRED_IMAGER_DIRTY;
-        case FINGERPRINT_ACQUIRED_TOO_SLOW:
-            return FingerprintAcquiredInfo::ACQUIRED_TOO_SLOW;
-        case FINGERPRINT_ACQUIRED_TOO_FAST:
-            return FingerprintAcquiredInfo::ACQUIRED_TOO_FAST;
-        default:
-            if (info >= FINGERPRINT_ACQUIRED_VENDOR_BASE) {
-                // vendor specific code.
-                *vendorCode = info - FINGERPRINT_ACQUIRED_VENDOR_BASE;
-                return FingerprintAcquiredInfo::ACQUIRED_VENDOR;
-            }
-    }
-    LOG(ERROR) << "Unknown acquiredmsg from fingerprint vendor library: " << info;
-    return FingerprintAcquiredInfo::ACQUIRED_INSUFFICIENT;
-}
-
-Return<uint64_t> BiometricsFingerprint::setNotify(
-    const sp<IBiometricsFingerprintClientCallback>& clientCallback) {
-    std::lock_guard<std::mutex> lock(mClientCallbackMutex);
-    mClientCallback = clientCallback;
-    // This is here because HAL 2.3 doesn't have a way to propagate a
-    // unique token for its driver. Subsequent versions should send a unique
-    // token for each call to setNotify(). This is fine as long as there's only
-    // one fingerprint device on the platform.
-    return reinterpret_cast<uint64_t>(this);
-}
-
-Return<uint64_t> BiometricsFingerprint::preEnroll() {
-    return ss_fingerprint_pre_enroll();
-}
-
-Return<RequestStatus> BiometricsFingerprint::enroll(const hidl_array<uint8_t, 69>& hat,
-                                                    uint32_t gid, uint32_t timeoutSec) {
-    const hw_auth_token_t* authToken = reinterpret_cast<const hw_auth_token_t*>(hat.data());
-
-#ifdef REQUEST_FORCE_CALIBRATE
-    request(SEM_REQUEST_FORCE_CBGE, 1);
-#endif
-
-    return ErrorFilter(ss_fingerprint_enroll(authToken, gid, timeoutSec));
-}
-
-Return<RequestStatus> BiometricsFingerprint::postEnroll() {
-    return ErrorFilter(ss_fingerprint_post_enroll());
-}
-
-Return<uint64_t> BiometricsFingerprint::getAuthenticatorId() {
-    return ss_fingerprint_get_auth_id();
-}
-
-Return<RequestStatus> BiometricsFingerprint::cancel() {
-    int32_t ret = ss_fingerprint_cancel();
-
-#ifdef CALL_NOTIFY_ON_CANCEL
-    if (ret == 0) {
-        fingerprint_msg_t msg{};
-        msg.type = FINGERPRINT_ERROR;
-        msg.data.error = FINGERPRINT_ERROR_CANCELED;
-        notify(&msg);
-    }
-#endif
-
-    return ErrorFilter(ret);
-}
-
-Return<RequestStatus> BiometricsFingerprint::enumerate() {
-    if (ss_fingerprint_enumerate != nullptr) {
-        return ErrorFilter(ss_fingerprint_enumerate());
-    }
-
-    return RequestStatus::SYS_UNKNOWN;
-}
-
-Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) {
-    return ErrorFilter(ss_fingerprint_remove(gid, fid));
-}
-
-Return<RequestStatus> BiometricsFingerprint::setActiveGroup(uint32_t gid,
-                                                            const hidl_string& storePath) {
-    if (storePath.size() >= PATH_MAX || storePath.size() <= 0) {
-        LOG(ERROR) << "Bad path length: " << storePath.size();
-        return RequestStatus::SYS_EINVAL;
-    }
-
-    if (access(storePath.c_str(), W_OK)) {
-        return RequestStatus::SYS_EINVAL;
-    }
-
-    return ErrorFilter(ss_fingerprint_set_active_group(gid, storePath.c_str()));
-}
-
-Return<RequestStatus> BiometricsFingerprint::authenticate(uint64_t operationId, uint32_t gid) {
-    return ErrorFilter(ss_fingerprint_authenticate(operationId, gid));
-}
-
-IBiometricsFingerprint* BiometricsFingerprint::getInstance() {
-    if (!sInstance) {
-        sInstance = new BiometricsFingerprint();
-    }
-    return sInstance;
-}
-
-bool BiometricsFingerprint::openHal() {
-    void* handle = dlopen("libbauthserver.so", RTLD_NOW);
-    if (handle) {
-        int err;
-
-        ss_fingerprint_close =
-            reinterpret_cast<typeof(ss_fingerprint_close)>(dlsym(handle, "ss_fingerprint_close"));
-        ss_fingerprint_open =
-            reinterpret_cast<typeof(ss_fingerprint_open)>(dlsym(handle, "ss_fingerprint_open"));
-
-        ss_set_notify_callback = reinterpret_cast<typeof(ss_set_notify_callback)>(
-            dlsym(handle, "ss_set_notify_callback"));
-        ss_fingerprint_pre_enroll = reinterpret_cast<typeof(ss_fingerprint_pre_enroll)>(
-            dlsym(handle, "ss_fingerprint_pre_enroll"));
-        ss_fingerprint_enroll =
-            reinterpret_cast<typeof(ss_fingerprint_enroll)>(dlsym(handle, "ss_fingerprint_enroll"));
-        ss_fingerprint_post_enroll = reinterpret_cast<typeof(ss_fingerprint_post_enroll)>(
-            dlsym(handle, "ss_fingerprint_post_enroll"));
-        ss_fingerprint_get_auth_id = reinterpret_cast<typeof(ss_fingerprint_get_auth_id)>(
-            dlsym(handle, "ss_fingerprint_get_auth_id"));
-        ss_fingerprint_cancel =
-            reinterpret_cast<typeof(ss_fingerprint_cancel)>(dlsym(handle, "ss_fingerprint_cancel"));
-        ss_fingerprint_enumerate = reinterpret_cast<typeof(ss_fingerprint_enumerate)>(
-            dlsym(handle, "ss_fingerprint_enumerate"));
-        ss_fingerprint_remove =
-            reinterpret_cast<typeof(ss_fingerprint_remove)>(dlsym(handle, "ss_fingerprint_remove"));
-        ss_fingerprint_set_active_group = reinterpret_cast<typeof(ss_fingerprint_set_active_group)>(
-            dlsym(handle, "ss_fingerprint_set_active_group"));
-        ss_fingerprint_authenticate = reinterpret_cast<typeof(ss_fingerprint_authenticate)>(
-            dlsym(handle, "ss_fingerprint_authenticate"));
-        ss_fingerprint_request = reinterpret_cast<typeof(ss_fingerprint_request)>(
-            dlsym(handle, "ss_fingerprint_request"));
-
-        if ((err = ss_fingerprint_open(nullptr)) != 0) {
-            LOG(ERROR) << "Can't open fingerprint, error: " << err;
-            return false;
-        }
-
-        if ((err = ss_set_notify_callback(BiometricsFingerprint::notify)) != 0) {
-            LOG(ERROR) << "Can't register fingerprint module callback, error: " << err;
-            return false;
-        }
-
-        return true;
-    }
-
-    return false;
-}
-
-void BiometricsFingerprint::notify(const fingerprint_msg_t* msg) {
-    BiometricsFingerprint* thisPtr =
-        static_cast<BiometricsFingerprint*>(BiometricsFingerprint::getInstance());
-    std::lock_guard<std::mutex> lock(thisPtr->mClientCallbackMutex);
-    if (thisPtr == nullptr || thisPtr->mClientCallback == nullptr) {
-        LOG(ERROR) << "Receiving callbacks before the client callback is registered.";
-        return;
-    }
-    const uint64_t devId = 1;
-    switch (msg->type) {
-        case FINGERPRINT_ERROR: {
-            int32_t vendorCode = 0;
-            FingerprintError result = VendorErrorFilter(msg->data.error, &vendorCode);
-            LOG(DEBUG) << "onError(" << static_cast<int>(result) << ")";
-            if (!thisPtr->mClientCallback->onError(devId, result, vendorCode).isOk()) {
-                LOG(ERROR) << "failed to invoke fingerprint onError callback";
-            }
-        } break;
-        case FINGERPRINT_ACQUIRED: {
-            if (msg->data.acquired.acquired_info > SEM_FINGERPRINT_EVENT_BASE) {
-                thisPtr->handleEvent(msg->data.acquired.acquired_info);
-                return;
-            }
-            int32_t vendorCode = 0;
-            FingerprintAcquiredInfo result =
-                VendorAcquiredFilter(msg->data.acquired.acquired_info, &vendorCode);
-            LOG(DEBUG) << "onAcquired(" << static_cast<int>(result) << ")";
-            if (!thisPtr->mClientCallback->onAcquired(devId, result, vendorCode).isOk()) {
-                LOG(ERROR) << "failed to invoke fingerprint onAcquired callback";
-            }
-        } break;
-        case FINGERPRINT_TEMPLATE_ENROLLING:
-#ifdef USES_PERCENTAGE_SAMPLES
-            const_cast<fingerprint_msg_t*>(msg)->data.enroll.samples_remaining =
-                100 - msg->data.enroll.samples_remaining;
-#endif
-#ifdef CALL_CANCEL_ON_ENROLL_COMPLETION
-            if(msg->data.enroll.samples_remaining == 0) {
-                thisPtr->ss_fingerprint_cancel();
-            }
-#endif
-            LOG(DEBUG) << "onEnrollResult(fid=" << msg->data.enroll.finger.fid
-                       << ", gid=" << msg->data.enroll.finger.gid
-                       << ", rem=" << msg->data.enroll.samples_remaining << ")";
-            if (!thisPtr->mClientCallback
-                    ->onEnrollResult(devId, msg->data.enroll.finger.fid,
-                                     msg->data.enroll.finger.gid, msg->data.enroll.samples_remaining)
-                    .isOk()) {
-                LOG(ERROR) << "failed to invoke fingerprint onEnrollResult callback";
-            }
-            break;
-        case FINGERPRINT_TEMPLATE_REMOVED:
-            LOG(DEBUG) << "onRemove(fid=" << msg->data.removed.finger.fid
-                       << ", gid=" << msg->data.removed.finger.gid
-                       << ", rem=" << msg->data.removed.remaining_templates << ")";
-            if (!thisPtr->mClientCallback
-                     ->onRemoved(devId, msg->data.removed.finger.fid, msg->data.removed.finger.gid,
-                                 msg->data.removed.remaining_templates)
-                     .isOk()) {
-                LOG(ERROR) << "failed to invoke fingerprint onRemoved callback";
-            }
-            break;
-        case FINGERPRINT_AUTHENTICATED:
-            LOG(DEBUG) << "onAuthenticated(fid=" << msg->data.authenticated.finger.fid
-                       << ", gid=" << msg->data.authenticated.finger.gid << ")";
-            if (msg->data.authenticated.finger.fid != 0) {
-                const uint8_t* hat = reinterpret_cast<const uint8_t*>(&msg->data.authenticated.hat);
-                const hidl_vec<uint8_t> token(
-                    std::vector<uint8_t>(hat, hat + sizeof(msg->data.authenticated.hat)));
-                if (!thisPtr->mClientCallback
-                         ->onAuthenticated(devId, msg->data.authenticated.finger.fid,
-                                           msg->data.authenticated.finger.gid, token)
-                         .isOk()) {
-                    LOG(ERROR) << "failed to invoke fingerprint onAuthenticated callback";
-                }
-            } else {
-                // Not a recognized fingerprint
-                if (!thisPtr->mClientCallback
-                         ->onAuthenticated(devId, msg->data.authenticated.finger.fid,
-                                           msg->data.authenticated.finger.gid, hidl_vec<uint8_t>())
-                         .isOk()) {
-                    LOG(ERROR) << "failed to invoke fingerprint onAuthenticated callback";
-                }
-            }
-            break;
-        case FINGERPRINT_TEMPLATE_ENUMERATING:
-            LOG(DEBUG) << "onEnumerate(fid=" << msg->data.enumerated.finger.fid
-                       << ", gid=" << msg->data.enumerated.finger.gid
-                       << ", rem=" << msg->data.enumerated.remaining_templates << ")";
-            if (!thisPtr->mClientCallback
-                     ->onEnumerate(devId, msg->data.enumerated.finger.fid,
-                                   msg->data.enumerated.finger.gid,
-                                   msg->data.enumerated.remaining_templates)
-                     .isOk()) {
-                LOG(ERROR) << "failed to invoke fingerprint onEnumerate callback";
-            }
-            break;
-    }
-}
-
-void BiometricsFingerprint::handleEvent(int eventCode) {
-    switch (eventCode) {
-#ifdef HAS_FINGERPRINT_GESTURES
-        case SEM_FINGERPRINT_EVENT_GESTURE_SWIPE_DOWN:
-        case SEM_FINGERPRINT_EVENT_GESTURE_SWIPE_UP:
-            struct input_event event {};
-            int keycode = eventCode == SEM_FINGERPRINT_EVENT_GESTURE_SWIPE_UP ?
-                          KEY_UP : KEY_DOWN;
-
-            // Report the key
-            event.type = EV_KEY;
-            event.code = keycode;
-            event.value = 1;
-            if (write(uinputFd, &event, sizeof(event)) < 0) {
-                LOG(ERROR) << "Write EV_KEY to uinput node failed";
-                return;
-            }
-
-            // Force a flush with an EV_SYN
-            event.type = EV_SYN;
-            event.code = SYN_REPORT;
-            event.value = 0;
-            if (write(uinputFd, &event, sizeof(event)) < 0) {
-                LOG(ERROR) << "Write EV_SYN to uinput node failed";
-                return;
-            }
-
-            // Report the key
-            event.type = EV_KEY;
-            event.code = keycode;
-            event.value = 0;
-            if (write(uinputFd, &event, sizeof(event)) < 0) {
-                LOG(ERROR) << "Write EV_KEY to uinput node failed";
-                return;
-            }
-
-            // Force a flush with an EV_SYN
-            event.type = EV_SYN;
-            event.code = SYN_REPORT;
-            event.value = 0;
-            if (write(uinputFd, &event, sizeof(event)) < 0) {
-                LOG(ERROR) << "Write EV_SYN to uinput node failed";
-                return;
-            }
-        break;
-#endif
-    }
-}
-
-int BiometricsFingerprint::request(int cmd, int param) {
-    // TO-DO: input, output handling not implemented
-    int result = ss_fingerprint_request(cmd, nullptr, 0, nullptr, 0, param);
-    LOG(INFO) << "request(cmd=" << cmd << ", param=" << param << ", result=" << result << ")";
-    return result;
-}
-
-int BiometricsFingerprint::waitForSensor(std::chrono::milliseconds pollWait,
-                                         std::chrono::milliseconds timeOut) {
-    int sensorStatus = SEM_SENSOR_STATUS_WORKING;
-    std::chrono::milliseconds timeWaited = 0ms;
-    while (sensorStatus != SEM_SENSOR_STATUS_OK) {
-        if (sensorStatus == SEM_SENSOR_STATUS_CALIBRATION_ERROR
-                || sensorStatus == SEM_SENSOR_STATUS_ERROR){
-            return -1;
-        }
-        if (timeWaited >= timeOut) {
-            return -2;
-        }
-        sensorStatus = request(FINGERPRINT_REQUEST_GET_SENSOR_STATUS, 0);
-        std::this_thread::sleep_for(pollWait);
-        timeWaited += pollWait;
-    }
-    return 0;
-}
-
-}  // namespace implementation
-}  // namespace V2_3
-}  // namespace fingerprint
-}  // namespace biometrics
-}  // namespace hardware
-}  // namespace android
diff --git a/hidl/fingerprint/BiometricsFingerprint.h b/hidl/fingerprint/BiometricsFingerprint.h
deleted file mode 100644 (file)
index aa860c1..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2019-2022 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-#include <chrono>
-#include <thread>
-
-#ifdef HAS_FINGERPRINT_GESTURES
-#include <linux/uinput.h>
-#endif
-
-#include <hardware/fingerprint.h>
-#include <hardware/hardware.h>
-#include <hidl/MQDescriptor.h>
-#include <hidl/Status.h>
-#include <android/hardware/biometrics/fingerprint/2.3/IBiometricsFingerprint.h>
-#include <android/hardware/biometrics/fingerprint/2.1/types.h>
-
-#include "VendorConstants.h"
-
-namespace android {
-namespace hardware {
-namespace biometrics {
-namespace fingerprint {
-namespace V2_3 {
-namespace implementation {
-
-using namespace std::chrono_literals;
-
-using ::android::sp;
-using ::android::hardware::hidl_string;
-using ::android::hardware::hidl_vec;
-using ::android::hardware::Return;
-using ::android::hardware::Void;
-using ::android::hardware::biometrics::fingerprint::V2_3::IBiometricsFingerprint;
-using ::android::hardware::biometrics::fingerprint::V2_1::IBiometricsFingerprintClientCallback;
-using ::android::hardware::biometrics::fingerprint::V2_1::FingerprintAcquiredInfo;
-using ::android::hardware::biometrics::fingerprint::V2_1::FingerprintError;
-using ::android::hardware::biometrics::fingerprint::V2_1::RequestStatus;
-
-struct BiometricsFingerprint : public IBiometricsFingerprint {
-    BiometricsFingerprint();
-    ~BiometricsFingerprint();
-
-    // Method to wrap legacy HAL with BiometricsFingerprint class
-    static IBiometricsFingerprint* getInstance();
-
-    // Methods from ::android::hardware::biometrics::fingerprint::V2_3::IBiometricsFingerprint follow.
-    Return<uint64_t> setNotify(
-        const sp<IBiometricsFingerprintClientCallback>& clientCallback) override;
-    Return<uint64_t> preEnroll() override;
-    Return<RequestStatus> enroll(const hidl_array<uint8_t, 69>& hat, uint32_t gid,
-                                 uint32_t timeoutSec) override;
-    Return<RequestStatus> postEnroll() override;
-    Return<uint64_t> getAuthenticatorId() override;
-    Return<RequestStatus> cancel() override;
-    Return<RequestStatus> enumerate() override;
-    Return<RequestStatus> remove(uint32_t gid, uint32_t fid) override;
-    Return<RequestStatus> setActiveGroup(uint32_t gid, const hidl_string& storePath) override;
-    Return<RequestStatus> authenticate(uint64_t operationId, uint32_t gid) override;
-    Return<bool> isUdfps(uint32_t sensorID) override;
-    Return<void> onFingerDown(uint32_t x, uint32_t y, float minor, float major) override;
-    Return<void> onFingerUp() override;
-
-  private:
-    bool openHal();
-    int request(int cmd, int param);
-    int waitForSensor(std::chrono::milliseconds pollWait, std::chrono::milliseconds timeOut);
-    static void notify(
-        const fingerprint_msg_t* msg); /* Static callback for legacy HAL implementation */
-    void handleEvent(int eventCode);
-    static Return<RequestStatus> ErrorFilter(int32_t error);
-    static FingerprintError VendorErrorFilter(int32_t error, int32_t* vendorCode);
-    static FingerprintAcquiredInfo VendorAcquiredFilter(int32_t error, int32_t* vendorCode);
-    static BiometricsFingerprint* sInstance;
-
-    std::mutex mClientCallbackMutex;
-    sp<IBiometricsFingerprintClientCallback> mClientCallback;
-    bool mIsUdfps;
-#ifdef HAS_FINGERPRINT_GESTURES
-    int uinputFd;
-#endif
-
-    int (*ss_fingerprint_close)();
-    int (*ss_fingerprint_open)(const char* id);
-
-    int (*ss_set_notify_callback)(fingerprint_notify_t notify);
-    uint64_t (*ss_fingerprint_pre_enroll)();
-    int (*ss_fingerprint_enroll)(const hw_auth_token_t* hat, uint32_t gid, uint32_t timeout_sec);
-    int (*ss_fingerprint_post_enroll)();
-    uint64_t (*ss_fingerprint_get_auth_id)();
-    int (*ss_fingerprint_cancel)();
-    int (*ss_fingerprint_enumerate)();
-    int (*ss_fingerprint_remove)(uint32_t gid, uint32_t fid);
-    int (*ss_fingerprint_set_active_group)(uint32_t gid, const char* store_path);
-    int (*ss_fingerprint_authenticate)(uint64_t operation_id, uint32_t gid);
-    int (*ss_fingerprint_request)(uint32_t cmd, char *inBuf, uint32_t inBuf_length, char *outBuf, uint32_t outBuf_length, uint32_t param);
-};
-
-}  // namespace implementation
-}  // namespace V2_3
-}  // namespace fingerprint
-}  // namespace biometrics
-}  // namespace hardware
-}  // namespace android
diff --git a/hidl/fingerprint/VendorConstants.h b/hidl/fingerprint/VendorConstants.h
deleted file mode 100644 (file)
index 86656b3..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-// SPDX-License-Identifier: Apache-2.0
-// Copyright (C) 2020 The LineageOS Project
-
-#pragma once
-
-// Fingerprint requests
-#define FINGERPRINT_REQUEST_ENROLL_SESSION 1002
-#define FINGERPRINT_REQUEST_ENROLL_TYPE 18
-#define FINGERPRINT_REQUEST_ENUMERATE 11
-#define FINGERPRINT_REQUEST_GET_FP_IDS 1003
-#define FINGERPRINT_REQUEST_GET_MAX_TEMPLATE_NUMBER 1004
-#define FINGERPRINT_REQUEST_GET_SENSOR_INFO 5
-#define FINGERPRINT_REQUEST_GET_SENSOR_STATUS 6
-#define FINGERPRINT_REQUEST_GET_TOUCH_CNT 1007
-#define FINGERPRINT_REQUEST_GET_UNIQUE_ID 7
-#define FINGERPRINT_REQUEST_GET_USERIDS 12
-#define FINGERPRINT_REQUEST_GET_VERSION 4
-#define FINGERPRINT_REQUEST_HAS_FEATURE 1006
-#define FINGERPRINT_REQUEST_LOCKOUT 1001
-#define FINGERPRINT_REQUEST_NAVIGATION_LCD_ONOFF 17
-#define FINGERPRINT_REQUEST_NAVIGATION_MODE_END 16
-#define FINGERPRINT_REQUEST_NAVIGATION_MODE_START 15
-#define FINGERPRINT_REQUEST_PAUSE 0
-#define FINGERPRINT_REQUEST_PROCESS_FIDO 9
-#define FINGERPRINT_REQUEST_REMOVE_FINGER 1000
-#define FINGERPRINT_REQUEST_RESUME 1
-#define FINGERPRINT_REQUEST_SENSOR_TEST_NORMALSCAN 3
-#define FINGERPRINT_REQUEST_SESSION_OPEN 2
-#define FINGERPRINT_REQUEST_SET_ACTIVE_GROUP 8
-#define FINGERPRINT_REQUEST_UPDATE_SID 10
-
-#define SEM_REQUEST_FORCE_CBGE 21
-#define SEM_REQUEST_GET_FINGER_ICON_REMAIN_TIME 1010
-#define SEM_REQUEST_GET_SECURITY_LEVEL 30
-#define SEM_REQUEST_GET_SENSOR_TEST_RESULT 19
-#define SEM_REQUEST_GET_TA_VERSION 10000
-#define SEM_REQUEST_GET_TSP_BLOCK_STATUS 0x3F9
-#define SEM_REQUEST_HIDE_INDISPLAY_AUTH_ANIMATION 0x3F4
-#define SEM_REQUEST_INSTALL_TA 10001
-#define SEM_REQUEST_IS_NEW_MATCHER 27
-#define SEM_REQUEST_IS_TEMPLATE_CHANGED 25
-#define SEM_REQUEST_MASK_CTL 0x3F5
-#define SEM_REQUEST_MOVE_INDISPLAY_ICON 0x3F3
-#define SEM_REQUEST_OPTICAL_CALIBRATION 0x3F8
-#define SEM_REQUEST_REMOVE_ALL_USER 0x3F6
-#define SEM_REQUEST_SET_ASP_LEVEL 20
-#define SEM_REQUEST_SET_BOUNCER_SCREEN_STATUS 0x3FA
-#define SEM_REQUEST_SET_SCREEN_STATUS 0x3F0
-#define SEM_REQUEST_SHOW_INDISPLAY_AUTH_ANIMATION 1009
-#define SEM_REQUEST_TOUCH_EVENT 22
-#define SEM_REQUEST_TOUCH_SENSITIVE_CHANGE 0x3F7
-#define SEM_REQUEST_UPDATE_MATCHER 28
-#define SEM_REQUEST_VENDOR_EGIS_CALIBRATION 23
-#define SEM_REQUEST_VENDOR_QCOM_REMOVE_CBGE 24
-#define SEM_REQUEST_WIRELESS_CHARGER_STATUS 29
-
-// Fingerprint aquired codes
-#define SEM_FINGERPRINT_ACQUIRED_DUPLICATED_IMAGE 1002
-#define SEM_FINGERPRINT_ACQUIRED_LIGHT_TOUCH 1003
-#define SEM_FINGERPRINT_ACQUIRED_TSP_BLOCK 1004
-#define SEM_FINGERPRINT_ACQUIRED_TSP_UNBLOCK 1005
-#define SEM_FINGERPRINT_ACQUIRED_WET_FINGER 1001
-
-// Fingerprint errors
-#define SEM_FINGERPRINT_ERROR_CALIBRATION 1001
-#define SEM_FINGERPRINT_ERROR_DISABLED_BIOMETRICS 5002
-#define SEM_FINGERPRINT_ERROR_INVALID_HW 1005
-#define SEM_FINGERPRINT_ERROR_NEED_TO_RETRY 5000
-#define SEM_FINGERPRINT_ERROR_ONE_HAND_MODE 5001
-#define SEM_FINGERPRINT_ERROR_PATTERN_DETECTED 1007
-#define SEM_FINGERPRINT_ERROR_SERVICE_FAILURE 1003
-#define SEM_FINGERPRINT_ERROR_SMART_VIEW 5003
-#define SEM_FINGERPRINT_ERROR_SYSTEM_FAILURE 1002
-#define SEM_FINGERPRINT_ERROR_TA_UPDATE -100
-#define SEM_FINGERPRINT_ERROR_TEMPLATE_CORRUPTED 1004
-#define SEM_FINGERPRINT_ERROR_TEMPLATE_FORMAT_CHANGED 1006
-#define SEM_FINGERPRINT_ERROR_WIRELESS_CHARGING 5004
-
-// Fingerprint events
-#define SEM_FINGERPRINT_EVENT_BASE 10000
-#define SEM_FINGERPRINT_EVENT_CAPTURE_COMPLETED 10003
-#define SEM_FINGERPRINT_EVENT_CAPTURE_FAILED 10006
-#define SEM_FINGERPRINT_EVENT_CAPTURE_READY 10001
-#define SEM_FINGERPRINT_EVENT_CAPTURE_STARTED 10002
-#define SEM_FINGERPRINT_EVENT_CAPTURE_SUCCESS 10005
-#define SEM_FINGERPRINT_EVENT_FACTORY_SNSR_SCRIPT_END 10009
-#define SEM_FINGERPRINT_EVENT_FACTORY_SNSR_SCRIPT_START 10008
-#define SEM_FINGERPRINT_EVENT_FINGER_LEAVE 10004
-#define SEM_FINGERPRINT_EVENT_FINGER_LEAVE_TIMEOUT 10007
-#define SEM_FINGERPRINT_EVENT_GESTURE_DTAP 20003
-#define SEM_FINGERPRINT_EVENT_GESTURE_LPRESS 20004
-#define SEM_FINGERPRINT_EVENT_GESTURE_SWIPE_DOWN 20002
-#define SEM_FINGERPRINT_EVENT_GESTURE_SWIPE_UP 20001
-#define SEM_FINGERPRINT_EVENT_SPEN_CONTROL_OFF 30002
-#define SEM_FINGERPRINT_EVENT_SPEN_CONTROL_ON 30001
-
-// Fingerprint sensor status codes
-#define SEM_SENSOR_STATUS_CALIBRATION_ERROR 100045
-#define SEM_SENSOR_STATUS_ERROR 100042
-#define SEM_SENSOR_STATUS_OK 100040
-#define SEM_SENSOR_STATUS_WORKING 100041
diff --git a/hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.rc b/hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.rc
deleted file mode 100644 (file)
index ece8399..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-service vendor.fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.3-service.samsung
-    # "class hal" causes a race condition on some devices due to files created
-    # in /data. As a workaround, postpone startup until later in boot once
-    # /data is mounted.
-    class late_start
-    user system
-    group system input uhid
diff --git a/hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.xml b/hidl/fingerprint/android.hardware.biometrics.fingerprint@2.3-service.samsung.xml
deleted file mode 100644 (file)
index 26f02cd..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<manifest version="1.0" type="device">
-    <hal format="hidl" override="true">
-        <name>android.hardware.biometrics.fingerprint</name>
-        <transport>hwbinder</transport>
-        <version>2.3</version>
-        <interface>
-            <name>IBiometricsFingerprint</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/hidl/fingerprint/service.cpp b/hidl/fingerprint/service.cpp
deleted file mode 100644 (file)
index af1113d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2019 The LineageOS Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#define LOG_TAG "android.hardware.biometrics.fingerprint@2.3-service.samsung"
-
-#include <android-base/logging.h>
-#include <hidl/HidlTransportSupport.h>
-#include <utils/Errors.h>
-
-#include "BiometricsFingerprint.h"
-
-using android::hardware::configureRpcThreadpool;
-using android::hardware::joinRpcThreadpool;
-
-using android::hardware::biometrics::fingerprint::V2_3::IBiometricsFingerprint;
-using android::hardware::biometrics::fingerprint::V2_3::implementation::BiometricsFingerprint;
-
-using android::OK;
-using android::sp;
-
-int main() {
-    android::sp<IBiometricsFingerprint> bio = BiometricsFingerprint::getInstance();
-
-    configureRpcThreadpool(1, true);
-
-    if (bio == nullptr || bio->registerAsService() != OK) {
-        LOG(ERROR) << "Could not register service for Fingerprint HAL";
-        goto shutdown;
-    }
-
-    LOG(INFO) << "Fingerprint HAL service is Ready.";
-    joinRpcThreadpool();
-
-shutdown:
-    // In normal operation, we don't expect the thread pool to shutdown
-    LOG(ERROR) << "Fingerprint HAL failed to join thread pool.";
-    return 1;
-}