use clap::Parser;
use desperado::{IqFormat, IqSource};
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(short, long)]
bin_file: String,
#[arg(short, long)]
sample_rate: u32,
#[arg(short, long)]
center_freq: u32,
#[arg(short, long, default_value = "cu8")]
iq_format: IqFormat,
}
fn main() -> desperado::Result<()> {
let args = Args::parse();
let iq_file = IqSource::from_file(
&args.bin_file,
args.center_freq,
args.sample_rate,
8132,
args.iq_format,
)?;
let mut num_samples = 0;
for chunk in iq_file {
if let Ok(samples) = chunk {
num_samples += samples.len();
} else {
eprintln!("Error reading samples: {}", chunk.unwrap_err());
}
}
println!(
"Read {} I/Q samples ({} seconds) from '{}'",
num_samples,
num_samples as f32 / args.sample_rate as f32,
args.bin_file
);
Ok(())
}