Uno de los principales problemas es que tiene ciertas acciones que son bloqueantes. Libfprint para funcionar hace uso de libusb-0.1 que es una interfaz escrita en C para acceder a usbfs del kernel de linux cuyo problema es que no permite una I/O asíncrona, tan sólo síncrona.
La lógica dice que para que un capa pueda trabajar de modo asíncrono, todas sus capas por debajo puedan hacerlo y aquí es donde nos encontramos con este problema. Se miró la posibilidad de migrar a OpenUSB, desarrolado por SUN Microsystems, pero al final se descartó por diversos motivos.
¿Qué problemas supone esto? Pues por ejemplo, yo ejecuto una función donde quiero verificar una huella:
r = fp_verify_finger(dev, enroll_data);
El proceso sería activar el dispositivo, libfprint escanearía la huella, se procesan los resultados, se comparan los resultados y se devuelve el resultado de la comparación. Y el problema sería que la ejecución del programa se para hasta que el usuario escanee su huella, ¿y si estuviera alejado del ordenador en ese momento? Por ejemplo una interfaz GUI se quedaría sin responder hasta escanear el dedo. ¿Soluciones? Lo primero que pensamos para evitar este comportamiento sería programa la GUI usando un thread distinto cuando se vaya a escanear
pero lo propio sería migrar a libusb-1.0 que permite I/O asíncrono.
Hasta ahora el desarrollo de libusb se encontraba parado así que Daniel Drake, el responsable principal de fprint, que últimamente se ha dedicado a desarrollar y estabilizar la versión 1.0.
Otra posible mejora sería incluir funciones para cancelar las operaciones en curso y otra sería tener un daemon global de sistema que funcionara por ejemplo con DBUS.
Aparte de la propia libfprint disponemos de unos cuantos extras para poder jugar. El primero de ellos sería pam_fprint, que es un módulo de PAM que nos proporciona la posibilidad de autenticación en el sistema. La idea es integrarlo con shadow, GDM y KDM aunque en los 2 últimos existen ciertos problemas por el propio diseño de GDM y KDM. Es un módulo muy básico y su función inicial casifue sólo demostrar el uso de libfprint.
Por último, actualmente disponemos de dos frontends, el primero fprint_demo y el segundo “QT Fingerprint Scanning GUI“.
Después de todos estos posts sobre fprint, ya no tenéis excusa para hacer un #include <fprint.h> y desarrollar vuestros pequeños monstruitos.
–
Fuente original en http://vierito.es/wordpress
Similar Posts:
- [Fprint] La implemetación del driver
- [Fprint] Lectores de huellas en linux
- [Fprint] Los dispositivos

0 responses so far ↓
There are no comments yet...Kick things off by filling out the form below.
Leave a Comment