示例#1
0
static int fingerprint_remove(struct fingerprint_device __unused *dev,
                              uint32_t __unused gid, uint32_t __unused fid)
{

    //Maximum prints per gid is 5
    uint32_t prints[5];
    uint32_t print_count = fpc_get_print_count();

    fpc_get_pint_index_cmd_t print_indexs = fpc_get_print_index(print_count);

    //populate print array with index
    prints[0] = print_indexs.p1;
    prints[1] = print_indexs.p2;
    prints[2] = print_indexs.p3;
    prints[3] = print_indexs.p4;
    prints[4] = print_indexs.p5;

    ALOGI("%s : delete print : %lu", __func__,(unsigned long) fid);

    for (int i = 0; i < 5; i++){
        uint32_t print_id = fpc_get_print_id(prints[i]);

        ALOGI("%s : found print : %lu at index %d", __func__,(unsigned long) print_id, i);

        if (print_id == fid){
            ALOGI("%s : Print index found at : %d", __func__, i);

            int ret = fpc_del_print_id(prints[i]);

            ALOGI("%s : fpc_del_print_id returns : %d", __func__, ret);

            if (ret == 0){

                uint32_t db_length = fpc_get_user_db_length();
                ALOGI("%s : User Database Length Is : %lu", __func__,(unsigned long) db_length);
                fpc_store_user_db(db_length, db_path);

                fingerprint_msg_t msg;
                msg.type = FINGERPRINT_TEMPLATE_REMOVED;
                msg.data.removed.finger.fid = print_id;
                msg.data.removed.finger.gid = 0;
                callback(&msg);

                return 0;
            }
        }
    }
    return FINGERPRINT_ERROR;
}
static int fingerprint_enumerate(struct fingerprint_device __unused *dev,
                                 fingerprint_finger_id_t *results,
                                 uint32_t *max_size)
{

    uint32_t print_count = fpc_get_print_count();
    ALOGD("%s : print count is : %u", __func__, print_count);
    fpc_fingerprint_index_t print_indexs = fpc_get_print_index(print_count);

    if (*max_size == 0) {
        *max_size = print_count;
    } else {
        for (size_t i = 0; i < *max_size && i < print_count; i++) {
            ALOGD("%s : found print : %lu at index %lu", __func__,(unsigned long) print_indexs.prints[i], i);

            results[i].fid = print_indexs.prints[i];
            results[i].gid = fpc_gid;
        }
    }

    return print_count;
}