From cf08e5e8a3a8b67480a664a4e9967835efe21a4a Mon Sep 17 00:00:00 2001 From: Kevin Chyn Date: Tue, 14 Feb 2017 14:32:30 -0800 Subject: implemented enumerate method in fingerprintservice fixes bug 35358801 Test: ran enumeration in template with 1) more fingerprints in fingerprintd 2) more fingerprints in framework 3) no fingerprints in fingerprintd, but fingerprints in framework 4) no fingerprints in framework, but fingerprints in fingerprintd Change-Id: If876ad0867360d1d05d6b12866a529024860d88a --- fingerprint/fingerprint.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'fingerprint') diff --git a/fingerprint/fingerprint.c b/fingerprint/fingerprint.c index 4112d858..60410058 100644 --- a/fingerprint/fingerprint.c +++ b/fingerprint/fingerprint.c @@ -417,13 +417,21 @@ static int fingerprint_enumerate(struct fingerprint_device *device) { fingerprint_msg_t message = {0, {0}}; message.type = FINGERPRINT_TEMPLATE_ENUMERATING; message.data.enumerated.finger.gid = qdev->group_id; - for (int i = 0; i < MAX_NUM_FINGERS; i++) { - if (qdev->listener.secureid[i] != 0 || - qdev->listener.fingerid[i] != 0) { - template_count--; - message.data.enumerated.remaining_templates = template_count; - message.data.enumerated.finger.fid = qdev->listener.fingerid[i]; - qdev->device.notify(&message); + + if(template_count == 0) { + message.data.enumerated.remaining_templates = 0; + message.data.enumerated.finger.fid = 0; + qdev->device.notify(&message); + } + else { + for (int i = 0; i < MAX_NUM_FINGERS; i++) { + if (qdev->listener.secureid[i] != 0 || + qdev->listener.fingerid[i] != 0) { + template_count--; + message.data.enumerated.remaining_templates = template_count; + message.data.enumerated.finger.fid = qdev->listener.fingerid[i]; + qdev->device.notify(&message); + } } } -- cgit v1.2.3