Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
biometrics.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 Siratul Islam <email@sirat.me>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
12
13#ifndef ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_
14#define ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_
15
24
25#include <zephyr/device.h>
26#include <zephyr/kernel.h>
27#include <errno.h>
28#include <stddef.h>
29#include <zephyr/types.h>
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
44
52
56#define BIOMETRIC_STORAGE_DEVICE BIT(0)
57#define BIOMETRIC_STORAGE_HOST BIT(1)
58
68
99
115
127
141
146
151typedef int (*biometric_api_get_capabilities)(const struct device *dev,
152 struct biometric_capabilities *caps);
153
158typedef int (*biometric_api_attr_set)(const struct device *dev, enum biometric_attribute attr,
159 int32_t val);
160
165typedef int (*biometric_api_attr_get)(const struct device *dev, enum biometric_attribute attr,
166 int32_t *val);
167
172typedef int (*biometric_api_enroll_start)(const struct device *dev, uint16_t template_id);
173
178typedef int (*biometric_api_enroll_capture)(const struct device *dev, k_timeout_t timeout,
179 struct biometric_capture_result *result);
180
185typedef int (*biometric_api_enroll_finalize)(const struct device *dev);
186
191typedef int (*biometric_api_enroll_abort)(const struct device *dev);
192
197typedef int (*biometric_api_template_store)(const struct device *dev, uint16_t id,
198 const uint8_t *data, size_t size);
199
204typedef int (*biometric_api_template_read)(const struct device *dev, uint16_t id, uint8_t *data,
205 size_t size);
206
211typedef int (*biometric_api_template_delete)(const struct device *dev, uint16_t id);
212
217typedef int (*biometric_api_template_delete_all)(const struct device *dev);
218
223typedef int (*biometric_api_template_list)(const struct device *dev, uint16_t *ids,
224 size_t max_count, size_t *actual_count);
225
230typedef int (*biometric_api_match)(const struct device *dev, enum biometric_match_mode mode,
231 uint16_t template_id, k_timeout_t timeout,
232 struct biometric_match_result *result);
233
238typedef int (*biometric_api_led_control)(const struct device *dev, enum biometric_led_state state);
239
301
305
315__syscall int biometric_get_capabilities(const struct device *dev,
316 struct biometric_capabilities *caps);
317
318static inline int z_impl_biometric_get_capabilities(const struct device *dev,
319 struct biometric_capabilities *caps)
320{
321 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
322
323 __ASSERT_NO_MSG(caps != NULL);
324
325 return api->get_capabilities(dev, caps);
326}
327
340__syscall int biometric_attr_set(const struct device *dev, enum biometric_attribute attr,
341 int32_t val);
342
343static inline int z_impl_biometric_attr_set(const struct device *dev, enum biometric_attribute attr,
344 int32_t val)
345{
346 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
347
348 if (api->attr_set == NULL) {
349 return -ENOSYS;
350 }
351
352 return api->attr_set(dev, attr, val);
353}
354
367__syscall int biometric_attr_get(const struct device *dev, enum biometric_attribute attr,
368 int32_t *val);
369
370static inline int z_impl_biometric_attr_get(const struct device *dev, enum biometric_attribute attr,
371 int32_t *val)
372{
373 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
374
375 __ASSERT_NO_MSG(val != NULL);
376
377 if (api->attr_get == NULL) {
378 return -ENOSYS;
379 }
380
381 return api->attr_get(dev, attr, val);
382}
383
399__syscall int biometric_enroll_start(const struct device *dev, uint16_t template_id);
400
401static inline int z_impl_biometric_enroll_start(const struct device *dev, uint16_t template_id)
402{
403 return DEVICE_API_GET(biometric, dev)->enroll_start(dev, template_id);
404}
405
423__syscall int biometric_enroll_capture(const struct device *dev, k_timeout_t timeout,
424 struct biometric_capture_result *result);
425
426static inline int z_impl_biometric_enroll_capture(const struct device *dev, k_timeout_t timeout,
427 struct biometric_capture_result *result)
428{
429 return DEVICE_API_GET(biometric, dev)->enroll_capture(dev, timeout, result);
430}
431
444__syscall int biometric_enroll_finalize(const struct device *dev);
445
446static inline int z_impl_biometric_enroll_finalize(const struct device *dev)
447{
448 return DEVICE_API_GET(biometric, dev)->enroll_finalize(dev);
449}
450
463__syscall int biometric_enroll_abort(const struct device *dev);
464
465static inline int z_impl_biometric_enroll_abort(const struct device *dev)
466{
467 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
468
469 if (api->enroll_abort == NULL) {
470 return -ENOSYS;
471 }
472
473 return api->enroll_abort(dev);
474}
475
493__syscall int biometric_template_store(const struct device *dev, uint16_t id, const uint8_t *data,
494 size_t size);
495
496static inline int z_impl_biometric_template_store(const struct device *dev, uint16_t id,
497 const uint8_t *data, size_t size)
498{
499 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
500
501 __ASSERT_NO_MSG(data != NULL);
502
503 if (api->template_store == NULL) {
504 return -ENOSYS;
505 }
506
507 return api->template_store(dev, id, data, size);
508}
509
527__syscall int biometric_template_read(const struct device *dev, uint16_t id, uint8_t *data,
528 size_t size);
529
530static inline int z_impl_biometric_template_read(const struct device *dev, uint16_t id,
531 uint8_t *data, size_t size)
532{
533 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
534
535 __ASSERT_NO_MSG(data != NULL);
536
537 if (api->template_read == NULL) {
538 return -ENOSYS;
539 }
540
541 return api->template_read(dev, id, data, size);
542}
543
555__syscall int biometric_template_delete(const struct device *dev, uint16_t id);
556
557static inline int z_impl_biometric_template_delete(const struct device *dev, uint16_t id)
558{
559 return DEVICE_API_GET(biometric, dev)->template_delete(dev, id);
560}
561
571__syscall int biometric_template_delete_all(const struct device *dev);
572
573static inline int z_impl_biometric_template_delete_all(const struct device *dev)
574{
575 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
576
577 if (api->template_delete_all == NULL) {
578 return -ENOSYS;
579 }
580
581 return api->template_delete_all(dev);
582}
583
596__syscall int biometric_template_list(const struct device *dev, uint16_t *ids, size_t max_count,
597 size_t *actual_count);
598
599static inline int z_impl_biometric_template_list(const struct device *dev, uint16_t *ids,
600 size_t max_count, size_t *actual_count)
601{
602 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
603
604 __ASSERT_NO_MSG(ids != NULL);
605 __ASSERT_NO_MSG(actual_count != NULL);
606
607 if (api->template_list == NULL) {
608 return -ENOSYS;
609 }
610
611 return api->template_list(dev, ids, max_count, actual_count);
612}
613
633__syscall int biometric_match(const struct device *dev, enum biometric_match_mode mode,
634 uint16_t template_id, k_timeout_t timeout,
635 struct biometric_match_result *result);
636
637static inline int z_impl_biometric_match(const struct device *dev, enum biometric_match_mode mode,
638 uint16_t template_id, k_timeout_t timeout,
639 struct biometric_match_result *result)
640{
641 return DEVICE_API_GET(biometric, dev)->match(dev, mode, template_id, timeout, result);
642}
643
657__syscall int biometric_led_control(const struct device *dev, enum biometric_led_state state);
658
659static inline int z_impl_biometric_led_control(const struct device *dev,
661{
662 const struct biometric_driver_api *api = DEVICE_API_GET(biometric, dev);
663
664 if (api->led_control == NULL) {
665 return -ENOSYS;
666 }
667
668 return api->led_control(dev, state);
669}
670
671#ifdef __cplusplus
672}
673#endif
674
678
679#include <zephyr/syscalls/biometrics.h>
680
681#endif /* ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_ */
#define DEVICE_API_GET(_class, _dev)
Expands to the pointer of a device's API for a given class.
Definition device.h:1375
System error numbers.
int(* biometric_api_template_delete)(const struct device *dev, uint16_t id)
Callback API to delete template.
Definition biometrics.h:211
int(* biometric_api_enroll_start)(const struct device *dev, uint16_t template_id)
Callback API to start enrollment.
Definition biometrics.h:172
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)
Callback API to get sensor capabilities.
Definition biometrics.h:151
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_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
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_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_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
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
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
Public kernel APIs.
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
<span class="mlabel">Driver Operations</span> Biometrics driver operations
Definition biometrics.h:243
biometric_api_get_capabilities get_capabilities
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:247
biometric_api_template_list template_list
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:291
biometric_api_template_delete template_delete
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:283
biometric_api_attr_get attr_get
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:255
biometric_api_template_delete_all template_delete_all
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:287
biometric_api_template_store template_store
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:275
biometric_api_enroll_abort enroll_abort
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:271
biometric_api_attr_set attr_set
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:251
biometric_api_template_read template_read
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
Definition biometrics.h:279
biometric_api_enroll_capture enroll_capture
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:263
biometric_api_enroll_finalize enroll_finalize
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:267
biometric_api_enroll_start enroll_start
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:259
biometric_api_match match
<span class="op-badge op-req" title="This operation MUST be implemented by the driver....
Definition biometrics.h:295
biometric_api_led_control led_control
<span class="op-badge op-opt" title="This operation MAY optionally be implemented by the driver....
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
Kernel timeout type.
Definition clock.h:65