mirror of
https://gitlab.freedesktop.org/libfprint/libfprint.git
synced 2025-11-15 07:38:12 +00:00
lib: Make fp_img_dev structure opaque
This commit is contained in:
@@ -54,8 +54,8 @@ static void async_write_callback(struct libusb_transfer *transfer)
|
||||
static void async_write(struct fpi_ssm *ssm, void *data, int len)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct libusb_device_handle *udev = idev->udev;
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct libusb_device_handle *udev = fpi_imgdev_get_usb_dev(idev);
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
vdev->transfer = libusb_alloc_transfer(0);
|
||||
vdev->transfer->flags |= LIBUSB_TRANSFER_FREE_TRANSFER;
|
||||
@@ -96,8 +96,8 @@ static void async_read_callback(struct libusb_transfer *transfer)
|
||||
static void async_read(struct fpi_ssm *ssm, int ep, void *data, int len)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct libusb_device_handle *udev = idev->udev;
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct libusb_device_handle *udev = fpi_imgdev_get_usb_dev(idev);
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
ep |= LIBUSB_ENDPOINT_IN;
|
||||
|
||||
@@ -150,8 +150,8 @@ static void async_abort_callback(struct libusb_transfer *transfer)
|
||||
static void async_abort(struct fpi_ssm *ssm, int ep)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct libusb_device_handle *udev = idev->udev;
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct libusb_device_handle *udev = fpi_imgdev_get_usb_dev(idev);
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
int len = VFS_USB_BUFFER_SIZE;
|
||||
unsigned char *data = g_malloc(VFS_USB_BUFFER_SIZE);
|
||||
@@ -259,7 +259,7 @@ static struct fp_img *prepare_image(struct vfs_dev_t *vdev)
|
||||
/* Processes and submits image after fingerprint received */
|
||||
static void submit_image(struct fp_img_dev *idev)
|
||||
{
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
/* We were not asked to submit image actually */
|
||||
if (!vdev->active)
|
||||
@@ -312,7 +312,7 @@ static void clear_ep2(struct fpi_ssm *ssm)
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
|
||||
struct fpi_ssm *subsm =
|
||||
fpi_ssm_new(idev->dev, clear_ep2_ssm, SUBSM1_STATES);
|
||||
fpi_ssm_new(fpi_imgdev_get_dev(idev), clear_ep2_ssm, SUBSM1_STATES);
|
||||
fpi_ssm_set_user_data(subsm, idev);
|
||||
fpi_ssm_start_subsm(ssm, subsm);
|
||||
}
|
||||
@@ -320,7 +320,7 @@ static void clear_ep2(struct fpi_ssm *ssm)
|
||||
static void send_control_packet_ssm(struct fpi_ssm *ssm)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
short result;
|
||||
unsigned char *commit_result = NULL;
|
||||
@@ -390,7 +390,7 @@ static void send_control_packet(struct fpi_ssm *ssm)
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
|
||||
struct fpi_ssm *subsm =
|
||||
fpi_ssm_new(idev->dev, send_control_packet_ssm, SUBSM2_STATES);
|
||||
fpi_ssm_new(fpi_imgdev_get_dev(idev), send_control_packet_ssm, SUBSM2_STATES);
|
||||
fpi_ssm_set_user_data(subsm, idev);
|
||||
fpi_ssm_start_subsm(ssm, subsm);
|
||||
}
|
||||
@@ -408,7 +408,7 @@ static void interrupt_callback(struct libusb_transfer *transfer)
|
||||
{
|
||||
struct fpi_ssm *ssm = transfer->user_data;
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
char *interrupt = vdev->interrupt;
|
||||
int error = transfer->status, transferred = transfer->actual_length;
|
||||
@@ -468,7 +468,7 @@ static void receive_callback(struct libusb_transfer *transfer)
|
||||
{
|
||||
struct fpi_ssm *ssm = transfer->user_data;
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
int transferred = transfer->actual_length, error = transfer->status;
|
||||
|
||||
@@ -496,7 +496,7 @@ static void wait_interrupt(void *data)
|
||||
{
|
||||
struct fpi_ssm *ssm = data;
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
/* Keep sleeping while this flag is on */
|
||||
if (vdev->wait_interrupt)
|
||||
@@ -521,8 +521,8 @@ static void scan_completed(void *data)
|
||||
static void activate_ssm(struct fpi_ssm *ssm)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct libusb_device_handle *udev = idev->udev;
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct libusb_device_handle *udev = fpi_imgdev_get_usb_dev(idev);
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
switch (fpi_ssm_get_cur_state(ssm)) {
|
||||
case SSM_INITIAL_ABORT_1:
|
||||
@@ -674,7 +674,7 @@ static void activate_ssm(struct fpi_ssm *ssm)
|
||||
static void dev_activate_callback(struct fpi_ssm *ssm)
|
||||
{
|
||||
struct fp_img_dev *idev = fpi_ssm_get_user_data(ssm);
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
vdev->ssm_active = 0;
|
||||
|
||||
@@ -684,14 +684,14 @@ static void dev_activate_callback(struct fpi_ssm *ssm)
|
||||
/* Activate device */
|
||||
static int dev_activate(struct fp_img_dev *idev, enum fp_imgdev_state state)
|
||||
{
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
/* Initialize flags */
|
||||
vdev->active = 1;
|
||||
vdev->need_report = 1;
|
||||
vdev->ssm_active = 1;
|
||||
|
||||
struct fpi_ssm *ssm = fpi_ssm_new(idev->dev, activate_ssm, SSM_STATES);
|
||||
struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES);
|
||||
fpi_ssm_set_user_data(ssm, idev);
|
||||
fpi_ssm_start(ssm, dev_activate_callback);
|
||||
return 0;
|
||||
@@ -700,7 +700,7 @@ static int dev_activate(struct fp_img_dev *idev, enum fp_imgdev_state state)
|
||||
/* Deactivate device */
|
||||
static void dev_deactivate(struct fp_img_dev *idev)
|
||||
{
|
||||
struct vfs_dev_t *vdev = idev->priv;
|
||||
struct vfs_dev_t *vdev = fpi_imgdev_get_user_data(idev);
|
||||
|
||||
if (!vdev->ssm_active) {
|
||||
fpi_imgdev_deactivate_complete(idev);
|
||||
@@ -723,8 +723,10 @@ static void dev_open_callback(struct fpi_ssm *ssm)
|
||||
/* Open device */
|
||||
static int dev_open(struct fp_img_dev *idev, unsigned long driver_data)
|
||||
{
|
||||
struct vfs_dev_t *vdev;
|
||||
|
||||
/* Claim usb interface */
|
||||
int error = libusb_claim_interface(idev->udev, 0);
|
||||
int error = libusb_claim_interface(fpi_imgdev_get_usb_dev(idev), 0);
|
||||
if (error < 0) {
|
||||
/* Interface not claimed, return error */
|
||||
fp_err("could not claim interface 0");
|
||||
@@ -732,11 +734,11 @@ static int dev_open(struct fp_img_dev *idev, unsigned long driver_data)
|
||||
}
|
||||
|
||||
/* Initialize private structure */
|
||||
struct vfs_dev_t *vdev = g_malloc0(sizeof(struct vfs_dev_t));
|
||||
idev->priv = vdev;
|
||||
vdev = g_malloc0(sizeof(struct vfs_dev_t));
|
||||
fpi_imgdev_set_user_data(idev, vdev);
|
||||
|
||||
/* Clearing previous device state */
|
||||
struct fpi_ssm *ssm = fpi_ssm_new(idev->dev, activate_ssm, SSM_STATES);
|
||||
struct fpi_ssm *ssm = fpi_ssm_new(fpi_imgdev_get_dev(idev), activate_ssm, SSM_STATES);
|
||||
fpi_ssm_set_user_data(ssm, idev);
|
||||
fpi_ssm_start(ssm, dev_open_callback);
|
||||
return 0;
|
||||
@@ -745,11 +747,14 @@ static int dev_open(struct fp_img_dev *idev, unsigned long driver_data)
|
||||
/* Close device */
|
||||
static void dev_close(struct fp_img_dev *idev)
|
||||
{
|
||||
struct vfs_dev_t *vdev;
|
||||
|
||||
/* Release private structure */
|
||||
g_free(idev->priv);
|
||||
vdev = fpi_imgdev_get_user_data(idev);
|
||||
g_free(vdev);
|
||||
|
||||
/* Release usb interface */
|
||||
libusb_release_interface(idev->udev, 0);
|
||||
libusb_release_interface(fpi_imgdev_get_usb_dev(idev), 0);
|
||||
|
||||
/* Notify close complete */
|
||||
fpi_imgdev_close_complete(idev);
|
||||
|
||||
Reference in New Issue
Block a user