rvcsi-core
The shared kernel of rvCSI — the edge RF sensing runtime.
Owns the normalized schema every CSI source is mapped onto:
CsiFrame— one CSI observation at a timestamp (I/Q + derived amplitude/phase per subcarrier, channel/bandwidth, RSSI/noise/antenna/chains,ValidationStatus,quality_score,quality_reasons,calibration_version).CsiWindow— a bounded run of frames from one source, summarized into per-subcarrier mean amplitude / phase variance plus scalar motion / presence / quality scores.CsiEvent— a semantic interpretation withCsiEventKind, confidence, evidence window ids, and free-form metadata JSON.
Plus: AdapterProfile (a source's capability descriptor — gates validation), the CsiSource plugin trait (every hardware/file/replay adapter implements it), id newtypes (FrameId/WindowId/EventId/SessionId/SourceId) + a Send+Sync IdGenerator, the structured RvcsiError, and validate_frame — the only door between raw adapter output and anything downstream. Validation mutates a frame in place: on success it sets Accepted / Degraded / Recovered and fills quality_score; on a hard failure it sets Rejected and returns a ValidationError. A Pending or Rejected frame must never cross a language boundary.
#![forbid(unsafe_code)]. Dependency-light (serde + thiserror) and no_std-clean in spirit.
[]
= "0.3"
See ADR-095 (the 15 platform decisions) and ADR-096 (crate topology / FFI seams). Licensed under MIT OR Apache-2.0.