diff --git a/adsb/src/device.rs b/adsb/src/device.rs index f3e2af2..e1cf176 100644 --- a/adsb/src/device.rs +++ b/adsb/src/device.rs @@ -17,8 +17,8 @@ pub struct RtlSdrDevice { } impl RtlSdrDevice { - /// List devices - pub fn list() { + /// Display dongle information + pub fn info(vid: u16, pid: u16) { let device_list = match DeviceList::new() { Ok(d) => d, Err(err) => { @@ -29,6 +29,9 @@ impl RtlSdrDevice { for device in device_list.iter() { match device.device_descriptor() { Ok(device_desc) => { + if vid != device_desc.vendor_id() && pid != device_desc.product_id() { + continue; + } println!( "Bus: {:03}, Device: {:03} VID: 0x{:04X}, PID: 0x{:04X}", device.bus_number(), diff --git a/adsb/src/main.rs b/adsb/src/main.rs index 2303b3f..3e3000d 100644 --- a/adsb/src/main.rs +++ b/adsb/src/main.rs @@ -21,9 +21,9 @@ struct ReceiverArgs { #[arg(short = 'c', long, action)] connect: bool, - /// List USB devices - #[arg(short = 'l', long, action)] - list: bool, + /// Display ADS-B/Mode-S receiver info + #[arg(short = 'i', long, action)] + info: bool, /// Enable debug logging #[arg(short = 'D', long, action)] @@ -41,15 +41,18 @@ fn main() -> Result<()> { env_logger::init_from_env(env_logger::Env::default().filter_or("RUST_LOG", default_filter)); + let vid = 0x0BDA; + let pid = 0x2832; + // Handle connection if args.connect { log::info!("Connecting to device"); - let mut device = RtlSdrDevice::open(0x0BDA, 0x2832)?; + let mut device = RtlSdrDevice::open(vid, pid)?; device.read(TransferType::Bulk) } - // List devices - else if args.list { - RtlSdrDevice::list(); + // Display dongle info + else if args.info { + RtlSdrDevice::info(vid, pid); Ok(()) } // Handle decode mode