summaryrefslogtreecommitdiff
path: root/src/lib.rs
blob: 268c0bd6297f664066b6b5a61296881cb09b075f (plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
extern crate libusb;

pub struct Dongle {
    vendor: u16,
    product: u16,
    name: &'static str
}

pub struct RtlSdr {
    usb_ctx: libusb::Context
}

impl RtlSdr {
    pub fn new() -> RtlSdr {
        let usb_ctx = libusb::Context::new().unwrap();
        RtlSdr {
            usb_ctx
        }
    }

    pub fn find(&self) {
        for mut dev in self.usb_ctx.devices().unwrap().iter() {
            let desc = dev.device_descriptor().unwrap();
            println!("Bus {:03} Device {:03} ID {:04x}:{:04x}",
                dev.bus_number(),
                dev.address(),
                desc.vendor_id(),
                desc.product_id());
        }
    }
}



#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn dongle() {
        let _dongle = Dongle {
            vendor: 0x1234,
            product: 0x5678,
            name: "Test"
        };
        assert!(_dongle.name == "Test");
    }
}