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)
153typedef int (*biometric_api_get_capabilities)(
const struct device *dev,
177typedef int (*biometric_api_enroll_start)(
const struct device *dev,
uint16_t template_id);
184typedef int (*biometric_api_enroll_capture)(
const struct device *dev,
k_timeout_t timeout,
192typedef int (*biometric_api_enroll_finalize)(
const struct device *dev);
199typedef int (*biometric_api_enroll_abort)(
const struct device *dev);
206typedef int (*biometric_api_template_store)(
const struct device *dev,
uint16_t id,
222typedef int (*biometric_api_template_delete)(
const struct device *dev,
uint16_t id);
229typedef int (*biometric_api_template_delete_all)(
const struct device *dev);
236typedef int (*biometric_api_template_list)(
const struct device *dev,
uint16_t *ids,
237 size_t max_count,
size_t *actual_count);
258__subsystem
struct biometric_driver_api {
259 biometric_api_get_capabilities get_capabilities;
260 biometric_api_attr_set attr_set;
261 biometric_api_attr_get attr_get;
262 biometric_api_enroll_start enroll_start;
263 biometric_api_enroll_capture enroll_capture;
264 biometric_api_enroll_finalize enroll_finalize;
265 biometric_api_enroll_abort enroll_abort;
266 biometric_api_template_store template_store;
267 biometric_api_template_read template_read;
268 biometric_api_template_delete template_delete;
269 biometric_api_template_delete_all template_delete_all;
270 biometric_api_template_list template_list;
271 biometric_api_match match;
272 biometric_api_led_control led_control;
291static inline int z_impl_biometric_get_capabilities(
const struct device *dev,
294 const struct biometric_driver_api *api;
296 __ASSERT_NO_MSG(dev !=
NULL);
297 __ASSERT_NO_MSG(caps !=
NULL);
299 api = (
const struct biometric_driver_api *)dev->
api;
301 return api->get_capabilities(dev, caps);
322 const struct biometric_driver_api *api;
324 __ASSERT_NO_MSG(dev !=
NULL);
326 api = (
const struct biometric_driver_api *)dev->
api;
328 if (api->attr_set ==
NULL) {
332 return api->attr_set(dev, attr, val);
353 const struct biometric_driver_api *api;
355 __ASSERT_NO_MSG(dev !=
NULL);
356 __ASSERT_NO_MSG(val !=
NULL);
358 api = (
const struct biometric_driver_api *)dev->
api;
360 if (api->attr_get ==
NULL) {
364 return api->attr_get(dev, attr, val);
384static inline int z_impl_biometric_enroll_start(
const struct device *dev,
uint16_t template_id)
386 const struct biometric_driver_api *api;
388 __ASSERT_NO_MSG(dev !=
NULL);
390 api = (
const struct biometric_driver_api *)dev->
api;
392 return api->enroll_start(dev, template_id);
415static inline int z_impl_biometric_enroll_capture(
const struct device *dev,
k_timeout_t timeout,
418 const struct biometric_driver_api *api;
420 __ASSERT_NO_MSG(dev !=
NULL);
422 api = (
const struct biometric_driver_api *)dev->
api;
424 return api->enroll_capture(dev, timeout, result);
441static inline int z_impl_biometric_enroll_finalize(
const struct device *dev)
443 const struct biometric_driver_api *api;
445 __ASSERT_NO_MSG(dev !=
NULL);
447 api = (
const struct biometric_driver_api *)dev->
api;
449 return api->enroll_finalize(dev);
465static inline int z_impl_biometric_enroll_abort(
const struct device *dev)
467 const struct biometric_driver_api *api;
469 __ASSERT_NO_MSG(dev !=
NULL);
471 api = (
const struct biometric_driver_api *)dev->
api;
473 if (api->enroll_abort ==
NULL) {
477 return api->enroll_abort(dev);
500static inline int z_impl_biometric_template_store(
const struct device *dev,
uint16_t id,
501 const uint8_t *data,
size_t size)
503 const struct biometric_driver_api *api;
505 __ASSERT_NO_MSG(dev !=
NULL);
506 __ASSERT_NO_MSG(data !=
NULL);
508 api = (
const struct biometric_driver_api *)dev->
api;
510 if (api->template_store ==
NULL) {
514 return api->template_store(dev,
id, data, size);
537static inline int z_impl_biometric_template_read(
const struct device *dev,
uint16_t id,
540 const struct biometric_driver_api *api;
542 __ASSERT_NO_MSG(dev !=
NULL);
543 __ASSERT_NO_MSG(data !=
NULL);
545 api = (
const struct biometric_driver_api *)dev->
api;
547 if (api->template_read ==
NULL) {
551 return api->template_read(dev,
id, data, size);
567static inline int z_impl_biometric_template_delete(
const struct device *dev,
uint16_t id)
569 const struct biometric_driver_api *api;
571 __ASSERT_NO_MSG(dev !=
NULL);
573 api = (
const struct biometric_driver_api *)dev->
api;
575 return api->template_delete(dev,
id);
588static inline int z_impl_biometric_template_delete_all(
const struct device *dev)
590 const struct biometric_driver_api *api;
592 __ASSERT_NO_MSG(dev !=
NULL);
594 api = (
const struct biometric_driver_api *)dev->
api;
596 if (api->template_delete_all ==
NULL) {
600 return api->template_delete_all(dev);
616 size_t *actual_count);
618static inline int z_impl_biometric_template_list(
const struct device *dev,
uint16_t *ids,
619 size_t max_count,
size_t *actual_count)
621 const struct biometric_driver_api *api;
623 __ASSERT_NO_MSG(dev !=
NULL);
624 __ASSERT_NO_MSG(ids !=
NULL);
625 __ASSERT_NO_MSG(actual_count !=
NULL);
627 api = (
const struct biometric_driver_api *)dev->
api;
629 if (api->template_list ==
NULL) {
633 return api->template_list(dev, ids, max_count, actual_count);
663 const struct biometric_driver_api *api;
665 __ASSERT_NO_MSG(dev !=
NULL);
667 api = (
const struct biometric_driver_api *)dev->
api;
669 return api->match(dev, mode, template_id, timeout, result);
687static inline int z_impl_biometric_led_control(
const struct device *dev,
690 const struct biometric_driver_api *api;
692 __ASSERT_NO_MSG(dev !=
NULL);
694 api = (
const struct biometric_driver_api *)dev->
api;
696 if (api->led_control ==
NULL) {
700 return api->led_control(dev,
state);
711#include <zephyr/syscalls/biometrics.h>
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_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_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_enroll_start(const struct device *dev, uint16_t template_id)
Start biometric enrollment.
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_template_delete_all(const struct device *dev)
Delete all biometric templates.
int biometric_led_control(const struct device *dev, enum biometric_led_state state)
Control biometric sensor LED.
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.
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
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