Initial driver registration mechanism
Also added the basis of the upekts driver, which is the first I'll implement.
This commit is contained in:
parent
7d3612d9f6
commit
046bdc0bda
5 changed files with 131 additions and 2 deletions
|
@ -1,9 +1,14 @@
|
|||
lib_LTLIBRARIES = libfprint.la
|
||||
|
||||
UPEKTS_SRC = drivers/upekts.c
|
||||
|
||||
DRIVER_SRC = $(UPEKTS_SRC)
|
||||
|
||||
libfprint_la_CFLAGS = -fvisibility=hidden $(LIBUSB_CFLAGS) $(GLIB_CFLAGS)
|
||||
libfprint_la_LDFLAGS = -version-info @lt_major@:@lt_revision@:@lt_age@
|
||||
libfprint_la_LIBADD = $(LIBUSB_LIBS) $(GLIB_LIBS)
|
||||
|
||||
libfprint_la_SOURCES = \
|
||||
core.c
|
||||
core.c \
|
||||
$(DRIVER_SRC)
|
||||
|
||||
|
|
|
@ -19,7 +19,31 @@
|
|||
|
||||
#include <config.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "fp_internal.h"
|
||||
|
||||
static GList *registered_drivers = NULL;
|
||||
|
||||
static void register_driver(const struct fp_driver *drv)
|
||||
{
|
||||
registered_drivers = g_list_prepend(registered_drivers, (gpointer) drv);
|
||||
}
|
||||
|
||||
static const struct fp_driver * const drivers[] = {
|
||||
&upekts_driver,
|
||||
};
|
||||
|
||||
static void register_drivers(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(drivers); i++)
|
||||
register_driver(drivers[i]);
|
||||
}
|
||||
|
||||
API_EXPORTED int fp_init(void)
|
||||
{
|
||||
register_drivers();
|
||||
return 0;
|
||||
}
|
||||
|
|
32
libfprint/drivers/upekts.c
Normal file
32
libfprint/drivers/upekts.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* UPEK TouchStrip driver for libfprint
|
||||
* Copyright (C) 2007 Daniel Drake <dsd@gentoo.org>
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#include <fp_internal.h>
|
||||
|
||||
static const struct usb_id id_table[] = {
|
||||
{ .vendor = 0x0483, .product = 0x2016 },
|
||||
{ 0 }, /* terminating entry */
|
||||
};
|
||||
|
||||
const struct fp_driver upekts_driver = {
|
||||
.name = "upekts",
|
||||
.full_name = "UPEK TouchStrip",
|
||||
.id_table = id_table,
|
||||
};
|
||||
|
42
libfprint/fp_internal.h
Normal file
42
libfprint/fp_internal.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Internal/private definitions for libfprint
|
||||
* Copyright (C) 2007 Daniel Drake <dsd@gentoo.org>
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __FPRINT_INTERNAL_H__
|
||||
#define __FPRINT_INTERNAL_H__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a))
|
||||
|
||||
struct usb_id {
|
||||
uint16_t vendor;
|
||||
uint16_t product;
|
||||
unsigned long driver_data;
|
||||
};
|
||||
|
||||
struct fp_driver {
|
||||
const char *name;
|
||||
const char *full_name;
|
||||
const struct usb_id * const id_table;
|
||||
};
|
||||
|
||||
extern const struct fp_driver upekts_driver;
|
||||
|
||||
#endif
|
||||
|
26
libfprint/fprint.h
Normal file
26
libfprint/fprint.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* Main definitions for libfprint
|
||||
* Copyright (C) 2007 Daniel Drake <dsd@gentoo.org>
|
||||
*
|
||||
* 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
|
||||
*/
|
||||
|
||||
#ifndef __FPRINT_H__
|
||||
#define __FPRINT_H__
|
||||
|
||||
int fp_init(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in a new issue