1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use anyhow::Result;
pub trait Modulation: Send {
fn build(&mut self) -> Result<()>;
fn rebuild(&mut self) -> Result<()>;
fn buffer(&self) -> &[u8];
fn finished(&self) -> bool {
self.remaining() == 0
}
fn remaining(&self) -> usize {
self.buffer().len() - self.sent()
}
fn head(&self) -> *const u8 {
unsafe { self.buffer().as_ptr().add(self.sent()) }
}
fn sent(&self) -> usize;
fn send(&mut self, sent: usize);
fn sampling_frequency_division(&mut self) -> &mut usize;
fn sampling_freq(&self) -> f64;
}