Function open

Source
pub fn open(index: i32) -> (Arc<Device>, Error)
Expand description

Returns an opened device by index.

Examples found in repository?
examples/ex1.rs (line 192)
173fn main() {
174    // ---------- Device Check ----------
175    let count = rtlsdr::get_device_count();
176    if count == 0 {
177        println!("No devices found, exiting.");
178        return;
179    }
180
181    for i in 0..count {
182        let (m, p, s, err) = rtlsdr::get_device_usb_strings(i);
183        println!("get_device_usb_strings: {:?} - {} {} {}", err, m, p, s);
184    }
185
186    let index = 0;
187    println!("===== Device name, index {}: {} =====",
188             index,
189             rtlsdr::get_device_name(0));
190    println!("===== Running tests using device indx: 0 =====\n");
191
192    let (dev, mut err) = rtlsdr::open(index);
193    match err {
194        Error::NoError => println!("open successful"),
195        _ => return,
196    }
197
198    err = sdr_config(&dev);
199    match err {
200        Error::NoError => println!("sdr_config successful..."),
201        _ => return,
202    }
203
204    println!("calling read_sync...");
205    for i in 0..10 {
206        let (_, read_count, err) = dev.read_sync(rtlsdr::DEFAULT_BUF_LENGTH);
207        println!("----- read_sync requested iteration {} -----", i);
208        println!("\tread_sync requested - {}", rtlsdr::DEFAULT_BUF_LENGTH);
209        println!("\tread_sync received  - {}", read_count);
210        println!("\tread_sync err msg   - {:?}", err);
211    }
212
213    dev.reset_buffer();
214
215    // read_async is a blocking call and doesn't return until
216    // async_stop is called , so we spawn a thread that sleeps
217    // for a bit while our async callback is called...
218    let d = dev.clone();
219    thread::spawn(move || {
220        println!("async_stop thread sleeping for 5 seconds...");
221        thread::sleep(Duration::from_millis(5000));
222        println!("async_stop thread awake, canceling read async...");
223        d.cancel_async();
224    });
225
226    println!("calling read_async...");
227    err = dev.read_async(Some(read_async_callback),
228                         ptr::null_mut(),
229                         rtlsdr::DEFAULT_ASYNC_BUF_NUMBER,
230                         rtlsdr::DEFAULT_BUF_LENGTH);
231    match err {
232        Error::NoError => println!("device close successful..."),
233        _ => println!("dev close error - {:?}", err),
234    }
235
236    err = dev.close();
237    match err {
238        Error::NoError => println!("device close successful..."),
239        _ => println!("dev close error - {:?}", err),
240    }
241}