From 29044d9ca95646596c8c817d470c01381f4b8f9f Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 20 Nov 2008 14:40:01 +0000 Subject: [PATCH] Export scan type for each driver For each driver, export the scan type supported by the devices it handles. This allows front-ends to direct the user better. --- libfprint/core.c | 10 ++++++++++ libfprint/drivers/aes1610.c | 1 + libfprint/drivers/aes2501.c | 1 + libfprint/drivers/aes4000.c | 1 + libfprint/drivers/fdu2000.c | 1 + libfprint/drivers/upeksonly.c | 1 + libfprint/drivers/upektc.c | 1 + libfprint/drivers/upekts.c | 1 + libfprint/drivers/uru4000.c | 1 + libfprint/drivers/vcom5s.c | 1 + libfprint/fp_internal.h | 1 + libfprint/fprint.h | 11 +++++++++++ 12 files changed, 31 insertions(+) diff --git a/libfprint/core.c b/libfprint/core.c index acbe08f..b3acea6 100644 --- a/libfprint/core.c +++ b/libfprint/core.c @@ -710,6 +710,16 @@ API_EXPORTED uint16_t fp_driver_get_driver_id(struct fp_driver *drv) return drv->id; } +/** \ingroup drv + * Retrieves the scan type for the devices associated with the driver. + * \param drv the driver + * \returns the scan type + */ +API_EXPORTED enum fp_scan_type fp_driver_get_scan_type(struct fp_driver *drv) +{ + return drv->scan_type; +} + static struct fp_img_dev *dev_to_img_dev(struct fp_dev *dev) { if (dev->drv->type != DRIVER_IMAGING) diff --git a/libfprint/drivers/aes1610.c b/libfprint/drivers/aes1610.c index 7ef5fe2..318195f 100644 --- a/libfprint/drivers/aes1610.c +++ b/libfprint/drivers/aes1610.c @@ -532,6 +532,7 @@ struct fp_img_driver aes1610_driver = { .name = FP_COMPONENT, .full_name = "AuthenTec AES1610", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_SWIPE, }, .flags = 0, .img_height = -1, diff --git a/libfprint/drivers/aes2501.c b/libfprint/drivers/aes2501.c index d60f1f7..617bb64 100644 --- a/libfprint/drivers/aes2501.c +++ b/libfprint/drivers/aes2501.c @@ -949,6 +949,7 @@ struct fp_img_driver aes2501_driver = { .name = FP_COMPONENT, .full_name = "AuthenTec AES2501", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_SWIPE, }, .flags = 0, .img_height = -1, diff --git a/libfprint/drivers/aes4000.c b/libfprint/drivers/aes4000.c index a8f71e6..02dc9e8 100644 --- a/libfprint/drivers/aes4000.c +++ b/libfprint/drivers/aes4000.c @@ -253,6 +253,7 @@ struct fp_img_driver aes4000_driver = { .name = FP_COMPONENT, .full_name = "AuthenTec AES4000", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_PRESS, }, .flags = 0, .img_height = IMG_HEIGHT * ENLARGE_FACTOR, diff --git a/libfprint/drivers/fdu2000.c b/libfprint/drivers/fdu2000.c index 0e6c53b..c9afb0b 100644 --- a/libfprint/drivers/fdu2000.c +++ b/libfprint/drivers/fdu2000.c @@ -309,6 +309,7 @@ struct fp_img_driver fdu2000_driver = { .name = FP_COMPONENT, .full_name = "Secugen FDU 2000", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_PRESS, }, .img_height = RAW_IMAGE_HEIGTH, .img_width = RAW_IMAGE_WIDTH, diff --git a/libfprint/drivers/upeksonly.c b/libfprint/drivers/upeksonly.c index a8f2986..f41a6be 100644 --- a/libfprint/drivers/upeksonly.c +++ b/libfprint/drivers/upeksonly.c @@ -1022,6 +1022,7 @@ struct fp_img_driver upeksonly_driver = { .name = FP_COMPONENT, .full_name = "UPEK TouchStrip Sensor-Only", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_SWIPE, }, .flags = 0, .img_width = IMG_WIDTH, diff --git a/libfprint/drivers/upektc.c b/libfprint/drivers/upektc.c index 1723287..e115537 100644 --- a/libfprint/drivers/upektc.c +++ b/libfprint/drivers/upektc.c @@ -402,6 +402,7 @@ struct fp_img_driver upektc_driver = { .name = FP_COMPONENT, .full_name = "UPEK TouchChip", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_PRESS, }, .flags = FP_IMGDRV_SUPPORTS_UNCONDITIONAL_CAPTURE, .img_height = 288, diff --git a/libfprint/drivers/upekts.c b/libfprint/drivers/upekts.c index df64830..5553d8e 100644 --- a/libfprint/drivers/upekts.c +++ b/libfprint/drivers/upekts.c @@ -1465,6 +1465,7 @@ struct fp_driver upekts_driver = { .name = FP_COMPONENT, .full_name = "UPEK TouchStrip", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_SWIPE, .open = dev_init, .close = dev_exit, .enroll_start = enroll_start, diff --git a/libfprint/drivers/uru4000.c b/libfprint/drivers/uru4000.c index e9e40f9..b230c03 100644 --- a/libfprint/drivers/uru4000.c +++ b/libfprint/drivers/uru4000.c @@ -1227,6 +1227,7 @@ struct fp_img_driver uru4000_driver = { .name = FP_COMPONENT, .full_name = "Digital Persona U.are.U 4000/4000B", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_PRESS, }, .flags = FP_IMGDRV_SUPPORTS_UNCONDITIONAL_CAPTURE, .img_height = 289, diff --git a/libfprint/drivers/vcom5s.c b/libfprint/drivers/vcom5s.c index c02873b..0bc5724 100644 --- a/libfprint/drivers/vcom5s.c +++ b/libfprint/drivers/vcom5s.c @@ -372,6 +372,7 @@ struct fp_img_driver vcom5s_driver = { .name = FP_COMPONENT, .full_name = "Veridicom 5thSense", .id_table = id_table, + .scan_type = FP_SCAN_TYPE_PRESS, }, .flags = 0, .img_height = IMG_HEIGHT, diff --git a/libfprint/fp_internal.h b/libfprint/fp_internal.h index 5483d11..bebf324 100644 --- a/libfprint/fp_internal.h +++ b/libfprint/fp_internal.h @@ -199,6 +199,7 @@ struct fp_driver { const char *full_name; const struct usb_id * const id_table; enum fp_driver_type type; + enum fp_scan_type scan_type; void *priv; diff --git a/libfprint/fprint.h b/libfprint/fprint.h index 9645004..29e6eb1 100644 --- a/libfprint/fprint.h +++ b/libfprint/fprint.h @@ -51,10 +51,21 @@ enum fp_finger { RIGHT_LITTLE, /** little finger (right hand) */ }; +/** \ingroup dev + * Numeric codes used to refer to the scan type of the device. Devices require + * either swiping or pressing the finger on the device. This is useful for + * front-ends. + */ +enum fp_scan_type { + FP_SCAN_TYPE_PRESS = 0, /** press */ + FP_SCAN_TYPE_SWIPE, /** swipe */ +}; + /* Drivers */ const char *fp_driver_get_name(struct fp_driver *drv); const char *fp_driver_get_full_name(struct fp_driver *drv); uint16_t fp_driver_get_driver_id(struct fp_driver *drv); +enum fp_scan_type fp_driver_get_scan_type(struct fp_driver *drv); /* Device discovery */ struct fp_dscv_dev **fp_discover_devs(void);