pub trait ModemTrait {
// Required methods
fn modulate(&self, data: &[bool]) -> Result<Vec<f32>, Box<dyn Error>>;
fn demodulate(&self, samples: &[f32]) -> Result<Vec<bool>, Box<dyn Error>>;
fn analyze_bit(&self, samples: &[f32]) -> Result<(f32, f32), Box<dyn Error>>;
}