00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef THINKFINGER_H
00028 #define THINKFINGER_H
00029
00030 #define _GNU_SOURCE
00031
00032 #include <stdio.h>
00033 #include <stdbool.h>
00034 #include <string.h>
00035 #include <signal.h>
00036 #include <usb.h>
00037 #include <fcntl.h>
00038 #include <errno.h>
00039 #include <pthread.h>
00040
00041 #include <config.h>
00042
00043 #ifdef __cplusplus
00044 extern "C" {
00045 #endif
00046
00051 typedef unsigned int u32;
00052 typedef unsigned short u16;
00053 typedef unsigned char u8;
00054
00055 typedef struct libthinkfinger_s libthinkfinger;
00056
00057 typedef enum {
00058 TF_INIT_SUCCESS = 0x00,
00059 TF_INIT_NO_MEMORY = 0x01,
00060 TF_INIT_USB_INIT_SUCCESS = 0x02,
00061 TF_INIT_USB_DEVICE_NOT_FOUND = 0x03,
00062 TF_INIT_USB_OPEN_FAILED = 0x04,
00063 TF_INIT_USB_CLAIM_FAILED = 0x05,
00064 TF_INIT_USB_HELLO_FAILED = 0x06,
00065 TF_INIT_UNDEFINED = 0xff
00066 } libthinkfinger_init_status;
00067
00068 typedef enum {
00069 TF_TASK_IDLE = 0x00,
00070 TF_TASK_INIT = 0x01,
00071 TF_TASK_ACQUIRE = 0x02,
00072 TF_TASK_VERIFY = 0x03,
00073 TF_TASK_UNDEFINED = 0xff
00074 } libthinkfinger_task;
00075
00076 typedef enum {
00077 TF_STATE_INITIAL = 0x00,
00078 TF_STATE_UNCHANGED = 0x01,
00079 TF_STATE_SWIPE_0 = 0x02,
00080 TF_STATE_SWIPE_1 = 0x03,
00081 TF_STATE_SWIPE_2 = 0x04,
00082 TF_STATE_SWIPE_SUCCESS = 0x05,
00083 TF_STATE_SWIPE_FAILED = 0x06,
00084 TF_STATE_ENROLL_SUCCESS = 0x07,
00085 TF_STATE_ACQUIRE_SUCCESS = 0x08,
00086 TF_STATE_ACQUIRE_FAILED = 0x09,
00087 TF_STATE_VERIFY_SUCCESS = 0x0a,
00088 TF_STATE_VERIFY_FAILED = 0x0b,
00089 TF_STATE_OPEN_FAILED = 0xfb,
00090 TF_STATE_SIGINT = 0xfc,
00091 TF_STATE_USB_ERROR = 0xfd,
00092 TF_STATE_COMM_FAILED = 0xfe,
00093 TF_STATE_UNDEFINED = 0xff
00094 } libthinkfinger_state;
00095
00096 typedef enum {
00097 TF_RESULT_ACQUIRE_SUCCESS = TF_STATE_ACQUIRE_SUCCESS,
00098 TF_RESULT_ACQUIRE_FAILED = TF_STATE_ACQUIRE_FAILED,
00099 TF_RESULT_VERIFY_SUCCESS = TF_STATE_VERIFY_SUCCESS,
00100 TF_RESULT_VERIFY_FAILED = TF_STATE_VERIFY_FAILED,
00101 TF_RESULT_OPEN_FAILED = TF_STATE_OPEN_FAILED,
00102 TF_RESULT_SIGINT = TF_STATE_SIGINT,
00103 TF_RESULT_USB_ERROR = TF_STATE_USB_ERROR,
00104 TF_RESULT_COMM_FAILED = TF_STATE_COMM_FAILED,
00105 TF_RESULT_UNDEFINED = TF_STATE_UNDEFINED
00106 } libthinkfinger_result;
00107
00116 typedef void (*libthinkfinger_state_cb) (libthinkfinger_state state, void *data);
00117
00125 int libthinkfinger_set_file(libthinkfinger *tf, const char *file);
00126
00136 int libthinkfinger_set_callback(libthinkfinger *tf, libthinkfinger_state_cb state, void *data);
00137
00146 libthinkfinger_result libthinkfinger_acquire(libthinkfinger *tf);
00147
00156 libthinkfinger_result libthinkfinger_verify(libthinkfinger *tf);
00157
00166 libthinkfinger *libthinkfinger_new(libthinkfinger_init_status* init_status);
00167
00174 void libthinkfinger_free(libthinkfinger *tf);
00175
00176 #ifdef __cplusplus
00177 }
00178 #endif
00179
00180 #endif
00181