From f9e0a7479a1fcc2e5bca9dedf5d23771b2d7c049 Mon Sep 17 00:00:00 2001 From: TheScarastic Date: Wed, 28 Mar 2018 02:14:01 +0300 Subject: [PATCH] update fp wrapper --- fingerprint/FingerprintWrapper.cpp | 34 +++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/fingerprint/FingerprintWrapper.cpp b/fingerprint/FingerprintWrapper.cpp index 5da0641..c9ca090 100644 --- a/fingerprint/FingerprintWrapper.cpp +++ b/fingerprint/FingerprintWrapper.cpp @@ -99,6 +99,34 @@ static int cancel(struct fingerprint_device *dev) return device->vendor.device->cancel(device->vendor.device); } +#define MAX_FINGERPRINTS 100 + +typedef int (*enumerate_2_0)(struct fingerprint_device *dev, fingerprint_finger_id_t *results, + uint32_t *max_size); + +static int enumerate_pre_2_1(struct fingerprint_device *dev) +{ + device_t *device = (device_t *) dev; + fingerprint_finger_id_t results[MAX_FINGERPRINTS]; + uint32_t n = MAX_FINGERPRINTS; + enumerate_2_0 enumerate = (enumerate_2_0) device->vendor.device->enumerate; + int rv = enumerate(device->vendor.device, results, &n); + + if (rv == 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; + device->base.notify(&msg); + } + } + + return rv; +} + static int enumerate(struct fingerprint_device *dev) { device_t *device = (device_t *) dev; @@ -168,7 +196,11 @@ static int device_open(const hw_module_t *module, const char *name, hw_device_t device->base.post_enroll = post_enroll; device->base.get_authenticator_id = get_authenticator_id; device->base.cancel = cancel; - device->base.enumerate = enumerate; + if (vendor.module->common.module_api_version >= FINGERPRINT_MODULE_API_VERSION_2_1) { + device->base.enumerate = enumerate; + } else { + device->base.enumerate = enumerate_pre_2_1; + } device->base.remove = remove; device->base.set_active_group = set_active_group; device->base.authenticate = authenticate; -- GitLab