goodixmoc: support finger status report
there is no specific API for report finger status, finger needed status is set when captrue sample cmd send, once cmd receive correct, finger is pressing on sensor.
This commit is contained in:
parent
943c64d96f
commit
8254b9e99e
2 changed files with 20 additions and 2 deletions
|
@ -331,7 +331,9 @@ fp_verify_capture_cb (FpiDeviceGoodixMoc *self,
|
||||||
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
fpi_device_retry_new (FP_DEVICE_RETRY_GENERAL));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||||
|
FP_FINGER_STATUS_PRESENT,
|
||||||
|
FP_FINGER_STATUS_NONE);
|
||||||
if (resp->capture_data_resp.img_quality == 0)
|
if (resp->capture_data_resp.img_quality == 0)
|
||||||
{
|
{
|
||||||
fpi_ssm_mark_failed (self->task_ssm,
|
fpi_ssm_mark_failed (self->task_ssm,
|
||||||
|
@ -435,6 +437,9 @@ fp_verify_sm_run_state (FpiSsm *ssm, FpDevice *device)
|
||||||
switch (fpi_ssm_get_cur_state (ssm))
|
switch (fpi_ssm_get_cur_state (ssm))
|
||||||
{
|
{
|
||||||
case FP_VERIFY_CAPTURE:
|
case FP_VERIFY_CAPTURE:
|
||||||
|
fpi_device_report_finger_status_changes (device,
|
||||||
|
FP_FINGER_STATUS_NEEDED,
|
||||||
|
FP_FINGER_STATUS_NONE);
|
||||||
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||||
true,
|
true,
|
||||||
(const guint8 *) ¶m,
|
(const guint8 *) ¶m,
|
||||||
|
@ -629,7 +634,9 @@ fp_enroll_capture_cb (FpiDeviceGoodixMoc *self,
|
||||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||||
|
FP_FINGER_STATUS_PRESENT,
|
||||||
|
FP_FINGER_STATUS_NONE);
|
||||||
if ((resp->capture_data_resp.img_quality < self->sensorcfg->config[4]) ||
|
if ((resp->capture_data_resp.img_quality < self->sensorcfg->config[4]) ||
|
||||||
(resp->capture_data_resp.img_coverage < self->sensorcfg->config[5]))
|
(resp->capture_data_resp.img_coverage < self->sensorcfg->config[5]))
|
||||||
{
|
{
|
||||||
|
@ -764,6 +771,9 @@ fp_finger_mode_cb (FpiDeviceGoodixMoc *self,
|
||||||
"Switch finger mode failed"));
|
"Switch finger mode failed"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
fpi_device_report_finger_status_changes (FP_DEVICE (self),
|
||||||
|
FP_FINGER_STATUS_NONE,
|
||||||
|
FP_FINGER_STATUS_PRESENT);
|
||||||
if (self->enroll_stage < self->max_enroll_stage)
|
if (self->enroll_stage < self->max_enroll_stage)
|
||||||
{
|
{
|
||||||
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
fpi_ssm_jump_to_state (self->task_ssm, FP_ENROLL_CAPTURE);
|
||||||
|
@ -826,6 +836,9 @@ fp_enroll_sm_run_state (FpiSsm *ssm, FpDevice *device)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FP_ENROLL_CAPTURE:
|
case FP_ENROLL_CAPTURE:
|
||||||
|
fpi_device_report_finger_status_changes (device,
|
||||||
|
FP_FINGER_STATUS_NEEDED,
|
||||||
|
FP_FINGER_STATUS_NONE);
|
||||||
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
goodix_sensor_cmd (self, MOC_CMD0_CAPTURE_DATA, MOC_CMD1_DEFAULT,
|
||||||
true,
|
true,
|
||||||
(const guint8 *) &dummy,
|
(const guint8 *) &dummy,
|
||||||
|
|
|
@ -20,6 +20,7 @@ d.open_sync()
|
||||||
template = FPrint.Print.new(d)
|
template = FPrint.Print.new(d)
|
||||||
|
|
||||||
def enroll_progress(*args):
|
def enroll_progress(*args):
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NEEDED
|
||||||
print('enroll progress: ' + str(args))
|
print('enroll progress: ' + str(args))
|
||||||
|
|
||||||
def identify_done(dev, res):
|
def identify_done(dev, res):
|
||||||
|
@ -31,7 +32,9 @@ def identify_done(dev, res):
|
||||||
|
|
||||||
# List, enroll, list, verify, identify, delete
|
# List, enroll, list, verify, identify, delete
|
||||||
print("enrolling")
|
print("enrolling")
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
p = d.enroll_sync(template, None, enroll_progress, None)
|
p = d.enroll_sync(template, None, enroll_progress, None)
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
print("enroll done")
|
print("enroll done")
|
||||||
|
|
||||||
print("listing")
|
print("listing")
|
||||||
|
@ -40,7 +43,9 @@ print("listing done")
|
||||||
assert len(stored) == 1
|
assert len(stored) == 1
|
||||||
assert stored[0].equal(p)
|
assert stored[0].equal(p)
|
||||||
print("verifying")
|
print("verifying")
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
verify_res, verify_print = d.verify_sync(p)
|
verify_res, verify_print = d.verify_sync(p)
|
||||||
|
assert d.get_finger_status() == FPrint.FingerStatusFlags.NONE
|
||||||
print("verify done")
|
print("verify done")
|
||||||
del p
|
del p
|
||||||
assert verify_res == True
|
assert verify_res == True
|
||||||
|
|
Loading…
Reference in a new issue