zero cost abstraction

This commit is contained in:
2026-06-12 15:15:11 +02:00
parent d3375c0e22
commit b4b2845321
4 changed files with 75 additions and 23 deletions

View File

@ -1,31 +1,25 @@
use crate::agc::Agc;
use crate::fir::Fir;
use crate::iq_reader::FileSource;
use crate::pipeline::DspPipelineExt;
use std::error::Error;
mod agc;
mod fir;
mod iq_reader;
mod pipeline;
mod utils;
fn main() -> Result<(), Box<dyn Error>> {
let source = FileSource::new("test.iq", 32769)?;
// TODO: make a clean pipline use like GNU radio with iterators (like chunk.agc(...).fir(...)...)
// 20 MSps
let mut agc = Agc::new(20_000_000.0, 0.1, 0.001, 100.0);
// Fir coefs
let taps = [1.0; 64];
// Fir
let mut fir = Fir::<64>::new(taps, 4);
// Apply Auto Gain Control
for chunk_r in source {
let mut chunk = chunk_r?;
agc.process_chunk(&mut chunk);
fir.process_chunk(&mut chunk);
let pipeline = source
.agc(20_000_000.0, 1.0, 0.001, 100.0)
.fir::<64>(taps, 4);
for chunk_r in pipeline {
let _chunk = chunk_r?;
}
Ok(())