Files
ruvnet--RuView/v2/crates/wifi-densepose-signal/src/lib.rs
T
rUv 004a63e82d fix(security): audit — fix RUSTSEC vulns, clippy warnings, dead code (#769)
- 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
2026-05-23 05:36:13 -04:00

118 lines
3.5 KiB
Rust

//! WiFi-DensePose Signal Processing Library
//!
//! This crate provides signal processing capabilities for WiFi-based human pose estimation,
//! including CSI (Channel State Information) processing, phase sanitization, feature extraction,
//! and motion detection.
//!
//! # Features
//!
//! - **CSI Processing**: Preprocessing, noise removal, windowing, and normalization
//! - **Phase Sanitization**: Phase unwrapping, outlier removal, and smoothing
//! - **Feature Extraction**: Amplitude, phase, correlation, Doppler, and PSD features
//! - **Motion Detection**: Human presence detection with confidence scoring
//!
//! # Example
//!
//! ```rust,no_run
//! use wifi_densepose_signal::{
//! CsiProcessor, CsiProcessorConfig,
//! PhaseSanitizer, PhaseSanitizerConfig,
//! MotionDetector,
//! };
//!
//! // Configure CSI processor
//! let config = CsiProcessorConfig::builder()
//! .sampling_rate(1000.0)
//! .window_size(256)
//! .overlap(0.5)
//! .noise_threshold(-30.0)
//! .build();
//!
//! let processor = CsiProcessor::new(config);
//! ```
pub mod bvp;
pub mod csi_processor;
pub mod csi_ratio;
pub mod features;
pub mod fresnel;
pub mod hampel;
pub mod hardware_norm;
pub mod motion;
pub mod phase_sanitizer;
pub mod ruvsense;
pub mod spectrogram;
pub mod subcarrier_selection;
// Re-export main types for convenience
pub use csi_processor::{
CsiData, CsiDataBuilder, CsiPreprocessor, CsiProcessor, CsiProcessorConfig,
CsiProcessorConfigBuilder, CsiProcessorError,
};
pub use features::{
AmplitudeFeatures, CorrelationFeatures, CsiFeatures, DopplerFeatures, FeatureExtractor,
FeatureExtractorConfig, PhaseFeatures, PowerSpectralDensity,
};
pub use hardware_norm::{
AmplitudeStats, CanonicalCsiFrame, HardwareNormError, HardwareNormalizer, HardwareType,
};
pub use motion::{
HumanDetectionResult, MotionAnalysis, MotionDetector, MotionDetectorConfig, MotionScore,
};
pub use phase_sanitizer::{
PhaseSanitizationError, PhaseSanitizer, PhaseSanitizerConfig, UnwrappingMethod,
};
/// Library version
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
/// Common result type for signal processing operations
pub type Result<T> = std::result::Result<T, SignalError>;
/// Unified error type for signal processing operations
#[derive(Debug, thiserror::Error)]
pub enum SignalError {
/// CSI processing error
#[error("CSI processing error: {0}")]
CsiProcessing(#[from] CsiProcessorError),
/// Phase sanitization error
#[error("Phase sanitization error: {0}")]
PhaseSanitization(#[from] PhaseSanitizationError),
/// Feature extraction error
#[error("Feature extraction error: {0}")]
FeatureExtraction(String),
/// Motion detection error
#[error("Motion detection error: {0}")]
MotionDetection(String),
/// Invalid configuration
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
/// Data validation error
#[error("Data validation error: {0}")]
DataValidation(String),
}
/// Prelude module for convenient imports
pub mod prelude {
pub use crate::csi_processor::{CsiData, CsiProcessor, CsiProcessorConfig};
pub use crate::features::{CsiFeatures, FeatureExtractor};
pub use crate::motion::{HumanDetectionResult, MotionDetector};
pub use crate::phase_sanitizer::{PhaseSanitizer, PhaseSanitizerConfig};
pub use crate::{Result, SignalError};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
assert!(VERSION.contains('.'), "VERSION should be a semver string");
}
}