]>
code.octet-stream.net Git - m17rt/blob - tools/m17rt-fastdemod/src/main.rs
1 use std
::{error
::Error
, fs
::File
, io
::Read
, path
::PathBuf
};
5 modem
::{Demodulator
, SoftDemodulator
},
11 #[arg(short = 'i', help = "Input RRC file")]
15 fn main() -> Result
<(), Box
<dyn Error
>> {
17 let args
= Args
::parse();
19 let mut file
= File
::open(&args
.inp
ut
)?
;
20 let mut baseband
= vec
![];
21 file
.read_to_end(&mut baseband
)?
;
24 let mut demod
= SoftDemodulator
::new();
25 for (idx
, sample
) in baseband
27 .map(|pair
| i16::from_le_bytes([pair
[0], pair
[1]]))
30 if let Some((frame
, errors
)) = demod
.demod(sample
) {
32 let frame_desc
= match frame
{
33 Frame
::Lsf(_
) => "lsf",
34 Frame
::Stream(_
) => "stream",
35 Frame
::Packet(_
) => "packet",
37 println
!("sample {}: {} with {} errors", idx
, frame_desc
, errors
);
41 println
!("\ntotal successful decodes: {}", total
);