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;
}
Esempio n. 7
0
File: fd_set.cpp Progetto: coyun/gvl
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
}