1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//! Radio navigation source handling for I/Q and WAV inputs.
//!
//! This module provides unified interfaces for processing radio navigation signals
//! from different input sources:
//!
//! - **I/Q Sources** (`iq/`): Raw complex samples from SDRs or files
//! - Raw I/Q binary files (cu8, cs8, cs16, cf32)
//! - GQRX recordings (auto-detected sample rate from filename)
//! - Live device input (RTL-SDR, Airspy, SoapySDR)
//!
//! - **WAV Sources** (`wav/`): Pre-recorded audio (already demodulated)
//! - AM-demodulated audio files from GQRX AM mode
//! - User-specified demodulation mode validation
//! - Clear error messages for unsupported formats
//!
//! ## Architecture
//!
//! ```text
//! I/Q Path (1.8 MSps) WAV Path (48 kHz)
//! ├─ Frequency shift ├─ Read mono PCM
//! ├─ Baseband LPF ├─ Detect IF carrier (optional)
//! ├─ AM demodulation (magnitude) ├─ Extract subcarriers
//! ├─ Decimation (→ 9 kHz or 48 kHz) └─ Shared DSP pipeline
//! └─ Shared DSP (common.rs)
//! ├─ Bandpass filters
//! ├─ Hilbert transforms
//! ├─ Envelope/phase extraction
//! └─ Modulation index calculation
//! ```
//!
//! ## Shared DSP Pipeline
//!
//! All source types feed into a unified DSP pipeline in `common.rs`:
//! - **ILS Processing**: Extract 90/150 Hz envelopes, compute DDM
//! - **VOR Processing**: Extract 30 Hz modulation, compute radial
//! - **Morse Processing**: Extract 1020 Hz envelope, decode ident
// Re-export main types for public API
pub use ;
pub use ;