[fprint] uru4000, number of enroll stages

Timo Teras timo.teras at iki.fi
Tue Jun 24 23:06:41 PDT 2014


On Tue, 24 Jun 2014 22:01:24 +0200
Martin Hejnfelt <martin at duffman.dk> wrote:

> Here's the output, this is just the examples/enroll.c which does the
> same as my own app (which is using async calls).
> I've inserted the "* * * <state>" output via fp_dbg just to make it a
> bit easier (for myself) to see whats going on...
> 
> Found device claimed by Digital Persona U.are.U 4000/4000B/4500 driver
> sync:debug [fp_dev_open] 
> async:debug [fp_async_dev_open] 
> async:debug [fpi_drvcb_open_complete] status 0
> sync:debug [sync_open_cb] status 0
> Opened device. It's now time to enroll your finger.
> 
> You will need to successfully scan your finger 5 times to complete the
> process.
> [...]
> Hope it helps, and thanks :)

It did. Thanks. Forget the earlier patch, it's irrelevant and the
original code is right. Seems the bug is in the generic code and
affects all drivers that are capable of 'finger present' detection.

It seems to be a bug since 2008 but mostly unnoticed due to doing only
that one enrollment.

The following should fix it:

diff --git a/libfprint/imgdev.c b/libfprint/imgdev.c
index f960ee3..3b5d3f3 100644
--- a/libfprint/imgdev.c
+++ b/libfprint/imgdev.c
@@ -159,7 +159,7 @@ void fpi_imgdev_report_finger_status(struct fp_img_dev *imgdev,
                    r > 0 && r != FP_ENROLL_COMPLETE && r != FP_ENROLL_FAIL) {
                        imgdev->action_result = 0;
                        imgdev->action_state = IMG_ACQUIRE_STATE_AWAIT_FINGER_ON;
-                       dev_change_state(imgdev, IMG_ACQUIRE_STATE_AWAIT_FINGER_ON);
+                       dev_change_state(imgdev, IMGDEV_STATE_AWAIT_FINGER_ON);
                }
                break;
        case IMG_ACTION_VERIFY:


More information about the fprint mailing list