The Rust port lived two directories deep (rust-port/wifi-densepose-rs/) without any sibling under rust-port/ that warranted the extra level. Move the whole workspace up to v2/ to match v1/ (Python) at the same depth and shorten every cd / build command across the repo. git mv preserves history for all tracked files. 60 files updated for path references (CI workflows, ADRs, docs, scripts, READMEs, internal .claude-flow state). Two manual fixes for relative-cd paths in CLAUDE.md and ADR-043 that became wrong after the depth change (cd ../.. → cd ..). Validated: - cargo check --workspace --no-default-features → clean (after target/ nuke; the gitignored target/ was carried by the OS rename and had hard-coded old paths in build scripts) - cargo test --workspace --no-default-features → 1,539 passed, 0 failed, 8 ignored (same totals as pre-rename) - ESP32-S3 on COM7 → still streaming live CSI (cb #40300, RSSI -64 dBm) After-merge follow-up: contributors should `rm -rf v2/target` once and let cargo regenerate from the new path. |
||
|---|---|---|
| .. | ||
| src | ||
| Cargo.toml | ||
| README.md | ||
README.md
wifi-densepose-config
Configuration management for the WiFi-DensePose pose estimation system.
Overview
wifi-densepose-config provides a unified configuration layer that merges values from environment
variables, TOML/YAML files, and CLI overrides into strongly-typed Rust structs. Built on the
config, dotenvy, and
envy ecosystem from the workspace.
Status: This crate is currently a stub. The intended API surface is documented below.
Planned Features
- Multi-source loading -- Merge configuration from
.env, TOML files, YAML files, and environment variables with well-defined precedence. - Typed configuration -- Strongly-typed structs for server, signal processing, neural network, hardware, and database settings.
- Validation -- Schema validation with human-readable error messages on startup.
- Hot reload -- Watch configuration files for changes and notify dependent services.
- Profile support -- Named profiles (
development,production,testing) with per-profile overrides. - Secret filtering -- Redact sensitive values (API keys, database passwords) in logs and debug output.
Quick Start
// Intended usage (not yet implemented)
use wifi_densepose_config::AppConfig;
fn main() -> anyhow::Result<()> {
// Loads from env, config.toml, and CLI overrides
let config = AppConfig::load()?;
println!("Server bind: {}", config.server.bind_address);
println!("CSI sample rate: {} Hz", config.signal.sample_rate);
println!("Model path: {}", config.nn.model_path.display());
Ok(())
}
Planned Configuration Structure
# config.toml
[server]
bind_address = "0.0.0.0:3000"
websocket_path = "/ws/poses"
[signal]
sample_rate = 100
subcarrier_count = 56
hampel_window = 5
[nn]
model_path = "./models/densepose.rvf"
backend = "ort" # ort | candle | tch
batch_size = 8
[hardware]
esp32_udp_port = 5005
serial_baud = 921600
[database]
url = "sqlite://data/wifi-densepose.db"
max_connections = 5
Related Crates
| Crate | Role |
|---|---|
wifi-densepose-core |
Shared types and traits |
wifi-densepose-api |
REST API (consumer) |
wifi-densepose-db |
Database layer (consumer) |
wifi-densepose-cli |
CLI (consumer) |
wifi-densepose-sensing-server |
Sensing server (consumer) |
License
MIT OR Apache-2.0