diff options
| author | Rashed Abdel-Tawab <rashed@linux.com> | 2017-09-19 17:30:09 -0700 |
|---|---|---|
| committer | Rashed Abdel-Tawab <rashed@linux.com> | 2017-09-21 14:54:43 -0400 |
| commit | 36accfe4ee2b472e2cfccd9d86a1bbd1073e4c56 (patch) | |
| tree | ed7fa83594b783941790a35369c462356e2ecf86 | |
| parent | ec13fd4f4284fd2b66c5329771b21163c2b34595 (diff) | |
| download | android_hardware_lineage_interfaces-36accfe4ee2b472e2cfccd9d86a1bbd1073e4c56.tar.gz android_hardware_lineage_interfaces-36accfe4ee2b472e2cfccd9d86a1bbd1073e4c56.tar.bz2 android_hardware_lineage_interfaces-36accfe4ee2b472e2cfccd9d86a1bbd1073e4c56.zip | |
lineage/interfaces: Add custom HAL 2.0 fingerprint service
Identical to android.hardware.biometrics.fingerprint@2.1-service
but checks for HAL version 2.0 instead of 2.1 and passes the
expected enumerate function to the HAL
Change-Id: Ibe8253297c1712ad1583a058efef5e55ff70720d
| -rw-r--r-- | biometrics/fingerprint/Android.bp | 5 | ||||
| -rw-r--r-- | biometrics/fingerprint/BiometricsFingerprint.cpp | 27 | ||||
| -rw-r--r-- | biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.2.0.rc (renamed from biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.rc) | 2 |
3 files changed, 29 insertions, 5 deletions
diff --git a/biometrics/fingerprint/Android.bp b/biometrics/fingerprint/Android.bp index 4ad1869..583b0cf 100644 --- a/biometrics/fingerprint/Android.bp +++ b/biometrics/fingerprint/Android.bp @@ -1,5 +1,6 @@ // // Copyright (C) 2017 The Android Open Source Project +// Copyright (C) 2017 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. @@ -13,9 +14,9 @@ // See the License for the specific language governing permissions and // limitations under the License. cc_binary { - name: "android.hardware.biometrics.fingerprint@2.1-service", + name: "android.hardware.biometrics.fingerprint@2.1-service.2.0", relative_install_path: "hw", - init_rc: ["android.hardware.biometrics.fingerprint@2.1-service.rc"], + init_rc: ["android.hardware.biometrics.fingerprint@2.1-service.2.0.rc"], srcs: ["service.cpp", "BiometricsFingerprint.cpp"], shared_libs: [ "libutils", diff --git a/biometrics/fingerprint/BiometricsFingerprint.cpp b/biometrics/fingerprint/BiometricsFingerprint.cpp index c6774ca..7cf71b6 100644 --- a/biometrics/fingerprint/BiometricsFingerprint.cpp +++ b/biometrics/fingerprint/BiometricsFingerprint.cpp @@ -33,7 +33,7 @@ namespace V2_1 { namespace implementation { // Supported fingerprint HAL version -static const uint16_t kVersion = HARDWARE_MODULE_API_VERSION(2, 1); +static const uint16_t kVersion = HARDWARE_MODULE_API_VERSION(2, 0); using RequestStatus = android::hardware::biometrics::fingerprint::V2_1::RequestStatus; @@ -176,8 +176,31 @@ Return<RequestStatus> BiometricsFingerprint::cancel() { return ErrorFilter(mDevice->cancel(mDevice)); } +#define MAX_FINGERPRINTS 100 + +typedef int (*enumerate_2_0)(struct fingerprint_device *dev, fingerprint_finger_id_t *results, + uint32_t *max_size); + Return<RequestStatus> BiometricsFingerprint::enumerate() { - return ErrorFilter(mDevice->enumerate(mDevice)); + fingerprint_finger_id_t results[MAX_FINGERPRINTS]; + uint32_t n = MAX_FINGERPRINTS; + enumerate_2_0 enumerate = (enumerate_2_0) mDevice->enumerate; + int ret = enumerate(mDevice, results, &n); + Return<RequestStatus> rv = ErrorFilter(ret); + + if (ret == 0) { + uint32_t i; + fingerprint_msg_t msg; + + msg.type = FINGERPRINT_TEMPLATE_ENUMERATING; + for (i = 0; i < n; i++) { + msg.data.enumerated.finger = results[i]; + msg.data.enumerated.remaining_templates = n - i - 1; + mDevice->notify(&msg); + } + } + + return rv; } Return<RequestStatus> BiometricsFingerprint::remove(uint32_t gid, uint32_t fid) { diff --git a/biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.rc b/biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.2.0.rc index aa767a6..4be55f9 100644 --- a/biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.rc +++ b/biometrics/fingerprint/android.hardware.biometrics.fingerprint@2.1-service.2.0.rc @@ -1,4 +1,4 @@ -service fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service +service fps_hal /vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service.2.0 # "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. |
