1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//! IEEE 802.11bf-2025 WLAN sensing — forward-compatibility protocol model
//! (ADR-153, amending ADR-152 §2.4).
//!
//! # Why this exists
//!
//! IEEE 802.11bf-2025 ("WLAN Sensing") was **published 2025-09-26** (verified
//! against the IEEE SA record — ADR-152 §1.1 F4, evidence grade MEASURED).
//! Sensing standardization is complete for sub-7 GHz and >45 GHz (DMG) bands,
//! with formal sensing measurement setup, measurement instance,
//! feedback/reporting, and sensing-by-proxy (SBP) procedures.
//!
//! **No commodity silicon — ESP32 parts included — implements the standard
//! yet.** ADR-152 §2.4 originally decided "track silicon; no code now";
//! ADR-153 amends that clause: build the typed protocol surface now, so
//! RuView can adopt standardized sensing the day any chipset exposes it.
//! This layer is simulation-tested forward compatibility — the OTA binding
//! lands when silicon does. Today's opportunistic CSI extraction (ADR-018 /
//! ADR-028) remains the backend, mapped onto the standardized report path by
//! [`transport::OpportunisticCsiBridge`].
//!
//! > This module is not a certified 802.11bf implementation. It models the
//! > public procedure shape needed by RuView and RuvSense, while intentionally
//! > avoiding OTA frame binding until chipset support and vendor APIs exist.
//!
//! # Layout
//!
//! - [`types`] — typed structures for the sensing procedures (setup, roles,
//! measurement instances, CSI-variant reports, SBP, termination), plus the
//! ADR-153 future-proofing surfaces: [`types::SpecProfile`] version gates,
//! [`types::SensingCapabilities`] negotiation, and required
//! [`types::ConsentMode`] governance metadata on every setup.
//! - [`messages`] — the procedure message types (setup request/response,
//! measurement instance, CSI-variant report, SBP exchange, termination).
//! - [`session`] — deterministic event-driven session FSM:
//! `Idle → SetupNegotiating → Active → Terminating → Idle`, with explicit
//! rejection paths, timeout handling, single-role enforcement, and the
//! first-class SBP proxy mode. No async, no clocks.
//! - [`events`] — the FSM I/O types ([`events::SessionEvent`],
//! [`events::Action`], close reasons, configuration), re-exported via
//! [`session`].
//! - [`table`] — responder-side setup registry (setup-ID collision and
//! capacity rejection paths, for direct setups and SBP alike).
//! - [`transport`] — the [`transport::SensingTransport`] seam, the
//! [`transport::SimTransport`] test double, and the ESP32 bridge.
pub use ;
pub use ;
pub use SessionTable;
pub use ;
pub use ;