libfprint/libfprint
FIM43-Redeye 7893c2cb36 goodixmoc: Wait for finger removal before completing verify
The goodixmoc driver's verify state machine was missing a
WAIT_FINGER_UP state between IDENTIFY and PWR_BTN_SHIELD_OFF.
After the sensor reported a match/no-match result, the driver
immediately completed the verify operation without waiting for
the finger to be lifted from the sensor.

This caused problems when fprintd retried verification after a
no-match: the finger was still on the sensor, so the same
(wrong) finger was scanned again instantly. On fast match-on-chip
readers, all retry attempts could be exhausted in under a second,
giving the user no time to reposition their finger.

Add GOODIX_VERIFY_WAIT_FINGER_UP to the verify state machine,
mirroring the existing GOODIX_ENROLL_WAIT_FINGER_UP in the
enroll flow. The new state sends MOC_CMD0_FINGER_MODE /
MOC_CMD1_SET_FINGER_UP to the sensor and waits for the finger
to be removed before advancing to PWR_BTN_SHIELD_OFF.

The callback handles the same cases as the enroll equivalent:
- Timeout (5s): retry the finger-up wait
- Protocol error: fail the SSM
- Success: clear FINGER_STATUS_PRESENT and advance

Link: https://gitlab.freedesktop.org/libfprint/fprintd/-/issues/209
2026-03-17 17:55:38 +00:00
..
drivers goodixmoc: Wait for finger removal before completing verify 2026-03-17 17:55:38 +00:00
nbis nbis: fix build on musl 2022-07-03 02:36:55 +01:00
drivers_api.h spi-transfer: Add SPI transfer helper routines 2021-04-08 16:52:20 +00:00
empty_file build: Remove the need to modify sources for new drivers 2018-05-24 12:23:39 +02:00
fp-context.c fp-context: use g_strv_contains instead of manual labor 2024-02-13 15:25:15 +01:00
fp-context.h lib: Major rewrite of the libfprint core and API 2019-11-20 11:03:09 +01:00
fp-device-private.h cleanup: Use non-const pointers for non constant cases 2024-02-19 22:14:14 +01:00
fp-device.c fp-device: Clarify getter for open property 2025-12-06 03:17:52 +01:00
fp-device.h fp-device: Clarify docs about FP_DEVICE_RETRY_TOO_FAST 2025-02-20 17:20:03 +01:00
fp-image-device-private.h image-device: Remove cancelling boolean from private data 2020-11-04 14:13:00 +01:00
fp-image-device.c Allow FpPrint data to be extended on enrollment. 2021-12-16 12:53:41 +01:00
fp-image-device.h fp-image-device: Properly include fp-device.h 2020-06-16 22:49:38 +02:00
fp-image.c fp-image: Do not start thread detection task thread if already running 2023-11-24 21:02:50 +01:00
fp-image.h lib: Major rewrite of the libfprint core and API 2019-11-20 11:03:09 +01:00
fp-print-private.h cleanup: Use FPI prefix for all the internal enum types 2019-12-17 14:38:19 +01:00
fp-print.c fp-print: Do not check compile-time macros at runtime 2024-02-13 14:36:46 +01:00
fp-print.h scripts/uncrustify: Use 2-spaces indentation for defines too 2025-02-20 15:50:46 +00:00
fpi-assembling.c assembling: Fix copying only partial tile on overhang 2021-06-23 22:33:07 +02:00
fpi-assembling.h fpi-assemping: Do not include unneeded headers and do not use absolute search paths 2021-03-03 19:40:49 +01:00
fpi-byte-reader.c libfprint: Use g_memdup2 everywhere 2022-09-27 17:10:33 +02:00
fpi-byte-reader.h fpi-byte-writer/reader: Add autopointers definitions 2024-02-20 17:57:46 +01:00
fpi-byte-utils.h cleanup: Use #pragma once everywhere 2019-12-17 14:38:19 +01:00
fpi-byte-writer.c fpi-byte-writer: Zero-init the allocated data by default 2024-02-20 17:57:46 +01:00
fpi-byte-writer.h fpi-byte-writer: Add change pos method 2024-02-20 17:57:46 +01:00
fpi-compat.h build: Build-depend on glib 2.68 2024-02-19 22:23:02 +01:00
fpi-context.h compat: Add compatibility defines for older GLib 2020-02-10 11:40:40 +01:00
fpi-device.c fp-device: add FP_DEVICE_RETRY_TOO_FAST error code 2025-02-13 19:20:10 +00:00
fpi-device.h doc: Fix broken documentation for FpiDeviceUdevSubtypeFlags enum 2021-11-15 17:10:44 -05:00
fpi-image-device.c fpi-device: Clarify transfer of errors in device complete tasks 2024-04-17 17:00:47 +00:00
fpi-image-device.h image-device: Redefine internal states and valid transitions 2020-11-04 14:13:00 +01:00
fpi-image.c fp-image: Remove config.h inclusion in fpi-header 2022-10-13 20:35:52 +00:00
fpi-image.h fp-image: Simplify minutiae detection tasks 2023-11-21 16:43:04 +00:00
fpi-log.h scripts/uncrustify: Use 2-spaces indentation for defines too 2025-02-20 15:50:46 +00:00
fpi-minutiae.h cleanup: Don't make nbis depend on libfprint built-sources 2019-12-04 18:50:46 +01:00
fpi-print.c libfprint: Use g_memdup2 everywhere 2022-09-27 17:10:33 +02:00
fpi-print.h print: Fix indentation 2022-06-09 15:36:10 +02:00
fpi-spi-transfer.c spi: Fix pointer cast on 32bit architectures 2021-07-06 20:56:16 +00:00
fpi-spi-transfer.h spi-transfer: Add SPI transfer helper routines 2021-04-08 16:52:20 +00:00
fpi-ssm.c cleanup: Use non-const pointers for non constant cases 2024-02-19 22:14:14 +01:00
fpi-ssm.h scripts/uncrustify: Use 2-spaces indentation for defines too 2025-02-20 15:50:46 +00:00
fpi-usb-transfer.c usb-transfer: Use fpi_device_add_timeout instead of g_idle_add 2021-04-28 22:16:37 +02:00
fpi-usb-transfer.h usb: Annotate access to USB buffers 2020-10-07 13:22:18 +02:00
fprint-list-metainfo.c libfprint/fprint-list-metainfo: Generate AppStream metainfo 2025-02-20 15:50:46 +00:00
fprint-list-supported-devices.c Fix typo of libfprint in supported devices list 2024-02-13 16:13:10 +00:00
fprint-list-udev-hwdb.c data/autosuspend.hwdb: Sync with unsupported devices wiki 2026-02-10 05:41:06 +00:00
fprint-list-udev-rules.c list-udev-rules: Add udev rule generation for SPI 2021-06-22 19:13:48 +00:00
fprint.h Uncrustify everything except for nbis 2019-11-20 20:38:06 +01:00
libfprint.ver fprint: Move drivers to private internal library 2019-12-12 19:03:57 +01:00
meson.build build: Ignore -Werror=unused-but-set-variable for nbis 2026-02-10 06:33:00 +01:00