pub fn get_device_usb_strings(index: i32) -> (String, String, String, Error)
Expand description
Returns the information of a device by index.
Examples found in repository?
examples/ex1.rs (line 182)
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}