13#ifndef ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_
14#define ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_
56#define BIOMETRIC_STORAGE_DEVICE BIT(0)
57#define BIOMETRIC_STORAGE_HOST BIT(1)
224 size_t max_count,
size_t *actual_count);
318static inline int z_impl_biometric_get_capabilities(
const struct device *dev,
323 __ASSERT_NO_MSG(dev !=
NULL);
324 __ASSERT_NO_MSG(caps !=
NULL);
328 return api->get_capabilities(dev, caps);
351 __ASSERT_NO_MSG(dev !=
NULL);
355 if (api->attr_set ==
NULL) {
359 return api->attr_set(dev, attr, val);
382 __ASSERT_NO_MSG(dev !=
NULL);
383 __ASSERT_NO_MSG(val !=
NULL);
387 if (api->attr_get ==
NULL) {
391 return api->attr_get(dev, attr, val);
411static inline int z_impl_biometric_enroll_start(
const struct device *dev,
uint16_t template_id)
415 __ASSERT_NO_MSG(dev !=
NULL);
419 return api->enroll_start(dev, template_id);
442static inline int z_impl_biometric_enroll_capture(
const struct device *dev,
k_timeout_t timeout,
447 __ASSERT_NO_MSG(dev !=
NULL);
451 return api->enroll_capture(dev, timeout, result);
468static inline int z_impl_biometric_enroll_finalize(
const struct device *dev)
472 __ASSERT_NO_MSG(dev !=
NULL);
476 return api->enroll_finalize(dev);
493static inline int z_impl_biometric_enroll_abort(
const struct device *dev)
497 __ASSERT_NO_MSG(dev !=
NULL);
501 if (api->enroll_abort ==
NULL) {
505 return api->enroll_abort(dev);
528static inline int z_impl_biometric_template_store(
const struct device *dev,
uint16_t id,
529 const uint8_t *data,
size_t size)
533 __ASSERT_NO_MSG(dev !=
NULL);
534 __ASSERT_NO_MSG(data !=
NULL);
538 if (api->template_store ==
NULL) {
542 return api->template_store(dev,
id, data, size);
565static inline int z_impl_biometric_template_read(
const struct device *dev,
uint16_t id,
570 __ASSERT_NO_MSG(dev !=
NULL);
571 __ASSERT_NO_MSG(data !=
NULL);
575 if (api->template_read ==
NULL) {
579 return api->template_read(dev,
id, data, size);
595static inline int z_impl_biometric_template_delete(
const struct device *dev,
uint16_t id)
599 __ASSERT_NO_MSG(dev !=
NULL);
603 return api->template_delete(dev,
id);
617static inline int z_impl_biometric_template_delete_all(
const struct device *dev)
621 __ASSERT_NO_MSG(dev !=
NULL);
625 if (api->template_delete_all ==
NULL) {
629 return api->template_delete_all(dev);
645 size_t *actual_count);
647static inline int z_impl_biometric_template_list(
const struct device *dev,
uint16_t *ids,
648 size_t max_count,
size_t *actual_count)
652 __ASSERT_NO_MSG(dev !=
NULL);
653 __ASSERT_NO_MSG(ids !=
NULL);
654 __ASSERT_NO_MSG(actual_count !=
NULL);
658 if (api->template_list ==
NULL) {
662 return api->template_list(dev, ids, max_count, actual_count);
694 __ASSERT_NO_MSG(dev !=
NULL);
698 return api->match(dev, mode, template_id, timeout, result);
716static inline int z_impl_biometric_led_control(
const struct device *dev,
721 __ASSERT_NO_MSG(dev !=
NULL);
725 if (api->led_control ==
NULL) {
729 return api->led_control(dev,
state);
740#include <zephyr/syscalls/biometrics.h>
int(* biometric_api_template_delete)(const struct device *dev, uint16_t id)
Callback API to delete template.
Definition biometrics.h:211
int biometric_template_delete(const struct device *dev, uint16_t id)
Delete biometric template.
int biometric_attr_get(const struct device *dev, enum biometric_attribute attr, int32_t *val)
Get a biometric sensor attribute.
int(* biometric_api_enroll_start)(const struct device *dev, uint16_t template_id)
Callback API to start enrollment.
Definition biometrics.h:172
int biometric_enroll_capture(const struct device *dev, k_timeout_t timeout, struct biometric_capture_result *result)
Capture enrollment samples.
int biometric_enroll_abort(const struct device *dev)
Abort enrollment.
int(* biometric_api_enroll_finalize)(const struct device *dev)
Callback API to finalize enrollment.
Definition biometrics.h:185
int(* biometric_api_get_capabilities)(const struct device *dev, struct biometric_capabilities *caps)
@def_driverbackendgroup{Biometrics,biometrics_interface}
Definition biometrics.h:151
int biometric_attr_set(const struct device *dev, enum biometric_attribute attr, int32_t val)
Set a biometric sensor attribute.
int biometric_match(const struct device *dev, enum biometric_match_mode mode, uint16_t template_id, k_timeout_t timeout, struct biometric_match_result *result)
Perform biometric matching.
int(* biometric_api_attr_get)(const struct device *dev, enum biometric_attribute attr, int32_t *val)
Callback API to get a sensor attribute.
Definition biometrics.h:165
int(* biometric_api_match)(const struct device *dev, enum biometric_match_mode mode, uint16_t template_id, k_timeout_t timeout, struct biometric_match_result *result)
Callback API to start matching operation.
Definition biometrics.h:230
int biometric_enroll_start(const struct device *dev, uint16_t template_id)
Start biometric enrollment.
int(* biometric_api_enroll_capture)(const struct device *dev, k_timeout_t timeout, struct biometric_capture_result *result)
Callback API to capture enrollment samples.
Definition biometrics.h:178
int(* biometric_api_template_delete_all)(const struct device *dev)
Callback API to delete all templates.
Definition biometrics.h:217
biometric_led_state
Biometric LED states.
Definition biometrics.h:62
int biometric_template_read(const struct device *dev, uint16_t id, uint8_t *data, size_t size)
Read biometric template.
biometric_sensor_type
Biometrics sensor types.
Definition biometrics.h:38
int biometric_template_list(const struct device *dev, uint16_t *ids, size_t max_count, size_t *actual_count)
List stored template IDs.
int biometric_get_capabilities(const struct device *dev, struct biometric_capabilities *caps)
Get biometric sensor capabilities.
int(* biometric_api_led_control)(const struct device *dev, enum biometric_led_state state)
Callback API to control LED state.
Definition biometrics.h:238
int(* biometric_api_template_store)(const struct device *dev, uint16_t id, const uint8_t *data, size_t size)
Callback API to store template.
Definition biometrics.h:197
int biometric_template_delete_all(const struct device *dev)
Delete all biometric templates.
int(* biometric_api_template_list)(const struct device *dev, uint16_t *ids, size_t max_count, size_t *actual_count)
Callback API to list template IDs.
Definition biometrics.h:223
int biometric_led_control(const struct device *dev, enum biometric_led_state state)
Control biometric sensor LED.
int(* biometric_api_enroll_abort)(const struct device *dev)
Callback API to abort enrollment.
Definition biometrics.h:191
int(* biometric_api_attr_set)(const struct device *dev, enum biometric_attribute attr, int32_t val)
Callback API to set a sensor attribute.
Definition biometrics.h:158
biometric_match_mode
Biometric matching modes.
Definition biometrics.h:48
int biometric_template_store(const struct device *dev, uint16_t id, const uint8_t *data, size_t size)
Store biometric template.
int biometric_enroll_finalize(const struct device *dev)
Finalize enrollment.
int(* biometric_api_template_read)(const struct device *dev, uint16_t id, uint8_t *data, size_t size)
Callback API to read template data.
Definition biometrics.h:204
biometric_attribute
Biometric attribute types.
Definition biometrics.h:72
@ BIOMETRIC_LED_BREATHE
LED breathing effect.
Definition biometrics.h:66
@ BIOMETRIC_LED_ON
LED on continuously.
Definition biometrics.h:64
@ BIOMETRIC_LED_BLINK
LED blinking.
Definition biometrics.h:65
@ BIOMETRIC_LED_OFF
LED off.
Definition biometrics.h:63
@ BIOMETRIC_TYPE_FACE
Face recognition.
Definition biometrics.h:41
@ BIOMETRIC_TYPE_IRIS
Iris scanner.
Definition biometrics.h:40
@ BIOMETRIC_TYPE_VOICE
Voice recognition.
Definition biometrics.h:42
@ BIOMETRIC_TYPE_FINGERPRINT
Fingerprint sensor.
Definition biometrics.h:39
@ BIOMETRIC_MATCH_IDENTIFY
Search entire database.
Definition biometrics.h:50
@ BIOMETRIC_MATCH_VERIFY
Verify against specific template.
Definition biometrics.h:49
@ BIOMETRIC_ATTR_COMMON_COUNT
Number of all common biometric attributes.
Definition biometrics.h:88
@ BIOMETRIC_ATTR_MAX
Maximum value describing a biometric attribute type.
Definition biometrics.h:97
@ BIOMETRIC_ATTR_SECURITY_LEVEL
Security level (1-10), higher values reduce false accepts.
Definition biometrics.h:78
@ BIOMETRIC_ATTR_MATCH_THRESHOLD
Minimum confidence score for match acceptance (sensor-specific range)
Definition biometrics.h:74
@ BIOMETRIC_ATTR_ENROLLMENT_QUALITY
Minimum quality score for enrollment acceptance (sensor-specific range)
Definition biometrics.h:76
@ BIOMETRIC_ATTR_IMAGE_QUALITY
Last captured image quality score (sensor-specific range), read-only.
Definition biometrics.h:84
@ BIOMETRIC_ATTR_ANTI_SPOOF_LEVEL
Anti-spoofing detection sensitivity (1-10)
Definition biometrics.h:82
@ BIOMETRIC_ATTR_TIMEOUT_MS
Default operation timeout in milliseconds.
Definition biometrics.h:80
@ BIOMETRIC_ATTR_PRIV_START
This and higher values are sensor specific.
Definition biometrics.h:93
#define ENOSYS
Function not implemented.
Definition errno.h:82
#define NULL
Definition iar_missing_defs.h:20
state
Definition parser_state.h:29
__INT32_TYPE__ int32_t
Definition stdint.h:74
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
#define INT16_MAX
Definition stdint.h:17
Biometric sensor capabilities.
Definition biometrics.h:103
uint8_t enrollment_samples_required
Number of samples needed for enrollment.
Definition biometrics.h:113
uint16_t template_size
Size of each template in bytes.
Definition biometrics.h:109
uint8_t storage_modes
Bitmask of supported storage modes.
Definition biometrics.h:111
uint16_t max_templates
Maximum templates device can store.
Definition biometrics.h:107
enum biometric_sensor_type type
Biometric sensor type.
Definition biometrics.h:105
Result from an enrollment capture operation.
Definition biometrics.h:133
uint8_t samples_required
Total number of samples required for enrollment.
Definition biometrics.h:137
uint8_t quality
Quality score of the captured sample (0-100)
Definition biometrics.h:139
uint8_t samples_captured
Number of samples captured so far.
Definition biometrics.h:135
@driver_ops{Biometrics}
Definition biometrics.h:243
biometric_api_get_capabilities get_capabilities
@driver_ops_mandatory Get biometric sensor capabilities.
Definition biometrics.h:247
biometric_api_template_list template_list
@driver_ops_optional List stored template IDs.
Definition biometrics.h:291
biometric_api_template_delete template_delete
@driver_ops_mandatory Delete biometric template.
Definition biometrics.h:283
biometric_api_attr_get attr_get
@driver_ops_optional Get a biometric sensor attribute.
Definition biometrics.h:255
biometric_api_template_delete_all template_delete_all
@driver_ops_optional Delete all biometric templates.
Definition biometrics.h:287
biometric_api_template_store template_store
@driver_ops_optional Store biometric template.
Definition biometrics.h:275
biometric_api_enroll_abort enroll_abort
@driver_ops_optional Abort enrollment.
Definition biometrics.h:271
biometric_api_attr_set attr_set
@driver_ops_optional Set a biometric sensor attribute.
Definition biometrics.h:251
biometric_api_template_read template_read
@driver_ops_optional Read biometric template.
Definition biometrics.h:279
biometric_api_enroll_capture enroll_capture
@driver_ops_mandatory Capture enrollment samples.
Definition biometrics.h:263
biometric_api_enroll_finalize enroll_finalize
@driver_ops_mandatory Finalize enrollment.
Definition biometrics.h:267
biometric_api_enroll_start enroll_start
@driver_ops_mandatory Start biometric enrollment.
Definition biometrics.h:259
biometric_api_match match
@driver_ops_mandatory Perform biometric matching.
Definition biometrics.h:295
biometric_api_led_control led_control
@driver_ops_optional Control biometric sensor LED.
Definition biometrics.h:299
Result from a biometric match operation.
Definition biometrics.h:119
int32_t confidence
Confidence/match score (sensor-specific scale, higher is better)
Definition biometrics.h:121
uint8_t image_quality
Quality score of the captured sample used for matching (0-100)
Definition biometrics.h:125
uint16_t template_id
Matched template ID (for IDENTIFY mode, or verified ID for VERIFY mode)
Definition biometrics.h:123
Runtime device structure (in ROM) per driver instance.
Definition device.h:513
void * data
Address of the device instance private data.
Definition device.h:523
const void * api
Address of the API structure exposed by the device instance.
Definition device.h:519
Kernel timeout type.
Definition clock.h:65