| /* Copyright 2016 The Chromium OS Authors. All rights reserved. |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef BIOD_FPC_FP_SENSOR_H_ |
| #define BIOD_FPC_FP_SENSOR_H_ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <stdint.h> |
| #include <sys/types.h> |
| |
| #define FP_MAX_REG_SIZE 30 |
| #define FP_MAX_SETUP_REGS 16 |
| |
| struct fp_setup_xfer_t { |
| uint8_t xfer_buf[FP_MAX_REG_SIZE]; |
| int32_t xfer_size; |
| }; |
| |
| struct fp_settings_data_t { |
| struct fp_setup_xfer_t xfers[FP_MAX_SETUP_REGS]; |
| int32_t number_of_xfres; |
| }; |
| |
| /* |
| * Opens the sensor library. |
| * |
| * fp_sensor_open is called once before subsequent usage of sensor api's. |
| * fp_sensor_close must be called when sensor functionality is no longer |
| * needed. The fd parameter carries an open file descriptor to the sensor |
| * driver. |
| * |
| * Returns 0 on success, negative error code (such as -ENOMEM) on failure. |
| */ |
| int fp_sensor_open(int fd); |
| |
| /* |
| * Closes the sensor library and frees resources held by the library. |
| * |
| * Returns 0 on success, negative error code on failure. |
| */ |
| int fp_sensor_close(void); |
| |
| /* |
| * Retrieves product information about the sensor. |
| * |
| * Returns 0 on success, negative error code (such as -EINVAL) on failure. |
| */ |
| int fp_sensor_get_model(uint32_t *vendor_id, uint32_t *product_id, |
| uint32_t *model_id, uint32_t *version); |
| |
| /* |
| * Retrieves the pixel format used by the sensor library. |
| * This is a fourcc value defined by V4L2 API. |
| * Could be a new define for biometric sensors or V4L2_PIX_FMT_GREY. |
| * |
| * Returns 0 on success, negative error code (such as -EINVAL) on failure. |
| */ |
| int fp_sensor_get_pixel_format(uint32_t *pixel_format); |
| |
| /* |
| * Returns the size of image data returned from the sensor. |
| * |
| * Returns negative error code on failure, or size of image data in bytes. |
| */ |
| ssize_t fp_sensor_get_image_data_size(void); |
| |
| /* |
| * Retrieves the width and height in pixels of images captured from the sensor. |
| * |
| * Returns 0 on success, negative error code (such as -EINVAL) on failure. |
| */ |
| int fp_sensor_get_image_dimensions(uint32_t *width, uint32_t *height); |
| |
| /* |
| * Acquires a fingerprint image. |
| * |
| * Function blocks waiting for a finger to be placed on sensor and then |
| * captures an image. The operation can be cancelled by calling |
| * fp_sensor_cancel. The image_data parameter points to an image data buffer |
| * allocated by the caller. |
| * |
| * Returns: |
| * - 0 on success |
| * - negative value on error |
| * - FP_SENSOR_LOW_IMAGE_QUALITY on image captured but quality is too low |
| * - FP_SENSOR_TOO_FAST on finger removed before image was captured |
| * - FP_SENSOR_LOW_SENSOR_COVERAGE on sensor not fully covered by finger |
| */ |
| #define FP_SENSOR_LOW_IMAGE_QUALITY 1 |
| #define FP_SENSOR_TOO_FAST 2 |
| #define FP_SENSOR_LOW_SENSOR_COVERAGE 3 |
| int fp_sensor_acquire_image(uint8_t *image_data, size_t size); |
| |
| /* |
| * Waits for finger to be lifted from sensor. |
| * |
| * The operation blocks as long as a finger is present on the sensor. |
| * The operation can be cancelled by calling fp_sensor_cancel. |
| * |
| * Returns 0 on success, negative error code on failure. |
| */ |
| int fp_sensor_wait_finger_up(void); |
| |
| /* |
| * Cancels an ongoing blocking fp lib operation. |
| * |
| * Returns 0 on success, negative error code on failure. |
| */ |
| int fp_sensor_cancel(void); |
| |
| /* |
| * Get sensor specfic settings data. |
| * |
| * Returns 0 on success, negative error code on failure. |
| */ |
| int fp_sensor_get_settings(struct fp_settings_data_t *settings); |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* BIOD_FPC_FP_SENSOR_H_ */ |