Ya sabemos, por los posts anteriores, que funciones necesitaremos tener disponibles o no dependiendo del dispositivo que estemos usando.
El driver está desarrollado en C, como no, ¿por qué? pues porque:
- es adecuado para programar drivers porque nos proporciona funcionalidad a ‘bajo nivel’ siendo un lenguaje de ‘alto nivel’.
- facilmente podremos crear bindings en c++, java, python, ruby, …
- será fácil luego adaptarlo a sistema embebidos (empotrados, embedded o como se les quieran llamar)
Está implementado en forma de librería y recibe el nombre de libfprint y depende de otras librerías como:
- libusb: nos proporciona I/O al bus USB y además es portable a FreeBSD, Mac OSX, Windows y más.
- glib: un gran librería de rutinas en C de las cuales usaremos unas poquitas (listas enlazadas, operaciones sobre strings, para reservar memoria, etc)
A continuación os pongo un esquema de como está estructurado:
Como se puede ver, tendremos una API de alto nivel donde se nos proporcionan funciones para registrar huellas de dedos (enrollment), verificar (comprobar que la huella escaneada coincide con la almacenada contra la que se ha pedido confirmación) y identificar (encontrar entre las huellas almacenadas una que coincida con la escaneada). La diferencia entre verificar y identificar sería la misma que entre elegir tu nombre de usuario y escanear tu dedo y en lugar de eso escanear tu huella y que el sistema reconozca tu usuario y te confirme.
De estas funciones tendríamos 2 variantes, la que nos devuelve la imagen por si además si quisiéramos hacer alguna cosa con ella y que simplemente realiza su función:
- fp_enroll_finger( )
- fp_verify_finger( )
- fp_identify_finger( )
- fp_enroll_finger_img( )
- …
luego podríamos usar un trozo de código similar a esto:
if (is_imaging_device(dev))
fp_enroll_finger_img(&data, &img);
else
fp_enroll_finger(&data);
Para empezar a usar los dispositivos tendremos disponibles las siguiente funciones que son bastante autoexplicativas:
- fp_discover_devices()
- fp_dev_open() / fp_dev_close()
Para detectar qué dispositivo tenemos es fácil ya que el descriptor del dispositivo incluye un código con el Vendor (fabricante) y el Product ID (identificación de producto) que lo identifica inequívocamente. Por ejemplo, podremos obtener ese código con un simple ‘lsusb’.
Por debajo de la capa “Imaging layer” para escanear necesitaremos las funciones para detectar la presencia del dedo, escanear y detectar la ausencia de dedo.
Como ya hemos contado en otros posts, el dispositivo upek al ser autónomo no requerirá de estas funciones.
Igualmente dispondremos de una serie de funciones para el almacenamiento.
Para el que quiera entretenerse un rato aquí hay más información sobre la API disponible: http://www.reactivated.net/fprint/api/
–
Fuente original en http://vierito.es/wordpress

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