Task 8 of the fleet-deployment plan. Adds the tines-bt crate: a real `Transport` over the `bluer` crate (D-Bus BlueZ). - `Addr` = peer's advertised `NodeId`, so identity survives BLE address rotation; advertising payload (flags + 16-bit service UUID + NodeId in service data) fits legacy 31-byte EIR (`advertise()`). - `BtTransport` drops any inbound frame whose `from` differs from the connection's advertised NodeId (protocol violation at the transport; core never sees a mismatch). - Connection symmetry: the node with the numerically smaller NodeId is the BLE central/initiator (`is_central`), independent of which side opens the radio. - `mtu()` reports the real L2CAP CoC MTU (falling back to the ATT MTU); the transport does NOT split frames — core folds summaries/fragments to `mtu()`. - Radio I/O sits behind the narrow `Radio` trait (a `poll`-driven event stream), so the pure logic (payload assembly, mismatch-drop, central rule) is unit-tested with a mock radio and never needs hardware. - `BluerRadio` drives the stack on a detached tokio task: powers the adapter, advertises, monitors for the service UUID, opens an L2CAP byte pipe, and surfaces inbound bytes tagged with the peer NodeId. Adds `tests/adv.rs` (8 mock-Radio integration tests covering the 31-byte limit, NodeId round-trip, MTU clamp, mismatch-drop, per-frame MTU, and central rule). Added to workspace members; workspace CI (fmt, doc, test, clippy -D warnings) is green.
12 lines
260 B
TOML
12 lines
260 B
TOML
[workspace]
|
|
members = ["tines-core", "tines-sim", "tines-store", "tines-bt"]
|
|
resolver = "2"
|
|
|
|
[workspace.package]
|
|
version = "0.3.0"
|
|
edition = "2021"
|
|
license = "Apache-2.0"
|
|
authors = ["K. Isom"]
|
|
repository = "https://github.com/kisom/tines"
|
|
readme = "README.md"
|