openaliro
Aliro reader: UWB/CCC core and ESP32-S3/C5/C6 port
Loading...
Searching...
No Matches
ble_timeout.h
1/* Aliro 1.0 Bluetooth LE responseTimeout rules (section 11.9). */
2#pragma once
3
4#include <stddef.h>
5#include <stdint.h>
6
7#ifdef __cplusplus
8extern "C" {
9#endif
10
11enum woz_aliro_ble_timeout_direction {
12 WOZ_ALIRO_BLE_TIMEOUT_INCOMING = 0,
13 WOZ_ALIRO_BLE_TIMEOUT_OUTGOING = 1,
14};
15
16enum woz_aliro_ble_timeout_role {
17 WOZ_ALIRO_BLE_TIMEOUT_IDLE = 0,
18 WOZ_ALIRO_BLE_TIMEOUT_LOCAL_TRANSMITTER,
19 WOZ_ALIRO_BLE_TIMEOUT_LOCAL_RECEIVER,
20};
21
22enum woz_aliro_ble_timeout_message {
23 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_UNKNOWN = 0,
24 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_INITIATE_ACCESS,
25 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_INITIATE_ACCESS_RKE,
26 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_AP_REQUEST,
27 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_AP_RESPONSE,
28 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SETUP_M1,
29 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SETUP_M2,
30 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SETUP_M3,
31 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SETUP_M4,
32 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SUSPEND_REQUEST,
33 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SUSPEND_RESPONSE,
34 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_RESUME_REQUEST,
35 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_RESUME_RESPONSE,
36 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_INITIATE_RANGING,
37 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_INITIATE_RANGING_RESUME,
38 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SETUP_LATER,
39 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_RESUME_LATER,
40 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_SECURE_RANGING_FAILED,
41 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_RANGING_SUSPENDED,
42 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_RKE_REQUEST,
43 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_ACCESS_COMPLETED,
44 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_READER_STATUS_CHANGED,
45 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_TIME_SYNC,
46 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_PASS_THROUGH,
47 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_BUSY,
48 WOZ_ALIRO_BLE_TIMEOUT_MESSAGE_GENERAL_ERROR,
49};
50
51enum woz_aliro_ble_timeout_action {
52 WOZ_ALIRO_BLE_TIMEOUT_NO_ACTION = 0,
53 WOZ_ALIRO_BLE_TIMEOUT_ARM,
54 WOZ_ALIRO_BLE_TIMEOUT_STOP,
55 WOZ_ALIRO_BLE_TIMEOUT_TERMINATE,
56};
57
63 enum woz_aliro_ble_timeout_role role;
64 enum woz_aliro_ble_timeout_message pending_message;
65};
66
67/* Classify one complete, unencrypted Aliro BLE message. */
68int woz_aliro_ble_timeout_classify(const uint8_t *data, size_t data_length,
69 enum woz_aliro_ble_timeout_message *message);
70
71/* Apply Tables 11-27/11-28 to a per-connection response timer state. */
72enum woz_aliro_ble_timeout_action
74 enum woz_aliro_ble_timeout_direction direction,
75 enum woz_aliro_ble_timeout_message message);
76
77#ifdef __cplusplus
78}
79#endif
enum woz_aliro_ble_timeout_action woz_aliro_ble_timeout_observe(struct woz_aliro_ble_timeout_state *state, enum woz_aliro_ble_timeout_direction direction, enum woz_aliro_ble_timeout_message message)
Supervise Aliro BLE protocol timeouts in a state machine: track pending messages, role (idle,...
Definition ble_timeout.c:252
BLE timeout state machine: tracks the current role (reader or mobile) and which message (if any) is p...
Definition ble_timeout.h:62