extern crate rtlsdr;
use std::fs::File;
use std::path::Path;
use std::io::prelude::*;
fn main() {
let count = rtlsdr::get_device_count();
println!("Found {} device(s)", count);
for index in 0..count {
println!("Index {}:", index);
let name = rtlsdr::get_device_name(index);
println!(" Name: {}", name);
let strs = rtlsdr::get_device_usb_strings(index).unwrap();
println!(" Manufacturer: {}", strs.manufacturer);
println!(" Product: {}", strs.product);
println!(" Serial: {}", strs.serial);
println!("");
let idx2 = rtlsdr::get_index_by_serial(strs.serial).unwrap();
println!(" Index looked up by serial: {}", idx2);
println!(" Opening device...");
let mut dev = rtlsdr::open(index).unwrap();
println!("");
println!(" Getting USB strings from opened device...");
let strs2 = dev.get_usb_strings().unwrap();
println!(" Manufacturer: {}", strs2.manufacturer);
println!(" Product: {}", strs2.product);
println!(" Serial: {}", strs2.serial);
println!("");
let (rtl_freq, tuner_freq) = dev.get_xtal_freq().unwrap();
println!(" RTL clock freq: {}Hz", rtl_freq);
println!(" Tuner clock freq: {}Hz", tuner_freq);
println!(" Setting RTL and tuner clock frequencies to same...");
dev.set_xtal_freq(rtl_freq, tuner_freq).unwrap();
println!(" Setting centre frequency to 434MHz...");
dev.set_center_freq(434_000_000).unwrap();
let cfreq = dev.get_center_freq().unwrap();
println!(" Read current centre frequency: {}Hz", cfreq);
let ppm = dev.get_freq_correction();
println!(" Current freq correction: {}ppm", ppm);
println!(" Setting freq correction to 1ppm...");
dev.set_freq_correction(1).unwrap();
let (t_id, t_name) = dev.get_tuner_type();
println!(" Tuner is a {} (id {})", &t_name, &t_id);
let gains = dev.get_tuner_gains().unwrap();
println!(" Available gains: {:?}", &gains);
println!(" Setting sample rate to 24kHz...");
dev.set_sample_rate(24000).unwrap();
let rate = dev.get_sample_rate().unwrap();
println!(" Current sample rate: {}Hz", rate);
let m = dev.get_direct_sampling().unwrap();
println!(" Direct sampling mode: {:?}", m);
dev.reset_buffer().unwrap();
let data = dev.read_sync(131072).unwrap();
let mut file = File::create(&Path::new("data.bin")).unwrap();
file.write(&data).unwrap();
println!(" Closing device...");
dev.close().unwrap();
}
}