Ejemplo n.º 1
0
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);
	}
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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);
}
Ejemplo n.º 5
0
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);
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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);
	}
}
Ejemplo n.º 8
0
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;
}
Ejemplo n.º 9
0
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);
	}
}
Ejemplo n.º 10
0
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);
}
Ejemplo n.º 11
0
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;
}