/* * Copyright (C) 2007-2008 Daniel Drake * Copyright (C) 2018 Bastien Nocera * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __FPI_CORE_H__ #define __FPI_CORE_H__ #include struct usb_id { uint16_t vendor; uint16_t product; unsigned long driver_data; }; enum fp_driver_type { DRIVER_PRIMITIVE = 0, DRIVER_IMAGING = 1, }; struct fp_driver { const uint16_t id; const char *name; const char *full_name; const struct usb_id * const id_table; enum fp_driver_type type; enum fp_scan_type scan_type; /* Device operations */ int (*discover)(struct libusb_device_descriptor *dsc, uint32_t *devtype); int (*open)(struct fp_dev *dev, unsigned long driver_data); void (*close)(struct fp_dev *dev); int (*enroll_start)(struct fp_dev *dev); int (*enroll_stop)(struct fp_dev *dev); int (*verify_start)(struct fp_dev *dev); int (*verify_stop)(struct fp_dev *dev, gboolean iterating); int (*identify_start)(struct fp_dev *dev); int (*identify_stop)(struct fp_dev *dev, gboolean iterating); int (*capture_start)(struct fp_dev *dev); int (*capture_stop)(struct fp_dev *dev); }; /* flags for fp_img_driver.flags */ #define FP_IMGDRV_SUPPORTS_UNCONDITIONAL_CAPTURE (1 << 0) struct fp_img_driver { struct fp_driver driver; uint16_t flags; int img_width; int img_height; int bz3_threshold; /* Device operations */ int (*open)(struct fp_img_dev *dev, unsigned long driver_data); void (*close)(struct fp_img_dev *dev); int (*activate)(struct fp_img_dev *dev, enum fp_imgdev_state state); int (*change_state)(struct fp_img_dev *dev, enum fp_imgdev_state state); void (*deactivate)(struct fp_img_dev *dev); }; #endif