static struct fp_print_data *enroll(struct fp_dev *dev, enum fp_finger finger) { struct fp_print_data *enrolled_print = NULL; int r; printf("You will need to successfully scan your %s %d times to " "complete the process.\n", finger_names[finger], fp_dev_get_nr_enroll_stages(dev)); do { sleep(1); printf("\nScan your finger now.\n"); r = fp_enroll_finger_img(dev, &enrolled_print, NULL); if (r < 0) { printf("Enroll failed with error %d\n", r); return NULL; } switch (r) { case FP_ENROLL_COMPLETE: printf("Enroll complete!\n"); break; case FP_ENROLL_FAIL: printf("Enroll failed, something wen't wrong :(\n"); return NULL; case FP_ENROLL_PASS: printf("Enroll stage passed. Yay!\n"); break; case FP_ENROLL_RETRY: printf("Didn't quite catch that. Please try again.\n"); break; case FP_ENROLL_RETRY_TOO_SHORT: printf("Your swipe was too short, please try again.\n"); break; case FP_ENROLL_RETRY_CENTER_FINGER: printf("Didn't catch that, please center your finger on the " "sensor and try again.\n"); break; case FP_ENROLL_RETRY_REMOVE_FINGER: printf("Scan failed, please remove your finger and then try " "again.\n"); break; } } while (r != FP_ENROLL_COMPLETE); if (!enrolled_print) { fprintf(stderr, "Enroll complete but no print?\n"); return NULL; } printf("Enrollment completed!\n\n"); return enrolled_print; }
int main(void) { // Vars struct fp_dev *device; struct fp_driver *driver; struct fp_print_data *print_data; struct fp_img *img; int err; // Init the LCD lcdinit(0x00, 0x12, 0x20); lcd_reset(); // Init libfprint fp_init(); // Init the keypad matrix_init(4, 17, 27, 22, 10, 9, 11, handle_key_press); // Signal handler - does an fp_exit() on SIGINT init_signals(); // Get the first fingerprint device if ((err = get_fingerprint_device(&device)) < 0 || !device) { // Errorz if (err == -1) { error("No devices found"); } else if (err == -2) { error("Couldn't open the device"); } return 1; } // Get driver driver = fp_dev_get_driver(device); // Init message printf("Programme started! Device is %s\n\n", fp_driver_get_full_name(driver)); // Scan the print fp_enroll_finger_img(device, &print_data, &img); // Deinit libfprint fp_exit(); return 0; }
int main(){ //initialize if (fp_init()){ printf("libfprint patladi!\n"); exit(1); //failure } //dev discovery struct fp_dscv_dev** ddevicelist; struct fp_dscv_dev* ddevice; if (!(ddevicelist = fp_discover_devs())){ //listeyi al printf("Device discovery calismadi!\n"); exit(1); //failure } if(!(ddevice = ddevicelist[0])){ //bos? TODO: 2 alet varsa nolacak? printf("Alet nerde?\n"); exit(1); //failure } print_driver_info(ddevice); //open device struct fp_dev* device; if(!(device = fp_dev_open(ddevice))){ printf("Okuyucu baslamadi!\n"); exit(1); //failure } //enroll //printf("%d", fp_dev_get_nr_enroll_stages(device)); //tek olmali, cunku laptop. int done = 0; struct fp_print_data* guvenliparmak = NULL; while(!done){ switch(fp_enroll_finger_img(device, &guvenliparmak, NULL)){ case FP_ENROLL_FAIL: printf("Parmakizi alimi tamamlanamadi!\n"); exit(1); //fail case FP_ENROLL_COMPLETE: done = 1; printf("Parmakizi alimi basariyla tamamlandi.\n"); break; case FP_ENROLL_PASS: printf("Tanima asamasi basarili..\n"); break; default: printf("Yeniden deneyin!\n"); break; } } fp_print_data_free(guvenliparmak); //cleanup fp_dev_close(device); fp_exit(); return 0; }