static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) { /* TODO check that device has endpoints we're using */ int r; struct aesX660_dev *aesdev; r = libusb_claim_interface(dev->udev, 0); if (r < 0) { fp_err("could not claim interface 0"); return r; } dev->priv = aesdev = g_malloc0(sizeof(struct aesX660_dev)); aesdev->buffer = g_malloc0(AES1660_FRAME_SIZE + AESX660_HEADER_SIZE); aesdev->init_seqs[0] = aes1660_init_1; aesdev->init_seqs_len[0] = array_n_elements(aes1660_init_1); aesdev->init_seqs[1] = aes1660_init_2; aesdev->init_seqs_len[1] = array_n_elements(aes1660_init_2); aesdev->start_imaging_cmd = (unsigned char *)aes1660_start_imaging_cmd; aesdev->start_imaging_cmd_len = sizeof(aes1660_start_imaging_cmd); aesdev->frame_width = FRAME_WIDTH; aesdev->extra_img_flags = FP_IMG_PARTIAL; fpi_imgdev_open_complete(dev, 0); return 0; }
static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) { /* TODO check that device has endpoints we're using */ int r; struct upektc_dev *upekdev; r = libusb_claim_interface(dev->udev, 0); if (r < 0) { fp_err("could not claim interface 0: %s", libusb_error_name(r)); return r; } dev->priv = upekdev = g_malloc0(sizeof(struct upektc_dev)); switch (driver_data) { case UPEKTC_2015: upekdev->ep_in = UPEKTC_EP_IN; upekdev->ep_out = UPEKTC_EP_OUT; upekdev->setup_commands = upektc_setup_commands; upekdev->setup_commands_len = array_n_elements(upektc_setup_commands); upekdev->sum_threshold = UPEKTC_SUM_THRESHOLD; break; case UPEKTC_3001: upekdev->ep_in = UPEKET_EP_IN; upekdev->ep_out = UPEKET_EP_OUT; upekdev->setup_commands = upeket_setup_commands; upekdev->setup_commands_len = array_n_elements(upeket_setup_commands); upekdev->sum_threshold = UPEKET_SUM_THRESHOLD; break; default: fp_err("Device variant %d is not known\n", driver_data); g_free(upekdev); dev->priv = NULL; return -ENODEV; break; } fpi_imgdev_open_complete(dev, 0); return 0; }
static int dev_init(struct fp_img_dev *dev, unsigned long driver_data) { /* TODO check that device has endpoints we're using */ int r; struct aesX660_dev *aesdev; r = libusb_claim_interface(dev->udev, 0); if (r < 0) { fp_err("could not claim interface 0"); return r; } dev->priv = aesdev = g_malloc0(sizeof(struct aesX660_dev)); if (!aesdev) return -ENOMEM; aesdev->buffer = g_malloc0(AES2660_FRAME_SIZE + AESX660_HEADER_SIZE); if (!aesdev->buffer) { g_free(aesdev); dev->priv = NULL; return -ENOMEM; } /* No scaling for AES2660 */ aesdev->h_scale_factor = 1; aesdev->init_seqs[0] = aes2660_init_1; aesdev->init_seqs_len[0] = array_n_elements(aes2660_init_1); aesdev->init_seqs[1] = aes2660_init_2; aesdev->init_seqs_len[1] = array_n_elements(aes2660_init_2); aesdev->start_imaging_cmd = (unsigned char *)aes2660_start_imaging_cmd; aesdev->start_imaging_cmd_len = sizeof(aes2660_start_imaging_cmd); aesdev->frame_width = FRAME_WIDTH; fpi_imgdev_open_complete(dev, 0); return 0; }