CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
sao.h
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <cstddef>
5
6// SAO (Standardized Add-On) Binary Descriptor Parser
7// Implements the badge.team SAO standard:
8// https://badge.team/docs/standards/sao/binary_descriptor/
9
10// SAO Binary Descriptor Constants
11#define SAO_EEPROM_ADDR 0x50
12#define SAO_MAX_NAME_LEN 63
13#define SAO_MAX_DRIVER_NAME_LEN 31
14#define SAO_MAX_DRIVER_DATA_LEN 64
15#define SAO_MAX_EXTRA_DRIVERS 4
16
17#ifdef __DOXYGEN__
18namespace cdc::mod_sao {
19#endif
20
21// SAO Driver Information
27
28// SAO Descriptor (parsed from EEPROM)
35
36#ifdef __DOXYGEN__
37} // namespace cdc::mod_sao
38#endif
39
40// Initialize SAO module (call after i2c bus is ready)
41bool sao_init(void);
42
43// Scan for SAO device and parse descriptor
44// Returns true if SAO with valid descriptor found
45bool sao_scan(void);
46
47// Get the parsed descriptor (only valid if sao_scan returned true)
48bool sao_read_descriptor(sao_descriptor_t* desc);
49
50// Quick check if SAO is currently detected
51bool sao_is_detected(void);
52
53// Get SAO name (empty string if not detected)
54const char* sao_get_name(void);
55
56// Get primary driver name (empty string if not detected)
57const char* sao_get_driver_name(void);
58
59// Format SAO info string for UI display
60void sao_get_info_string(char* buf, size_t len);
bool sao_read_descriptor(sao_descriptor_t *desc)
Definition sao.cpp:175
#define SAO_MAX_EXTRA_DRIVERS
Definition sao.h:15
bool sao_scan(void)
Definition sao.cpp:155
void sao_get_info_string(char *buf, size_t len)
Definition sao.cpp:199
const char * sao_get_driver_name(void)
Definition sao.cpp:194
const char * sao_get_name(void)
Definition sao.cpp:189
#define SAO_MAX_NAME_LEN
Definition sao.h:12
#define SAO_MAX_DRIVER_DATA_LEN
Definition sao.h:14
bool sao_init(void)
Definition sao.cpp:124
bool sao_is_detected(void)
Definition sao.cpp:185
#define SAO_MAX_DRIVER_NAME_LEN
Definition sao.h:13
sao_driver_info_t extra_drivers[4]
Definition sao.h:32
sao_driver_info_t primary_driver
Definition sao.h:31