I tested the driver with libfprint-0.4.0. And too bad it cannot work.
On Thu, Jan 26, 2012 at 5:08 AM, MOGANESHWARAN RAJASEGARAN < [email protected]> wrote: > Hi, > > It should be libusb.h. I was working on libfprint-0.0.6 and got it working > there. And I changed it to libfprint-0.4.0 by just replacing the > usb_bulk_write and usb_bulk_read to libusb_bulk_transfer. I did remove some > redundant parts in the driver source file. > > As for the following part which has been commented: > > @@ -102,6 +108,7 @@ done >> AM_CONDITIONAL([ENABLE_UPEKTS]**, [test "$enable_upekts" = "yes"]) >> AM_CONDITIONAL([ENABLE_UPEKE2]**, [test "$enable_upeke2" = "yes"]) >> #AM_CONDITIONAL([ENABLE_**UPEKTC], [test "$enable_upektc" = "yes"]) >> +#AM_CONDITIONAL([ENABLE_**UPEKET], [test "$enable_upeket" = "yes"]) >> > > and > > #DRIVER_SRC += $(UPEKTC_SRC) > > #endif >> +#if ENABLE_UPEKET >> +#DRIVER_SRC += $(UPEKET_SRC) >> > +#endif > + > if ENABLE_URU4000 > DRIVER_SRC += $(URU4000_SRC) > endif > > The eikon touch 300 scanner is like upek touchchip scanner. So I just > follow the upektc statement in fp_internal.h, Makefile.am, and > configure.ac > > The syntax is int libusb_bulk_transfer (struct libusb_device_handle > *dev_handle, unsigned char endpoint, unsigned char *data, int length, int > *transferred, unsigned int timeout). > > Here it is used as libusb_bulk_transfer(dev->**udev, &msg1, &transferred, > 1003); > And the msg1 is defined as: > > struct libusb_bulk_transfer msg1 = { > .endpoint = 2, > .data = pnRawString, > .length = 0x40, > }; > > I was unaware the upektc.c is obsolete with libfprint-0.4.0. Thank you for > the info. Actually I was hoping it could work well with libfprint-0.4.0. If > thats the case I have to start testing the upeket.c with libfprint-0.4.0. > Thank you for pointing me out. I did not change to libfprint-0.4.0 cause I > have my programs written based on libfprint-0.0.6 and easier for me do the > testing. Will post the diff once got it working with libfprint-0.4.0 > > P.S: Bastian, please do not apply the patch first. Have to do some testing > first. Sorry for the trouble. Thank you. > > Regards, > Moganesh > > > On Thu, Jan 26, 2012 at 2:31 AM, Patrick Marlier < > [email protected]> wrote: > >> On 01/24/2012 01:31 PM, MOGANESHWARAN RAJASEGARAN wrote: >> >>> Thank you for the guide in creating the unified diff. I hope this is >>> correct. >>> >> >> The diff seems ok (weird http://?) and thanks for sharing your work and >> contributing. >> >> Main general concerns from my point of view (even if I am not either the >> owner of such device and either a libfprint developer): our driver is based >> on upektc which is obsolete AFAIU and make your driver obsolete too... Did >> you manage to get it work with the current libfprint (0.4)? >> >> libfprint maintainers/developers, do not hesitate to correct me if I am >> wrong. >> >> I don't know a lot of libfprint/libusb but some comments are inlined >> (mainly related to obsolete functions): >> >> >> @@ -102,6 +108,7 @@ done >>> AM_CONDITIONAL([ENABLE_UPEKTS]**, [test "$enable_upekts" = "yes"]) >>> AM_CONDITIONAL([ENABLE_UPEKE2]**, [test "$enable_upeke2" = "yes"]) >>> #AM_CONDITIONAL([ENABLE_**UPEKTC], [test "$enable_upektc" = "yes"]) >>> +#AM_CONDITIONAL([ENABLE_**UPEKET], [test "$enable_upeket" = "yes"]) >>> >> >> Why there is a # here? you don't want your driver to be enabled? >> >> >> AM_CONDITIONAL([ENABLE_**UPEKSONLY], [test "$enable_upeksonly" = >>> "yes"]) >>> AM_CONDITIONAL([ENABLE_VCOM5S]**, [test "$enable_vcom5s" = "yes"]) >>> AM_CONDITIONAL([ENABLE_**URU4000], [test "$enable_uru4000" = "yes"]) >>> >> >> @@ -100,6 +102,10 @@ endif >>> #DRIVER_SRC += $(UPEKTC_SRC) >>> #endif >>> +#if ENABLE_UPEKET >>> +#DRIVER_SRC += $(UPEKET_SRC) >>> >> >> Again here? >> >> +#endif >>> + >>> if ENABLE_URU4000 >>> DRIVER_SRC += $(URU4000_SRC) >>> endif >>> diff --git a/libfprint/drivers/upeket.c b/libfprint/drivers/upeket.c >>> new file mode 100644 >>> index 0000000..e5c12d2 >>> --- /dev/null >>> +++ b/libfprint/drivers/upeket.c >>> @@ -0,0 +1,720 @@ >>> +/* >>> + * Copyright (C) 2012 Moganeshwaran Rajasegaran >>> <[email protected] >>> <mailto:moganeshwaran@gmail.**com<[email protected]> >>> >> >>> >>> + * UPEK EikonTouch300 driver for libfprint >>> + >>> + * Heavily based on UPEK TouchChip driver for libfprint >>> + * Copyright (C) 2007 Jan-Michael Brummer <[email protected] >>> <mailto:[email protected]>> >>> >>> + * >>> + * This library is free software; you can redistribute it and/or >>> + * modify it under the terms of the GNU Lesser General Public >>> + * License as published by the Free Software Foundation; either >>> + * version 2.1 of the License, or (at your option) any later version. >>> + * >>> + * This library is distributed in the hope that it will be useful, >>> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >>> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU >>> + * Lesser General Public License for more details. >>> + * >>> + * You should have received a copy of the GNU Lesser General Public >>> + * License along with this library; if not, write to the Free Software >>> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA >>> 02110-1301 USA >>> + */ >>> + >>> +#define FP_COMPONENT "upeket" >>> + >>> +#include <errno.h> >>> +#include <string.h> >>> + >>> +#include <glib.h> >>> +#include <usb.h> >>> >> >> usb.h ? which version of libusb do you use? I pretty sure it should be >> libusb.h >> >> + >>> +#include <fp_internal.h> >>> + >>> +#define SENSOR_FULL_IMAGE59904 >>> +#define WAIT_COUNT5 >>> + >>> +typedef char sint8; >>> +typedef unsigned char uint8; >>> +typedef int sint32; >>> +typedef unsigned int uint32; >>> + >>> +/** scan command */ >>> +static const unsigned char anScanCommand[ 0x40 ] = { >>> +0x0e, 0x00, 0x03, 0xa8, 0x00, 0xb6, 0xbb, 0xbb, >>> +0xb8, 0xb7, 0xb8, 0xb5, 0xb8, 0xb9, 0xb8, 0xb9, >>> +0xbb, 0xbb, 0xbe, 0xbb, 0x4e, 0x16, 0xf4, 0x77, >>> +0xa8, 0x07, 0x32, 0x00, 0x6a, 0x16, 0xf4, 0x77, >>> +0x78, 0x24, 0x61, 0x00, 0xc8, 0x00, 0xec, 0x00, >>> +0x01, 0x00, 0x00, 0x00, 0x3c, 0xf3, 0x2f, 0x01, >>> +0x05, 0x90, 0xf6, 0x77, 0x84, 0xf5, 0x2f, 0x01, >>> +0x05, 0x90, 0xf6, 0x00, 0xc8, 0x00, 0xec, 0x00 >>> >>> +}; >>> + >>> + >>> +/** >>> + * \brief Common interaktion routine for the sensor device >>> + * \param dev fingerprint image device pointer >>> + * \param pnRawString raw data string >>> + * \param nLen length we want to read, if 0 do not read at all >>> + * \param pnBuffer buffer pointer we want to store the read buffer >>> + * \return error code >>> + */ >>> +static sint32 askScanner( struct fp_img_dev *dev, const unsigned char >>> *pnRawString, sint32 nLen, sint8 *pnBuffer ) { >>> + sint8 anBuf[ 65535 ]; >>> +sint32 nRet; >>> +int transferred; >>> +struct libusb_bulk_transfer msg1 = { >>> +.endpoint = 2, >>> +.data = pnRawString, >>> +.length = 0x40, >>> +}; >>> +struct libusb_bulk_transfer msg2 = { >>> +.endpoint = 0x81, >>> +.data = anBuf, >>> +.length = nLen, >>> +}; >>> + >>> +nRet = libusb_bulk_transfer(dev->**udev, &msg1, &transferred, 1003); >>> >> >> Humm.. Seems a odd libusb version. The definition I have is this one for >> libusb 1.0 (AFAIK current version used in libfprint): >> >> int libusb_bulk_transfer (struct libusb_device_handle *dev_handle, >> unsigned char endpoint, unsigned char *data, int length, int *transferred, >> unsigned int timeout) >> >> -- >> Patrick Marlier. >> > >
_______________________________________________ fprint mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/fprint
