diff --git a/libfprint/Makefile.am b/libfprint/Makefile.am index 7f798280..1d3fa913 100644 --- a/libfprint/Makefile.am +++ b/libfprint/Makefile.am @@ -10,5 +10,6 @@ libfprint_la_LIBADD = $(LIBUSB_LIBS) $(GLIB_LIBS) libfprint_la_SOURCES = \ core.c \ + data.c \ $(DRIVER_SRC) diff --git a/libfprint/data.c b/libfprint/data.c new file mode 100644 index 00000000..b9222376 --- /dev/null +++ b/libfprint/data.c @@ -0,0 +1,47 @@ +/* + * Fingerprint data handling and storage + * Copyright (C) 2007 Daniel Drake + * + * 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 +#include + +#include + +#include "fp_internal.h" + +struct fp_print_data *fpi_print_data_new(struct fp_driver *drv, size_t length) +{ + struct fp_print_data *data = g_malloc(sizeof(*data) + length); + data->driver_name = drv->name; + data->length = length; +} + +unsigned char *fpi_print_data_get_buffer(struct fp_print_data *data) +{ + return data->buffer; +} + +API_EXPORTED void fp_print_data_free(struct fp_print_data *data) +{ + g_free(data); +} + +int fpi_print_data_compatible(struct fp_dev *dev, struct fp_print_data *data) +{ + return strcmp(dev->drv->name, data->driver_name) == 0; +} diff --git a/libfprint/fp_internal.h b/libfprint/fp_internal.h index c4629dec..34d1231e 100644 --- a/libfprint/fp_internal.h +++ b/libfprint/fp_internal.h @@ -57,5 +57,15 @@ struct fp_dscv_dev { const struct fp_driver *drv; }; +struct fp_print_data { + const char *driver_name; + size_t length; + unsigned char buffer[0]; +}; + +struct fp_print_data *fpi_print_data_new(struct fp_driver *drv, size_t length); +unsigned char *fpi_print_data_get_buffer(struct fp_print_data *data); +int fpi_print_data_compatible(struct fp_dev *dev, struct fp_print_data *data); + #endif diff --git a/libfprint/fprint.h b/libfprint/fprint.h index 3a3f34e0..14a5f381 100644 --- a/libfprint/fprint.h +++ b/libfprint/fprint.h @@ -24,6 +24,7 @@ struct fp_dscv_dev; struct fp_dev; struct fp_driver; +struct fp_print_data; /* Device discovery */ struct fp_dscv_dev **fp_discover_devs(void); @@ -39,6 +40,10 @@ const struct fp_driver *fp_dev_get_driver(struct fp_dev *dev); const char *fp_driver_get_name(const struct fp_driver *drv); const char *fp_driver_get_full_name(const struct fp_driver *drv); +/* Data handling */ +void fp_print_data_free(struct fp_print_data *data); + +/* Library */ int fp_init(void); #endif