1 /*
2  * AuthenTec AES3500/AES4000 common routines
3  *
4  * The AES3500 and AES4000 sensors are press-typed, and could capture
5  * fingerprint images in 128x128 and 96x96 pixels respectively. They
6  * share a same communication interface: a number of frames are
7  * transferred and captured, from which a final image could be
8  * assembled. Each frame has fixed height of 16 pixels.
9  *
10  * As the imaging area is a bit small, only a part of finger could be
11  * captured, the detected minutiae are not so many that the NBIS
12  * matching works not so good. The verification rate is very low at the
13  * moment.
14  *
15  * This work is derived from Daniel Drake's AES4000 driver.
16  *
17  * Copyright (C) 2013 Juvenn Woo <machese@gmail.com>
18  * Copyright (C) 2007-2008 Daniel Drake <dsd@gentoo.org>
19  *
20  * This library is free software; you can redistribute it and/or modify
21  * it under the terms of the GNU Lesser General Public License as
22  * published by the Free Software Foundation; either version 2.1 of the
23  * License, or (at your option) any later version.
24  *
25  * This library is distributed in the hope that it will be useful, but
26  * WITHOUT ANY WARRANTY; without even the implied warranty of
27  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28  * Lesser General Public License for more details.
29  *
30  * You should have received a copy of the GNU Lesser General Public
31  * License along with this library; if not, write to the Free Software
32  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
33  * 02110-1301 USA
34  *
35  */
36 
37 #ifndef __AES3K_H
38 #define __AES3K_H
39 
40 #define AES3K_FRAME_HEIGHT	16
41 
42 struct aes3k_dev {
43 	struct libusb_transfer *img_trf;
44 	size_t frame_width;  /* image size = frame_width x frame_width */
45 	size_t frame_size;   /* 4 bits/pixel: frame_width x AES3K_FRAME_HEIGHT / 2 */
46 	size_t frame_number; /* number of frames */
47 	size_t enlarge_factor;
48 
49 	size_t data_buflen;             /* buffer length of usb bulk transfer */
50 	struct aes_regwrite *init_reqs; /* initial values sent to device */
51 	size_t init_reqs_len;
52 };
53 
54 
55 int aes3k_dev_activate(struct fp_img_dev *dev, enum fp_imgdev_state state);
56 void aes3k_dev_deactivate(struct fp_img_dev *dev);
57 
58 #endif
59