summaryrefslogtreecommitdiff
path: root/include/fpsensor_alg.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/fpsensor_alg.h')
-rw-r--r--include/fpsensor_alg.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/include/fpsensor_alg.h b/include/fpsensor_alg.h
new file mode 100644
index 0000000000..ba86359ba0
--- /dev/null
+++ b/include/fpsensor_alg.h
@@ -0,0 +1,78 @@
+/* Copyright 2023 The ChromiumOS Authors
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+/* Fingerprint sensor interface */
+
+#ifndef __CROS_EC_FPSENSOR_ALG_H
+#define __CROS_EC_FPSENSOR_ALG_H
+
+#include <stdint.h>
+
+/**
+ * Compares given finger image against enrolled templates.
+ *
+ * The matching algorithm can update the template with additional biometric data
+ * from the image, if it chooses to do so.
+ *
+ * @param[in,out] templ a pointer to the array of template buffers.
+ * @param templ_count the number of buffers in the array of templates.
+ * @param[in] image the buffer containing the finger image
+ * @param match_index index of the matched finger in the template array if any.
+ * @param[out] update_bitmap contains one bit per template, the bit is set if
+ * the match has updated the given template.
+ *
+ * @return EC_MKBP_FP_ERR_MATCH_NO on non-match
+ * @return EC_MKBP_FP_ERR_MATCH_YES for match when template was not updated with
+ * new data
+ * @return EC_MKBP_FP_ERR_MATCH_YES_UPDATED for match when template was updated
+ * @return EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED match, but update failed (not
+ * saved)
+ * @return EC_MKBP_FP_ERR_MATCH_LOW_QUALITY when matching could not be performed
+ * due to low image quality
+ * @return EC_MKBP_FP_ERR_MATCH_LOW_COVERAGE when matching could not be
+ * performed due to finger covering too little area of the sensor
+ * @return negative value on error
+ */
+int fp_finger_match(void *templ, uint32_t templ_count, uint8_t *image,
+ int32_t *match_index, uint32_t *update_bitmap);
+
+/**
+ * Start a finger enrollment session.
+ *
+ * @return 0 on success
+ * @return negative value on error
+ */
+int fp_enrollment_begin(void);
+
+/**
+ * Generate a template from the finger whose enrollment has just being
+ * completed.
+ *
+ * @param[out] templ template buffer, which can be set to NULL to abort current
+ * enrollment process.
+ *
+ * @return 0 on success, negative value on error
+ */
+int fp_enrollment_finish(void *templ);
+
+/**
+ * Adds fingerprint image to the current enrollment session.
+ *
+ * @param[in] image Image to add to enrollment
+ * @param[out] completion The percentage of the enrollment process that is
+ * complete: [0-100].
+ *
+ * @return 0 on success
+ * @return EC_MKBP_FP_ERR_ENROLL_OK when image was successfully enrolled
+ * @return EC_MKBP_FP_ERR_ENROLL_IMMOBILE when image added, but user should be
+ * advised to move finger
+ * @return EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY when image could not be used due to
+ * low image quality
+ * @return EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE when image could not be used
+ * due to finger covering too little area of the sensor
+ */
+int fp_finger_enroll(uint8_t *image, int *completion);
+
+#endif /* __CROS_EC_FPSENSOR_ALG_H */