Enrolment infrastructure

This commit is contained in:
Daniel Drake
2007-10-08 19:53:50 +01:00
parent b071f3cdb9
commit 016ff33533
5 changed files with 90 additions and 6 deletions

View File

@@ -162,6 +162,11 @@ API_EXPORTED const struct fp_driver *fp_dev_get_driver(struct fp_dev *dev)
return dev->drv;
}
API_EXPORTED int fp_dev_get_nr_enroll_stages(struct fp_dev *dev)
{
return dev->nr_enroll_stages;
}
API_EXPORTED const char *fp_driver_get_name(const struct fp_driver *drv)
{
return drv->name;
@@ -172,6 +177,16 @@ API_EXPORTED const char *fp_driver_get_full_name(const struct fp_driver *drv)
return drv->full_name;
}
API_EXPORTED enum fp_enroll_status fp_enroll_finger(struct fp_dev *dev,
struct fp_print_data **print_data)
{
const struct fp_driver *drv = dev->drv;
if (!dev->nr_enroll_stages || !drv->enroll)
return FP_ENROLL_FAIL;
return drv->enroll(dev, print_data);
}
API_EXPORTED int fp_init(void)
{
usb_init();
@@ -179,3 +194,4 @@ API_EXPORTED int fp_init(void)
return 0;
}

View File

@@ -32,6 +32,8 @@ struct fp_dev {
const struct fp_driver *drv;
usb_dev_handle *udev;
void *priv;
int nr_enroll_stages;
};
struct usb_id {
@@ -48,6 +50,8 @@ struct fp_driver {
/* Device operations */
int (*init)(struct fp_dev *dev);
void (*exit)(struct fp_dev *dev);
enum fp_enroll_status (*enroll)(struct fp_dev *dev,
struct fp_print_data **print_data);
};
extern const struct fp_driver upekts_driver;

View File

@@ -35,11 +35,23 @@ const struct fp_driver *fp_dscv_dev_get_driver(struct fp_dscv_dev *dev);
struct fp_dev *fp_dev_open(struct fp_dscv_dev *ddev);
void fp_dev_close(struct fp_dev *dev);
const struct fp_driver *fp_dev_get_driver(struct fp_dev *dev);
int fp_dev_get_nr_enroll_stages(struct fp_dev *dev);
/* Drivers */
const char *fp_driver_get_name(const struct fp_driver *drv);
const char *fp_driver_get_full_name(const struct fp_driver *drv);
/* Enrolment */
enum fp_enroll_status {
FP_ENROLL_COMPLETE,
FP_ENROLL_FAIL,
FP_ENROLL_PASS,
FP_ENROLL_RETRY,
};
enum fp_enroll_status fp_enroll_finger(struct fp_dev *dev,
struct fp_print_data **print_data);
/* Data handling */
void fp_print_data_free(struct fp_print_data *data);