2.6 KiB
ADR-270 Vendor RF Providers
RuView exposes a capability-safe Rust provider layer for vendor sensing and RF telemetry. It never converts RSSI, occupancy, location or network inventory into complex CSI.
API
GET /api/v1/rf/vendors— all provider descriptors and access states.GET /api/v1/rf/vendors/latest— latest validated event per vendor.GET /api/v1/rf/vendors/:vendor/latest— latest event for one stable vendor ID.POST /api/v1/rf/vendors/:vendor/events— ingest the vendor's documented sidecar/webhook payload through its strict provider decoder. This/api/v1/*route uses the server's bearer-token policy when configured.
Stable IDs are origin_ai, plume, mist, netgear, electric_imp,
rf_solutions, linksys, luma, google_nest, and wifigarden.
Deterministic simulator
cd v2
cargo run -p wifi-densepose-hardware --bin vendor-rf-sim -- \
--vendor plume --frames 100 --output plume.jsonl
# Stream canonical synthetic events to the sensing server UDP port.
cargo run -p wifi-densepose-hardware --bin vendor-rf-sim -- \
--vendor mist --frames 100 --udp 127.0.0.1:5005 --realtime
Supported simulator names are origin-ai, plume, mist, netgear,
electric-imp, rf-solutions, luma, and google-nest. Linksys is refused
because its sensing service is discontinued. Wifigarden is refused until a
contracted event schema exists.
Every synthetic event includes synthetic: true, a deterministic sequence and
timestamp, and a source ending in -sim-01.
Canonical UDP JSON is accepted only when synthetic: true. Live vendor payloads
must use the HTTP ingestion route so provider-specific schemas, metric allowlists,
access states and bounds cannot be bypassed.
Live/provider payloads
Provider decoders are strict, bounded and reject unknown schema fields. Origin paths and credentials are supplied by the commercial contract. Plume uses a read-only allow-listed OVSDB request plan. Mist and NETGEAR configurations use regional HTTPS endpoints with redacted tokens. Electric Imp, RF Solutions and Luma accept only allow-listed scalar metrics. Google Nest remains network-only.
Credentials are never embedded in fixtures or descriptors. Linksys returns
Unsupported; Wifigarden returns ContractRequired. These are usable,
test-covered provider outcomes—not simulated integrations.
Hardware honesty
All descriptors remain hardware_validated: false until exact hardware/cloud
versions, lawful access, repeatable captures, calibration where applicable, and
fixture publication rights have been verified. Passing the simulator and API
tests validates RuView software only.