static int fingerprint_get_enrollment_info(struct fingerprint_device *dev, enrollment_info_t **enrollmentInfo) { ALOGV("fingerprint_get_enrollment_info"); android::Vector<uint32_t> ids; int ret = to_impl(dev)->getEnrolledIds(ids); if (ret != 0) { ALOGE("Getting enrolled fingerprints failed: %d", ret); return FINGERPRINT_ERROR; } enrollment_info_t *info = new enrollment_info_t; if (!info) { ALOGE("Allocating enrollment info failed"); return FINGERPRINT_ERROR; } info->num_fingers = ids.size(); info->fpinfo = new fingerprint_t[ids.size()]; if (!info->fpinfo) { ALOGE("Allocating fingerprint info failed"); delete info; return FINGERPRINT_ERROR; } for (size_t i = 0; i < ids.size(); i++) { info->fpinfo[i].index = ids[i]; } *enrollmentInfo = info; return 0; }
static int fingerprint_cancel(struct fingerprint_device *dev) { ALOGV("fingerprint_cancel"); int ret = to_impl(dev)->goToIdleState(); if (ret != 0) { ALOGE("Transitioning state machine to idle state failed: %d", ret); return FINGERPRINT_ERROR; } return 0; }
static int fingerprint_authenticate(struct fingerprint_device *dev) { ALOGV("fingerprint_authenticate"); int ret = to_impl(dev)->startAuthentication(); if (ret != 0) { ALOGE("Starting authentication mode failed: %d", ret); return FINGERPRINT_ERROR; } return 0; }
static int fingerprint_enroll(struct fingerprint_device *dev, uint32_t timeout_sec) { ALOGV("fingerprint_enroll, timeout %d sec", timeout_sec); int ret = to_impl(dev)->startEnrollment(timeout_sec); if (ret != 0) { ALOGE("Starting enrollment mode failed: %d", ret); return FINGERPRINT_ERROR; } return 0; }
static int fingerprint_set_parameters(struct fingerprint_device *dev, const char *kvpairs) { ALOGV("fingerprint_set_parameters %s", kvpairs); android::KeyedVector<android::String8, android::String8> paramMap; // from CameraParameters.cpp const char *a = kvpairs, *b; for (;;) { // Find the bounds of the key name. b = strchr(a, '='); if (b == 0) break; // Create the key string. android::String8 k(a, (size_t)(b-a)); // Find the value. a = b+1; b = strchr(a, ';'); if (b == 0) { // If there's no semicolon, this is the last item. android::String8 v(a); paramMap.add(k, v); break; } android::String8 v(a, (size_t)(b-a)); paramMap.add(k, v); a = b+1; } bool wakeup = paramMap.valueFor(android::String8("wakeup")) == "1"; int ret = to_impl(dev)->setWakeupMode(wakeup); if (ret != 0) { ALOGE("Setting wakeup mode failed: %d", ret); return FINGERPRINT_ERROR; } return 0; }
static int fingerprint_remove(struct fingerprint_device *dev, uint32_t fingerprint_id) { ALOGV("fingerprint_remove, id 0x%08x", fingerprint_id); int ret = to_impl(dev)->removeId(fingerprint_id); if (ret != 0) { ALOGE("Removing enrolled fingerprint failed: %d", ret); return FINGERPRINT_ERROR; } fingerprint_notify_t notify = fingerprint_get_notify(dev); if (notify) { fingerprint_msg_t msg; msg.type = FINGERPRINT_TEMPLATE_REMOVED; msg.data.removed.id = fingerprint_id; notify(msg); } return 0; }
int select(select_fd_set* readfds, select_fd_set* writefds, select_fd_set* errorfds) { timeval tv; tv.tv_sec = 0; tv.tv_usec = 0; #if GVL_WIN32==1 return ::select(0, to_impl(readfds), to_impl(writefds), to_impl(errorfds), &tv); #else return ::select(FD_SETSIZE, to_impl(readfds), to_impl(writefds), to_impl(errorfds), &tv); #endif }