Zephyr Project API 4.3.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;
322
323 __ASSERT_NO_MSG(dev != NULL);
324 __ASSERT_NO_MSG(caps != NULL);
325
326 api = (const struct biometric_driver_api *)dev->api;
327
328 return api->get_capabilities(dev, caps);
329}
330
343__syscall int biometric_attr_set(const struct device *dev, enum biometric_attribute attr,
344 int32_t val);
345
346static inline int z_impl_biometric_attr_set(const struct device *dev, enum biometric_attribute attr,
347 int32_t val)
348{
349 const struct biometric_driver_api *api;
350
351 __ASSERT_NO_MSG(dev != NULL);
352
353 api = (const struct biometric_driver_api *)dev->api;
354
355 if (api->attr_set == NULL) {
356 return -ENOSYS;
357 }
358
359 return api->attr_set(dev, attr, val);
360}
361
374__syscall int biometric_attr_get(const struct device *dev, enum biometric_attribute attr,
375 int32_t *val);
376
377static inline int z_impl_biometric_attr_get(const struct device *dev, enum biometric_attribute attr,
378 int32_t *val)
379{
380 const struct biometric_driver_api *api;
381
382 __ASSERT_NO_MSG(dev != NULL);
383 __ASSERT_NO_MSG(val != NULL);
384
385 api = (const struct biometric_driver_api *)dev->api;
386
387 if (api->attr_get == NULL) {
388 return -ENOSYS;
389 }
390
391 return api->attr_get(dev, attr, val);
392}
393
409__syscall int biometric_enroll_start(const struct device *dev, uint16_t template_id);
410
411static inline int z_impl_biometric_enroll_start(const struct device *dev, uint16_t template_id)
412{
413 const struct biometric_driver_api *api;
414
415 __ASSERT_NO_MSG(dev != NULL);
416
417 api = (const struct biometric_driver_api *)dev->api;
418
419 return api->enroll_start(dev, template_id);
420}
421
439__syscall int biometric_enroll_capture(const struct device *dev, k_timeout_t timeout,
440 struct biometric_capture_result *result);
441
442static inline int z_impl_biometric_enroll_capture(const struct device *dev, k_timeout_t timeout,
443 struct biometric_capture_result *result)
444{
445 const struct biometric_driver_api *api;
446
447 __ASSERT_NO_MSG(dev != NULL);
448
449 api = (const struct biometric_driver_api *)dev->api;
450
451 return api->enroll_capture(dev, timeout, result);
452}
453
466__syscall int biometric_enroll_finalize(const struct device *dev);
467
468static inline int z_impl_biometric_enroll_finalize(const struct device *dev)
469{
470 const struct biometric_driver_api *api;
471
472 __ASSERT_NO_MSG(dev != NULL);
473
474 api = (const struct biometric_driver_api *)dev->api;
475
476 return api->enroll_finalize(dev);
477}
478
491__syscall int biometric_enroll_abort(const struct device *dev);
492
493static inline int z_impl_biometric_enroll_abort(const struct device *dev)
494{
495 const struct biometric_driver_api *api;
496
497 __ASSERT_NO_MSG(dev != NULL);
498
499 api = (const struct biometric_driver_api *)dev->api;
500
501 if (api->enroll_abort == NULL) {
502 return -ENOSYS;
503 }
504
505 return api->enroll_abort(dev);
506}
507
525__syscall int biometric_template_store(const struct device *dev, uint16_t id, const uint8_t *data,
526 size_t size);
527
528static inline int z_impl_biometric_template_store(const struct device *dev, uint16_t id,
529 const uint8_t *data, size_t size)
530{
531 const struct biometric_driver_api *api;
532
533 __ASSERT_NO_MSG(dev != NULL);
534 __ASSERT_NO_MSG(data != NULL);
535
536 api = (const struct biometric_driver_api *)dev->api;
537
538 if (api->template_store == NULL) {
539 return -ENOSYS;
540 }
541
542 return api->template_store(dev, id, data, size);
543}
544
562__syscall int biometric_template_read(const struct device *dev, uint16_t id, uint8_t *data,
563 size_t size);
564
565static inline int z_impl_biometric_template_read(const struct device *dev, uint16_t id,
566 uint8_t *data, size_t size)
567{
568 const struct biometric_driver_api *api;
569
570 __ASSERT_NO_MSG(dev != NULL);
571 __ASSERT_NO_MSG(data != NULL);
572
573 api = (const struct biometric_driver_api *)dev->api;
574
575 if (api->template_read == NULL) {
576 return -ENOSYS;
577 }
578
579 return api->template_read(dev, id, data, size);
580}
581
593__syscall int biometric_template_delete(const struct device *dev, uint16_t id);
594
595static inline int z_impl_biometric_template_delete(const struct device *dev, uint16_t id)
596{
597 const struct biometric_driver_api *api;
598
599 __ASSERT_NO_MSG(dev != NULL);
600
601 api = (const struct biometric_driver_api *)dev->api;
602
603 return api->template_delete(dev, id);
604}
605
615__syscall int biometric_template_delete_all(const struct device *dev);
616
617static inline int z_impl_biometric_template_delete_all(const struct device *dev)
618{
619 const struct biometric_driver_api *api;
620
621 __ASSERT_NO_MSG(dev != NULL);
622
623 api = (const struct biometric_driver_api *)dev->api;
624
625 if (api->template_delete_all == NULL) {
626 return -ENOSYS;
627 }
628
629 return api->template_delete_all(dev);
630}
631
644__syscall int biometric_template_list(const struct device *dev, uint16_t *ids, size_t max_count,
645 size_t *actual_count);
646
647static inline int z_impl_biometric_template_list(const struct device *dev, uint16_t *ids,
648 size_t max_count, size_t *actual_count)
649{
650 const struct biometric_driver_api *api;
651
652 __ASSERT_NO_MSG(dev != NULL);
653 __ASSERT_NO_MSG(ids != NULL);
654 __ASSERT_NO_MSG(actual_count != NULL);
655
656 api = (const struct biometric_driver_api *)dev->api;
657
658 if (api->template_list == NULL) {
659 return -ENOSYS;
660 }
661
662 return api->template_list(dev, ids, max_count, actual_count);
663}
664
684__syscall int biometric_match(const struct device *dev, enum biometric_match_mode mode,
685 uint16_t template_id, k_timeout_t timeout,
686 struct biometric_match_result *result);
687
688static inline int z_impl_biometric_match(const struct device *dev, enum biometric_match_mode mode,
689 uint16_t template_id, k_timeout_t timeout,
690 struct biometric_match_result *result)
691{
692 const struct biometric_driver_api *api;
693
694 __ASSERT_NO_MSG(dev != NULL);
695
696 api = (const struct biometric_driver_api *)dev->api;
697
698 return api->match(dev, mode, template_id, timeout, result);
699}
700
714__syscall int biometric_led_control(const struct device *dev, enum biometric_led_state state);
715
716static inline int z_impl_biometric_led_control(const struct device *dev,
718{
719 const struct biometric_driver_api *api;
720
721 __ASSERT_NO_MSG(dev != NULL);
722
723 api = (const struct biometric_driver_api *)dev->api;
724
725 if (api->led_control == NULL) {
726 return -ENOSYS;
727 }
728
729 return api->led_control(dev, state);
730}
731
732#ifdef __cplusplus
733}
734#endif
735
739
740#include <zephyr/syscalls/biometrics.h>
741
742#endif /* ZEPHYR_INCLUDE_DRIVERS_BIOMETRICS_H_ */
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_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
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
@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