Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6a2ef11

Browse files
committed
docs: cross-platform support in README, changelog, user guide
- README: update hardware table, crate description, scan layer heading for macOS + Linux support, bump ADR count to 25 - CHANGELOG: add cross-platform adapters and byte counter fix - User guide: add macOS CoreWLAN and Linux iw data source sections - CLAUDE.md: add pre-merge checklist (8 items) Co-Authored-By: claude-flow <[email protected]>
1 parent e446966 commit 6a2ef11

4 files changed

Lines changed: 51 additions & 6 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
88
## [Unreleased]
99

1010
### Added
11-
- macOS CoreWLAN WiFi sensing adapter with user guide (`a6382fb`)
11+
- **Cross-platform RSSI adapters** — macOS CoreWLAN (`MacosCoreWlanScanner`) and Linux `iw` (`LinuxIwScanner`) Rust adapters with `#[cfg(target_os)]` gating
12+
- macOS CoreWLAN Python sensing adapter with Swift helper (`mac_wifi.swift`)
13+
- macOS synthetic BSSID generation (FNV-1a hash) for Sonoma 14.4+ BSSID redaction
14+
- Linux `iw dev <iface> scan` parser with freq-to-channel conversion and `scan dump` (no-root) mode
15+
- ADR-025: macOS CoreWLAN WiFi Sensing (ORCA)
16+
17+
### Fixed
18+
- Removed synthetic byte counters from Python `MacosWifiCollector` — now reports `tx_bytes=0, rx_bytes=0` instead of fake incrementing values
1219

1320
---
1421

README.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
3535
> |--------|----------|------|----------|-------------|
3636
> | **ESP32 Mesh** (recommended) | 3-6x ESP32-S3 + WiFi router | ~$54 | Yes | Pose, breathing, heartbeat, motion, presence |
3737
> | **Research NIC** | Intel 5300 / Atheros AR9580 | ~$50-100 | Yes | Full CSI with 3x3 MIMO |
38-
> | **Any WiFi** | Windows/Linux laptop | $0 | No | RSSI-only: coarse presence and motion |
38+
> | **Any WiFi** | Windows, macOS, or Linux laptop | $0 | No | RSSI-only: coarse presence and motion |
3939
>
4040
> No hardware? Verify the signal processing pipeline with the deterministic reference signal: `python v1/data/proof/verify.py`
4141
@@ -48,7 +48,7 @@ docker run -p 3000:3000 ruvnet/wifi-densepose:latest
4848
| [User Guide](docs/user-guide.md) | Step-by-step guide: installation, first run, API usage, hardware setup, training |
4949
| [WiFi-Mat User Guide](docs/wifi-mat-user-guide.md) | Disaster response module: search & rescue, START triage |
5050
| [Build Guide](docs/build-guide.md) | Building from source (Rust and Python) |
51-
| [Architecture Decisions](docs/adr/) | 24 ADRs covering signal processing, training, hardware, security |
51+
| [Architecture Decisions](docs/adr/) | 25 ADRs covering signal processing, training, hardware, security |
5252

5353
---
5454

