[fprint] quick update on direction
Daniel Drake
dsd at gentoo.org
Wed Feb 6 13:47:51 GMT 2008
Hi,
I haven't been publishing much activity lately. I've had a busy xmas, a
horrible exam period, and a few other life things have been keeping me
occupied. But I have been doing some work behind the scenes.
I recently described my intentions to move to a purely asynchronous
model internally, and then to offer both a synchronous and async API to
library users. This allows us to fit into a wider range of application
structures, has some efficiency bonuses, and makes implementation of
more advanced features significantly easier.
Unfortunately libusb only provides us with a synchronous API, so the
first problem to tackle was finding a new USB access library that also
provides async USB I/O access... Couldn't find one that did what I
wanted, so I wrote my own prototype (fpusb). I then contacted the libusb
author who liked my ideas and fpusb has now become the next version of
libusb, named libusb-1.0. http://libusb.wiki.sourceforge.net/Libusb1.0
While producing the fpusb prototype was quick, finalization and refining
is slow. Especially now that it's become libusb and has direction for a
fleshed out 1.0 API, that adds extra work. Can't rush the API design.
Additionally, porting libfprint to an asynchronous model with libusb-1.0
is proving more work than I expected. I still believe that it's the
right way to go though, and despite the added work it's still a
realistic goal.
All drivers need converting to an async model too, and unfortunately
driver complexity is slightly higher as a result. I am putting
mechanisms in place to try and retain some of the linearity that you get
from synchronous I/O though.
Right now I have ported the primitive driver layer (i.e. init, deinit,
enroll, verify, identify) to an asynchronous model and I have ported the
upekts driver. This seems to be working. I am now about to start work on
the imaging layer and the imaging drivers. The final stage will be
exposing the async API to library users alongside the existing
synchronous one (which has not changed, at least up until this point).
This can all be found in the libusb-1.0 branch of the libfprint git tree.
On the academic side of things I am under pressure as I have to
demonstrate my project in about 3 weeks time. I really need to have the
async conversion completed by then, plus hopefully a prototype of a
dbus-based authentication daemon.
This timeframe isn't ideal, because it means that I don't have enough
time in the short term to get things to a point where I can do releases
again. For example, I want to get the libusb-1.0 API to a point that I'm
relatively happy with before I do any libusb-1.0 alpha/beta releases,
but my priority is getting the software ready for the demo and I don't
think I will have time to do much more work on libusb-1.0 within that
time. I cannot do any libfprint-0.1.x releases until there is a
libusb-1.0 release. I cannot do any libfprint dbus daemon releases until
there is a libfprint-0.1.x release, and so on.
So, it might be a few more weeks before any of my recent work is
formally released. In the mean time it is all available from git
repositories on projects.reactivated.net
I haven't forgot about the pending patches that have been submitted.
Sorry for the delay in handling these. In addition to the time I need to
spend getting things ready for the demo, having to maintain two branches
of libfprint is a further drain on my time... Things should be better
when I've finished the asynchronous stuff.
Daniel
More information about the fprint
mailing list