openaliro
Aliro reader: UWB/CCC core and ESP32-S3/C5/C6 port
Loading...
Searching...
No Matches
aliro_uwb_session.h
Go to the documentation of this file.
1
3#pragma once
4
5#include <cherry/cherry.h>
6#include <cherry/cherry_ccc.h>
7
8#include <stdbool.h>
9#include <stddef.h>
10#include <stdint.h>
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
18
26 size_t len;
28 uint8_t data[];
29};
30
33 ALIRO_UWB_SESSION_EVENT_TYPE_SESSION_STATUS = CHERRY_CCC_EVENT_TYPE_SESSION_STATUS,
34 ALIRO_UWB_SESSION_EVENT_TYPE_SESSION_ERROR = CHERRY_CCC_EVENT_TYPE_SESSION_ERROR,
35 ALIRO_UWB_SESSION_EVENT_TYPE_SESSION_CONTROLLER_REPORT =
36 CHERRY_CCC_EVENT_TYPE_SESSION_CONTROLLER_REPORT,
37 ALIRO_UWB_SESSION_EVENT_TYPE_SESSION_CONTROLEE_REPORT =
38 CHERRY_CCC_EVENT_TYPE_SESSION_CONTROLEE_REPORT,
39 ALIRO_UWB_SESSION_EVENT_TYPE_SESSION_DIAGNOSTIC_REPORT =
40 CHERRY_CCC_EVENT_TYPE_SESSION_DIAGNOSTIC_REPORT,
41};
42
58 void *cherry_event;
59 union {
73 struct cherry_ccc_controller_session_report *controller_report;
78 struct cherry_ccc_controlee_session_report *controlee_report;
83 struct cherry_common_diag_report *diagnostics;
84 } data;
85};
86
88typedef void (*aliro_uwb_session_cb_t)(struct aliro_uwb_session_event *event, void *user_data);
89
92 struct aliro_uwb_session *session,
93 void *user_data, bool timeout);
94
105 uint32_t session_id,
106 aliro_uwb_session_cb_t callback,
108 void *user_data);
109
111void aliro_uwb_session_destroy(struct aliro_uwb_session *session);
112
115
121
124 const uint8_t *ursk);
125
128 uint16_t selected_protocol_version);
129
132
135 int64_t time_offset);
136
139 struct aliro_uwb_message *message);
140
143
146
153
154#ifdef __cplusplus
155}
156#endif
aliro_uwb_err
Status codes returned by the Aliro UWB adapter.
Definition aliro_uwb_adapter.h:22
enum aliro_uwb_err aliro_uwb_session_set_ursk(struct aliro_uwb_session *session, const uint8_t *ursk)
Provide the 32-byte URSK for the session.
Definition aliro_uwb_session.c:309
enum aliro_uwb_err aliro_uwb_session_message_handle(struct aliro_uwb_session *session, struct aliro_uwb_message *message)
Handle an incoming BLE message (M2/M4, suspend/resume, notifications).
Definition aliro_uwb_session.c:397
enum aliro_uwb_err aliro_uwb_session_set_time_offset(struct aliro_uwb_session *session, int64_t time_offset)
Set the time offset (microseconds) added to the negotiated UWB_Time0.
Definition aliro_uwb_session.c:379
void(* aliro_uwb_session_cb_t)(struct aliro_uwb_session_event *event, void *user_data)
Session notification callback type.
Definition aliro_uwb_session.h:88
enum aliro_uwb_err aliro_uwb_session_init_setup(struct aliro_uwb_session *session)
Begin setup: build M1 and transmit it to the user device.
Definition aliro_uwb_session.c:348
enum aliro_uwb_err aliro_uwb_session_resume(struct aliro_uwb_session *session)
Build and send a resume request for a suspended Aliro UWB ranging session.
Definition aliro_uwb_session.c:493
void aliro_uwb_session_message_free(struct aliro_uwb_message *message)
Free a message produced by the adapter's transmit callback.
Definition aliro_uwb_session.c:281
enum aliro_uwb_err aliro_uwb_session_forced_suspend(struct aliro_uwb_session *session)
Suspend ranging immediately without waiting for a peer response.
Definition aliro_uwb_session.c:471
enum aliro_uwb_err aliro_uwb_session_suspend(struct aliro_uwb_session *session)
Request a graceful suspend (builds and sends a suspend request).
Definition aliro_uwb_session.c:439
enum aliro_uwb_err aliro_uwb_session_set_protocol_version(struct aliro_uwb_session *session, uint16_t selected_protocol_version)
Record the selected BLE/UWB protocol version.
Definition aliro_uwb_session.c:330
void aliro_uwb_session_event_free(struct aliro_uwb_session_event *event)
Free an event delivered to the session callback.
Definition aliro_uwb_session.c:289
aliro_uwb_session_event_type
Session event kinds (aliased to the CCC event types).
Definition aliro_uwb_session.h:32
struct aliro_uwb_session * aliro_uwb_session_create(struct aliro_uwb_adapter *aliro_ctx, uint32_t session_id, aliro_uwb_session_cb_t callback, aliro_uwb_adapter_transmit_message_t transmit, void *user_data)
Create a session in the CREATED state.
Definition aliro_uwb_session.c:234
void(* aliro_uwb_adapter_transmit_message_t)(struct aliro_uwb_message *message, struct aliro_uwb_session *session, void *user_data, bool timeout)
BLE transmit callback: sends an adapter-built message to the peer.
Definition aliro_uwb_session.h:91
void aliro_uwb_session_destroy(struct aliro_uwb_session *session)
Stop if needed and release a session.
Definition aliro_uwb_session.c:267
— Cherry core (context + device-capabilities) interface.
— CCC/Aliro-session interface (seam the adapter drives).
Session-independent reader state shared across all ranging sessions for an Aliro UWB adapter.
Definition aliro_uwb_internal.h:16
Framed Aliro BLE message with 4-byte header followed by TLV payload.
Definition aliro_uwb_session.h:24
uint8_t data[]
Message bytes (4-byte header followed by TLV attributes).
Definition aliro_uwb_session.h:28
size_t len
Number of valid bytes in data.
Definition aliro_uwb_session.h:26
Session event handed to the client, carrying status, error, or distance reports.
Definition aliro_uwb_session.h:52
struct cherry_ccc_session_event_error * error
Session error payload carrying error code and diagnostic context.
Definition aliro_uwb_session.h:68
struct aliro_uwb_session * session
Opaque per-session context.
Definition aliro_uwb_session.h:56
struct cherry_ccc_controller_session_report * controller_report
Controller (phone) session report carrying its distance and timestamp estimate.
Definition aliro_uwb_session.h:73
struct cherry_ccc_controlee_session_report * controlee_report
Controlee (lock) session report carrying its distance and timestamp estimate.
Definition aliro_uwb_session.h:78
struct cherry_ccc_session_event_session_status * status
Session status report (active, paused, stopped) and update reason (initiation, measurement update,...
Definition aliro_uwb_session.h:64
struct cherry_common_diag_report * diagnostics
Diagnostic report snapshot (ranging samples, signal strength, time sync) for this update.
Definition aliro_uwb_session.h:83
Per-approach ranging-setup session record holding the CCC state machine and derived keys for one Alir...
Definition aliro_uwb_internal.h:54
struct aliro_uwb_adapter * aliro_ctx
Session-independent reader state shared by this per-approach session.
Definition aliro_uwb_internal.h:58
Payload of a SESSION_ERROR event, giving the error status that triggered it.
Definition cherry_ccc.h:92
Payload of a SESSION_STATUS event, giving the new session state and the reason for the change.
Definition cherry_ccc.h:84