mirror of
https://github.com/ruvnet/RuView
synced 2026-07-28 18:21:42 +00:00
004a63e82d
- Upgrade openssl to 0.10.78 (CVE-2026-41676), jsonwebtoken to 9.4 - Suppress unmaintained-only/no-CVE advisories in .cargo/audit.toml with per-entry rationale - Fix all `cargo clippy --all-targets -- -D warnings` errors across 35 crates: derivable_impls, needless_range_loop, map_or→is_some_and/ is_none_or, await_holding_lock (drop MutexGuard before .await), ptr_arg (&mut Vec→&mut [T]), useless_conversion, approximate_constant (2.718→E, 3.14→PI), field_reassign_with_default, manual_inspect, useless_vec, lines_filter_map_ok, print_literal, dead_code - Apply `cargo fmt --all` - Pre-existing test failure in wifi-densepose-signal (test_estimate_occupancy_noise_only) is not introduced by this PR
59 lines
1.7 KiB
Rust
59 lines
1.7 KiB
Rust
//! Runtime configuration for the pose-estimation Cog.
|
|
//!
|
|
//! Schema lives at `cog/config.schema.json` so the appliance can validate
|
|
//! before launching the cog.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use std::path::{Path, PathBuf};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
#[serde(deny_unknown_fields)]
|
|
pub struct CogConfig {
|
|
/// URL of the local sensing-server's frame feed.
|
|
/// Defaults to the appliance's loopback sensing-server.
|
|
#[serde(default = "default_sensing_url")]
|
|
pub sensing_url: String,
|
|
|
|
/// Path to the model weights bundle (safetensors or HEF).
|
|
/// Resolved relative to the cog's install dir if not absolute.
|
|
pub model_path: PathBuf,
|
|
|
|
/// Frame poll interval in milliseconds.
|
|
#[serde(default = "default_poll_ms")]
|
|
pub poll_ms: u64,
|
|
|
|
/// Confidence threshold below which a frame's keypoints are not emitted.
|
|
#[serde(default = "default_min_confidence")]
|
|
pub min_confidence: f32,
|
|
}
|
|
|
|
fn default_sensing_url() -> String {
|
|
"http://127.0.0.1:3000/api/v1/sensing/latest".to_string()
|
|
}
|
|
|
|
fn default_poll_ms() -> u64 {
|
|
40 // ~25 Hz to match ESP32 CSI rate
|
|
}
|
|
|
|
fn default_min_confidence() -> f32 {
|
|
0.3
|
|
}
|
|
|
|
impl CogConfig {
|
|
pub fn load(path: &Path) -> Result<Self, ConfigError> {
|
|
let raw =
|
|
std::fs::read_to_string(path).map_err(|e| ConfigError::Read(path.to_path_buf(), e))?;
|
|
let cfg: CogConfig =
|
|
serde_json::from_str(&raw).map_err(|e| ConfigError::Parse(path.to_path_buf(), e))?;
|
|
Ok(cfg)
|
|
}
|
|
}
|
|
|
|
#[derive(Debug, thiserror::Error)]
|
|
pub enum ConfigError {
|
|
#[error("failed to read config at {0}: {1}")]
|
|
Read(PathBuf, std::io::Error),
|
|
#[error("failed to parse config at {0}: {1}")]
|
|
Parse(PathBuf, serde_json::Error),
|
|
}
|