@@ -354,7 +354,7 @@ cargo add wifi-densepose-wifiscan # Multi-BSSID WiFi scanning
354354
| [`wifi-densepose-mat`](https://crates.io/crates/wifi-densepose-mat) | Mass Casualty Assessment Tool (disaster survivor detection) | `solver`, `temporal-tensor` | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-mat.svg)](https://crates.io/crates/wifi-densepose-mat) |
355355
| [`wifi-densepose-vitals`](https://crates.io/crates/wifi-densepose-vitals) | Vital signs: breathing (6-30 BPM), heart rate (40-120 BPM) | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-vitals.svg)](https://crates.io/crates/wifi-densepose-vitals) |
356356
| [`wifi-densepose-hardware`](https://crates.io/crates/wifi-densepose-hardware) | ESP32, Intel 5300, Atheros CSI sensor interfaces | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-hardware.svg)](https://crates.io/crates/wifi-densepose-hardware) |
357-
| [`wifi-densepose-wifiscan`](https://crates.io/crates/wifi-densepose-wifiscan) | Multi-BSSID WiFi scanning (Windows-enhanced) | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-wifiscan.svg)](https://crates.io/crates/wifi-densepose-wifiscan) |
357+
| [`wifi-densepose-wifiscan`](https://crates.io/crates/wifi-densepose-wifiscan) | Multi-BSSID WiFi scanning (Windows, macOS, Linux) | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-wifiscan.svg)](https://crates.io/crates/wifi-densepose-wifiscan) |
358358
| [`wifi-densepose-wasm`](https://crates.io/crates/wifi-densepose-wasm) | WebAssembly bindings for browser deployment | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-wasm.svg)](https://crates.io/crates/wifi-densepose-wasm) |
359359
| [`wifi-densepose-sensing-server`](https://crates.io/crates/wifi-densepose-sensing-server) | Axum server: UDP ingestion, WebSocket broadcast | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-sensing-server.svg)](https://crates.io/crates/wifi-densepose-sensing-server) |
360360
| [`wifi-densepose-cli`](https://crates.io/crates/wifi-densepose-cli) | Command-line tool for MAT disaster scanning | -- | [![crates.io](https://img.shields.io/crates/v/wifi-densepose-cli.svg)](https://crates.io/crates/wifi-densepose-cli) |
@@ -606,7 +606,7 @@ See [ADR-021](docs/adr/ADR-021-vital-sign-detection-rvdna-pipeline.md).
606606
</details>
607607

608608
<details>
609-
<summary><a id="wifi-scan-domain-layer"></a><strong>📡 WiFi Scan Domain Layer (ADR-022)</strong> — 8-stage RSSI pipeline for Windows WiFi</summary>
609+
<summary><a id="wifi-scan-domain-layer"></a><strong>📡 WiFi Scan Domain Layer (ADR-022/025)</strong> — 8-stage RSSI pipeline for Windows, macOS, and Linux WiFi</summary>
610610

611611
| Stage | Purpose |
612612
|-------|---------|
@@ -1090,6 +1090,8 @@ WebSocket: `ws://localhost:3001/ws/sensing` (real-time sensing + vital signs)
10901090
| Intel 5300 | Firmware mod | ~$15 | Linux `iwl-csi` |
10911091
| Atheros AR9580 | ath9k patch | ~$20 | Linux only |
10921092
| Any Windows WiFi | RSSI only | $0 | [Tutorial #36](https://github.com/ruvnet/wifi-densepose/issues/36) |
1093+
| Any macOS WiFi | RSSI only (CoreWLAN) | $0 | [ADR-025](docs/adr/ADR-025-macos-corewlan-wifi-sensing.md) |
1094+
| Any Linux WiFi | RSSI only (`iw`) | $0 | Requires `iw` + `CAP_NET_ADMIN` |
10931095

10941096
</details>
10951097

@@ -1263,7 +1265,7 @@ The largest release to date — delivers the complete end-to-end training pipeli
12631265
- **`--export-rvf` CLI flag** — Standalone RVF model container generation with vital config, training proof, and SONA profiles
12641266
- **`--train` CLI flag** — Full training mode with best-epoch snapshotting and checkpoint saving
12651267
- **Vital sign detection (ADR-021)** — FFT-based breathing (6-30 BPM) and heartbeat (40-120 BPM) extraction, 11,665 fps benchmark
1266-
- **WiFi scan domain layer (ADR-022)** — 8-stage pure-Rust signal intelligence pipeline for Windows WiFi RSSI
1268+
- **WiFi scan domain layer (ADR-022/025)** — 8-stage pure-Rust signal intelligence pipeline for Windows, macOS, and Linux WiFi RSSI
12671269
- **New crates**`wifi-densepose-vitals` (1,863 lines) and `wifi-densepose-wifiscan` (4,829 lines)
12681270
- **542+ Rust tests** — All passing, zero mocks
12691271

claude.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,19 @@ All development on: `claude/validate-code-quality-WNrNw`
8989
- **HNSW**: Enabled
9090
- **Neural**: Enabled
9191

92+
## Pre-Merge Checklist
93+
94+
Before merging any PR, verify each item applies and is addressed:
95+
96+
1. **Tests pass**`cargo test` (Rust) and `python -m pytest` (Python) green
97+
2. **README.md** — Update platform tables, crate descriptions, hardware tables, feature summaries if scope changed
98+
3. **CHANGELOG.md** — Add entry under `[Unreleased]` with what was added/fixed/changed
99+
4. **User guide** (`docs/user-guide.md`) — Update if new data sources, CLI flags, or setup steps were added
100+
5. **ADR index** — Update ADR count in README docs table if a new ADR was created
101+
6. **Docker Hub image** — Only rebuild if Dockerfile, dependencies, or runtime behavior changed (not needed for platform-gated code that doesn't affect the Linux container)
102+
7. **Crate publishing** — Only needed if a crate is published to crates.io and its public API changed (workspace-internal crates don't need publishing)
103+
8. **`.gitignore`** — Add any new build artifacts or binaries
104+
92105
## Build & Test
93106

94107
```bash

docs/user-guide.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,29 @@ docker run --network host ruvnet/wifi-densepose:latest --source windows --tick-m
194194

195195
See [Tutorial #36](https://github.com/ruvnet/wifi-densepose/issues/36) for a walkthrough.
196196

197+
### macOS WiFi (RSSI Only)
198+
199+
Uses CoreWLAN via a Swift helper binary. macOS Sonoma 14.4+ redacts real BSSIDs; the adapter generates deterministic synthetic MACs so the multi-BSSID pipeline still works.
200+
201+
```bash
202+
# Compile the Swift helper (once)
203+
swiftc -O v1/src/sensing/mac_wifi.swift -o mac_wifi
204+
205+
# Run natively
206+
./target/release/sensing-server --source macos --http-port 3000 --ws-port 3001 --tick-ms 500
207+
```
208+
209+
See [ADR-025](adr/ADR-025-macos-corewlan-wifi-sensing.md) for details.
210+
211+
### Linux WiFi (RSSI Only)
212+
213+
Uses `iw dev <iface> scan` to capture RSSI. Requires `CAP_NET_ADMIN` (root) for active scans; use `scan dump` for cached results without root.
214+
215+
```bash
216+
# Run natively (requires root for active scanning)
217+
sudo ./target/release/sensing-server --source linux --http-port 3000 --ws-port 3001 --tick-ms 500
218+
```
219+
197220
### ESP32-S3 (Full CSI)
198221

199222
Real Channel State Information at 20 Hz with 56-192 subcarriers. Required for pose estimation, vital signs, and through-wall sensing.

0 commit comments

Comments
 (0)