Now working CSMA with TCP

This commit is contained in:
2025-10-19 13:31:03 +02:00
parent f0f8e556b8
commit 01a3b2819e
2 changed files with 317 additions and 317 deletions

34
src/squelch.rs Normal file
View File

@ -0,0 +1,34 @@
use std::collections::VecDeque;
use rand::seq::index::sample;
use crate::complex::Complex32;
pub struct Squelch {
window: VecDeque<f32>,
sum: f32,
level: f32,
}
impl Squelch {
pub fn new(length: usize, level: f32) -> Self {
Squelch {
window: VecDeque::from(vec![0.; length]),
sum: 0.,
level,
}
}
pub fn next(&mut self, sample: Complex32) -> Option<Complex32> {
let oldest = self.window.pop_back().unwrap();
self.window.push_front(sample.mag());
self.sum -= oldest;
self.sum += sample.mag();
if self.sum / (self.window.len() as f32) > self.level {
Some(sample)
} else {
None
}
}
}