Verification infrastructure

Similar model to enrollment.
This commit is contained in:
Daniel Drake
2007-10-14 00:58:45 +01:00
parent 39271b4fe5
commit 68bdfc7868
4 changed files with 100 additions and 2 deletions

View File

@@ -295,6 +295,39 @@ API_EXPORTED int fp_enroll_finger(struct fp_dev *dev,
return ret;
}
API_EXPORTED int fp_verify_finger(struct fp_dev *dev,
struct fp_print_data *enrolled_print)
{
const struct fp_driver *drv = dev->drv;
int r;
if (!enrolled_print) {
fp_err("no print given");
return -EINVAL;
}
if (!drv->verify) {
fp_err("driver %s has no verify func", drv->name);
return -EINVAL;
}
if (!fpi_print_data_compatible(dev, enrolled_print)) {
fp_err("print is not compatible with device");
return -EINVAL;
}
fp_dbg("to be handled by %s", drv->name);
r = drv->verify(dev, enrolled_print);
if (r < 0)
fp_dbg("verify error %d", r);
else if (r == 0)
fp_dbg("result: no match");
else
fp_dbg("result: match");
return r;
}
API_EXPORTED int fp_init(void)
{
fp_dbg("");

View File

@@ -98,6 +98,7 @@ struct fp_driver {
void (*exit)(struct fp_dev *dev);
int (*enroll)(struct fp_dev *dev, gboolean initial, int stage,
struct fp_print_data **print_data);
int (*verify)(struct fp_dev *dev, struct fp_print_data *data);
};
extern const struct fp_driver upekts_driver;

View File

@@ -54,6 +54,18 @@ enum fp_enroll_result {
int fp_enroll_finger(struct fp_dev *dev, struct fp_print_data **print_data);
/* Verification */
enum fp_verify_result {
FP_VERIFY_NO_MATCH = 0,
FP_VERIFY_MATCH = 1,
FP_VERIFY_RETRY = FP_ENROLL_RETRY,
FP_VERIFY_RETRY_TOO_SHORT = FP_ENROLL_RETRY_TOO_SHORT,
FP_VERIFY_RETRY_CENTER_FINGER = FP_ENROLL_RETRY_CENTER_FINGER,
FP_VERIFY_RETRY_REMOVE_FINGER = FP_ENROLL_RETRY_REMOVE_FINGER,
};
int fp_verify_finger(struct fp_dev *dev, struct fp_print_data *enrolled_print);
/* Data handling */
void fp_print_data_free(struct fp_print_data *data);