zero cost abstraction
This commit is contained in:
22
src/main.rs
22
src/main.rs
@ -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(())
|
||||
|
||||
Reference in New Issue
Block a user