ring buffer init

This commit is contained in:
2026-06-11 13:19:41 +02:00
parent f402885ab8
commit 819171720c
4 changed files with 73 additions and 0 deletions

32
src/fir.rs Normal file
View File

@ -0,0 +1,32 @@
// Finite Impulse response + Decimation
use num_complex::Complex32;
use crate::utils::ring_buffer::RingBuffer;
pub struct Fir {
// Filter coefs
pub taps: Vec<f32>,
// Ring Buffer of samples
pub history: RingBuffer<Complex32>,
decimation_factor: usize,
// When to keep a sample
decimator_counter: usize,
}
impl Fir {
fn new(decimation_factor: usize) -> Self {
Self {
// TODO: precalulate filter coefs + ring buffer
taps: vec![],
history:
decimation_factor,
decimator_counter: 0,
}
}
fn () {
}
}

View File

@ -3,7 +3,9 @@ use crate::iq_reader::FileSource;
use std::error::Error;
mod agc;
mod fir;
mod iq_reader;
mod utils;
fn main() -> Result<(), Box<dyn Error>> {
let source = FileSource::new("test.iq", 32769)?;

1
src/utils/mod.rs Normal file
View File

@ -0,0 +1 @@
pub mod ring_buffer;

38
src/utils/ring_buffer.rs Normal file
View File

@ -0,0 +1,38 @@
pub struct RingBuffer<T> {
pub data: Vec<T>,
pub head: usize,
pub tail: usize,
pub len: usize,
}
impl<T> RingBuffer<T> {
fn new(capacity: usize) -> Self {
// TODO : add capacity to vec
Self {
data: Vec::new(),
head: 0,
tail: 0,
len: 0,
}
}
fn push(&mut self, value: T) {
todo!();
}
fn pop(&mut self) -> bool {
todo!();
}
fn is_empty(&self) -> bool {
todo!();
}
fn is_full(&self) -> bool {
todo!();
}
fn len(&self) -> usize {
self.len
}
}