static void fprint_device_get_property(GObject *object, guint property_id, GValue *value, GParamSpec *pspec) { FprintDevice *self = (FprintDevice *) object; FprintDevicePrivate *priv = DEVICE_GET_PRIVATE(self); switch (property_id) { case FPRINT_DEVICE_IN_USE: g_value_set_boolean(value, g_hash_table_size (priv->clients) != 0); break; case FPRINT_DEVICE_NAME: g_value_set_static_string (value, fp_driver_get_full_name (fp_dscv_dev_get_driver (priv->ddev))); break; case FPRINT_DEVICE_NUM_ENROLL: if (priv->dev) g_value_set_int (value, fp_dev_get_nr_enroll_stages (priv->dev)); else g_value_set_int (value, -1); break; case FPRINT_DEVICE_SCAN_TYPE: { const char *type; if (fp_driver_get_scan_type (fp_dscv_dev_get_driver (priv->ddev)) == FP_SCAN_TYPE_PRESS) type = "press"; else type = "swipe"; g_value_set_static_string (value, type); break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; } }
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; }