static void start_finger_detection(struct fp_img_dev *dev) { int r; struct upektc_dev *upekdev = dev->priv; struct libusb_transfer *transfer; fp_dbg(""); if (upekdev->deactivating) { complete_deactivation(dev); return; } transfer = libusb_alloc_transfer(0); if (!transfer) { fpi_imgdev_session_error(dev, -ENOMEM); return; } libusb_fill_bulk_transfer(transfer, dev->udev, upekdev->ep_out, (unsigned char *)scan_cmd, UPEKTC_CMD_LEN, finger_det_cmd_cb, dev, BULK_TIMEOUT); r = libusb_submit_transfer(transfer); if (r < 0) { libusb_free_transfer(transfer); fpi_imgdev_session_error(dev, r); } }
static void capture_sm_complete(struct fpi_ssm *ssm) { struct fp_img_dev *dev = ssm->priv; struct upektc_dev *upekdev = dev->priv; fp_dbg("Capture completed"); if (upekdev->deactivating) complete_deactivation(dev); else if (ssm->error) fpi_imgdev_session_error(dev, ssm->error); else start_finger_detection(dev); fpi_ssm_free(ssm); }
static void start_finger_detection(struct fp_img_dev *dev) { struct fpi_ssm *ssm; struct aesX660_dev *aesdev = dev->priv; if (aesdev->deactivating) { complete_deactivation(dev); return; } ssm = fpi_ssm_new(dev->dev, finger_det_run_state, FINGER_DET_NUM_STATES); ssm->priv = dev; fpi_ssm_start(ssm, finger_det_sm_complete); }
static void start_capture(struct fp_img_dev *dev) { struct upektc_dev *upekdev = dev->priv; struct fpi_ssm *ssm; if (upekdev->deactivating) { complete_deactivation(dev); return; } ssm = fpi_ssm_new(dev->dev, capture_run_state, CAPTURE_NUM_STATES); fp_dbg(""); ssm->priv = dev; fpi_ssm_start(ssm, capture_sm_complete); }
static void start_capture(struct fp_img_dev *dev) { struct etss801u_dev *etdev = dev->priv; struct fpi_ssm *ssm; if (etdev->deactivating) { complete_deactivation(dev); return; } ssm = fpi_ssm_new(dev->dev, capture_run_state, ET_CAPTURE_STATES); fp_dbg(""); ssm->priv = dev; fpi_ssm_start(ssm, capture_sm_complete); }
static void capture_sm_complete(struct fpi_ssm *ssm) { struct fp_img_dev *dev = ssm->priv; struct aesX660_dev *aesdev = dev->priv; int err = ssm->error; fp_dbg("Capture completed"); fpi_ssm_free(ssm); if (aesdev->deactivating) complete_deactivation(dev); else if (err) fpi_imgdev_session_error(dev, err); else start_finger_detection(dev); }
static void start_finger_detection(struct fp_img_dev *dev,struct poll_data* adata) { struct etss801u_dev *etdev = dev->priv; int r; if (etdev->deactivating) { complete_deactivation(dev); return; } r=et_write_poll(dev,adata); if(r) { fpi_imgdev_session_error(dev,r); } }
int et_read_enroll_data(struct fp_img_dev* dev,struct et_init* dinit,void* user_data) { int r; static struct init_data adata; struct etss801u_dev* edev=dev->priv; if(edev->deactivating) { complete_deactivation(dev); return 0; } adata.init=dinit; adata.ssm=user_data; struct libusb_transfer* transfer=libusb_alloc_transfer(0); if(!transfer) return -ENOMEM; switch(dinit->stage) { /*case 16: libusb_fill_bulk_transfer(transfer,dev->udev,EP_IN,et_img_buf[dinit->stage-16],6157,et_read_enroll_cb,&adata,BULK_TIMEOUT); break;*/ case 17: case 18: case 19: case 20: case 21: case 22: case 23: case 24: libusb_fill_bulk_transfer(transfer,dev->udev,EP_IN,et_img_buf[dinit->stage-17],61453,et_read_enroll_cb,&adata,BULK_TIMEOUT); break; default: libusb_fill_bulk_transfer(transfer,dev->udev,EP_IN,(char*)&ret_buf,8192,et_read_enroll_cb,&adata,BULK_TIMEOUT); break; } r=libusb_submit_transfer(transfer); if(r<0) { r=-EIO; libusb_free_transfer(transfer); } return r; }
static void finger_det_sm_complete(struct fpi_ssm *ssm) { struct fp_img_dev *dev = ssm->priv; struct aesX660_dev *aesdev = dev->priv; int err = ssm->error; fp_dbg("Finger detection completed"); fpi_imgdev_report_finger_status(dev, TRUE); fpi_ssm_free(ssm); if (aesdev->deactivating) complete_deactivation(dev); else if (err) fpi_imgdev_session_error(dev, err); else { fpi_imgdev_report_finger_status(dev, TRUE); start_capture(dev); } }
static void capture_sm_complete(struct fpi_ssm *ssm) { static struct poll_data adata; struct fp_img_dev *dev = ssm->priv; struct etss801u_dev *etdev = dev->priv; fp_dbg(""); if (etdev->deactivating) complete_deactivation(dev); else if (ssm->error) fpi_imgdev_session_error(dev, ssm->error); else /*Done finger enrolling, assemble image and give it to library*/ et_assemble_image(dev); fpi_imgdev_report_finger_status(dev, FALSE); memset(&einit,0,sizeof(struct et_init)); adata.dev=(struct fpi_img_dev*)dev; adata.init=&einit; start_finger_detection(dev,&adata); fpi_ssm_free(ssm); }
int et_read_poll(struct fp_img_dev* dev,struct poll_data* adata) { int r; struct etss801u_dev* edev=dev->priv; if(edev->deactivating) { complete_deactivation(dev); return 0; } struct libusb_transfer* transfer=libusb_alloc_transfer(0); if(!transfer) return -ENOMEM; libusb_fill_bulk_transfer(transfer,dev->udev,EP_IN,(char*)&ret_buf,8192,et_read_poll_cb,adata,BULK_TIMEOUT); r=libusb_submit_transfer(transfer); if(r<0) { r=-EIO; libusb_free_transfer(transfer); } return r; }