wifi_densepose_signal/
lib.rs1pub mod bvp;
35pub mod csi_processor;
36pub mod csi_ratio;
37pub mod features;
38pub mod fresnel;
39pub mod hampel;
40pub mod hardware_norm;
41pub mod motion;
42pub mod phase_sanitizer;
43pub mod ruvsense;
44pub mod spectrogram;
45pub mod subcarrier_selection;
46
47pub use csi_processor::{
49 CsiData, CsiDataBuilder, CsiPreprocessor, CsiProcessor, CsiProcessorConfig,
50 CsiProcessorConfigBuilder, CsiProcessorError,
51};
52pub use features::{
53 AmplitudeFeatures, CsiFeatures, CorrelationFeatures, DopplerFeatures, FeatureExtractor,
54 FeatureExtractorConfig, PhaseFeatures, PowerSpectralDensity,
55};
56pub use motion::{
57 HumanDetectionResult, MotionAnalysis, MotionDetector, MotionDetectorConfig, MotionScore,
58};
59pub use hardware_norm::{
60 AmplitudeStats, CanonicalCsiFrame, HardwareNormError, HardwareNormalizer, HardwareType,
61};
62pub use phase_sanitizer::{
63 PhaseSanitizationError, PhaseSanitizer, PhaseSanitizerConfig, UnwrappingMethod,
64};
65
66pub const VERSION: &str = env!("CARGO_PKG_VERSION");
68
69pub type Result<T> = std::result::Result<T, SignalError>;
71
72#[derive(Debug, thiserror::Error)]
74pub enum SignalError {
75 #[error("CSI processing error: {0}")]
77 CsiProcessing(#[from] CsiProcessorError),
78
79 #[error("Phase sanitization error: {0}")]
81 PhaseSanitization(#[from] PhaseSanitizationError),
82
83 #[error("Feature extraction error: {0}")]
85 FeatureExtraction(String),
86
87 #[error("Motion detection error: {0}")]
89 MotionDetection(String),
90
91 #[error("Invalid configuration: {0}")]
93 InvalidConfig(String),
94
95 #[error("Data validation error: {0}")]
97 DataValidation(String),
98}
99
100pub mod prelude {
102 pub use crate::csi_processor::{CsiData, CsiProcessor, CsiProcessorConfig};
103 pub use crate::features::{CsiFeatures, FeatureExtractor};
104 pub use crate::motion::{HumanDetectionResult, MotionDetector};
105 pub use crate::phase_sanitizer::{PhaseSanitizer, PhaseSanitizerConfig};
106 pub use crate::{Result, SignalError};
107}
108
109#[cfg(test)]
110mod tests {
111 use super::*;
112
113 #[test]
114 fn test_version() {
115 assert!(!VERSION.is_empty());
116 }
117}