pub struct Device { /* private fields */ }
Implementations§
Source§impl Device
impl Device
Sourcepub fn close(&self) -> Error
pub fn close(&self) -> Error
Close the device.
Examples found in repository?
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}
Sourcepub fn set_xtal_freq(&self, rtl_freq_hz: i32, tuner_freq_hz: i32) -> Error
pub fn set_xtal_freq(&self, rtl_freq_hz: i32, tuner_freq_hz: i32) -> Error
Sets the crystal oscillator frequencies.
Typically both ICs (rtlsdr and tuner) use the same clock. Changing the clock may make sense if you are applying an external clock to the tuner or to compensate the frequency (and sample rate) error caused by the original (cheap) crystal.
Note, call this function only if you fully understand the implications.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_xtal_freq(&self) -> (i32, i32, Error)
pub fn get_xtal_freq(&self) -> (i32, i32, Error)
Returns the crystal oscillator frequencies. Typically both ICs (rtlsdr and tuner) use the same clock.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_usb_strings(&self) -> (String, String, String, Error)
pub fn get_usb_strings(&self) -> (String, String, String, Error)
Returns the device information (manufact, product, serial). Note, strings may be empty.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn write_eeprom(&self, data: Vec<u8>, offset: u8) -> Error
pub fn write_eeprom(&self, data: Vec<u8>, offset: u8) -> Error
Writes information data to the EEPROM.
Sourcepub fn read_eeprom(&self, offset: u8, len: u16) -> (Vec<u8>, Error)
pub fn read_eeprom(&self, offset: u8, len: u16) -> (Vec<u8>, Error)
Returns information data read from the EEPROM.
Sourcepub fn set_center_freq(&self, freq_hz: i32) -> Error
pub fn set_center_freq(&self, freq_hz: i32) -> Error
Sets the center frequency.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_center_freq(&self) -> i32
pub fn get_center_freq(&self) -> i32
Returns the tuned frequency or zero on error.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_freq_correction(&self, ppm: i32) -> Error
pub fn set_freq_correction(&self, ppm: i32) -> Error
Sets the frequency correction.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_freq_correction(&self) -> i32
pub fn get_freq_correction(&self) -> i32
Returns the frequency correction value.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_tuner_type(&self) -> String
pub fn get_tuner_type(&self) -> String
Returns the tuner type.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_tuner_gains(&self) -> (Vec<i32>, Error)
pub fn get_tuner_gains(&self) -> (Vec<i32>, Error)
Returns a list of supported tuner gains. Values are in tenths of dB, e.g. 115 means 11.5 dB.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_tuner_gain(&self, gain: i32) -> Error
pub fn set_tuner_gain(&self, gain: i32) -> Error
Sets the tuner gain. Note, manual gain mode must be enabled for this to work. Valid gain values may be queried using get_tuner_gains.
Valid values (in tenths of a dB) are: -10, 15, 40, 65, 90, 115, 140, 165, 190, 215, 240, 290, 340, 420, 430, 450, 470, 490
Gain values are in tenths of dB, e.g. 115 means 11.5 dB.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_tuner_gain(&self) -> i32
pub fn get_tuner_gain(&self) -> i32
Returns the tuner gain.
Gain values are in tenths of dB, e.g. 115 means 11.5 dB.
Sourcepub fn set_tuner_bandwidth(&self, bw_hz: i32) -> Error
pub fn set_tuner_bandwidth(&self, bw_hz: i32) -> Error
Sets the device bandwidth.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_tuner_if_gain(&self, stage: i32, gains_tenths_db: i32) -> Error
pub fn set_tuner_if_gain(&self, stage: i32, gains_tenths_db: i32) -> Error
Sets the intermediate frequency gain.
Intermediate frequency gain stage number 1 to 6. Gain values are in tenths of dB, e.g. -30 means -3.0 dB.
Sourcepub fn set_tuner_gain_mode(&self, manual_mode: bool) -> Error
pub fn set_tuner_gain_mode(&self, manual_mode: bool) -> Error
Sets the gain mode, automatic or manual. Manual gain mode must be enabled for the gain setter function to work.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_sample_rate(&self, rate_hz: i32) -> Error
pub fn set_sample_rate(&self, rate_hz: i32) -> Error
Sets the sample rate.
When applicable, the baseband filters are also selected based on the requested sample rate.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn get_sample_rate(&self) -> i32
pub fn get_sample_rate(&self) -> i32
Returns the sample rate.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_testmode(&self, test_mode: bool) -> Error
pub fn set_testmode(&self, test_mode: bool) -> Error
Sets device to test mode.
Test mode returns 8 bit counters instead of samples. Note, the counter is generated inside the device.
Sourcepub fn set_agc_mode(&self, agc_mode: bool) -> Error
pub fn set_agc_mode(&self, agc_mode: bool) -> Error
Sets the AGC mode.
Sourcepub fn set_direct_sampling(&self, mode: SamplingMode) -> Error
pub fn set_direct_sampling(&self, mode: SamplingMode) -> Error
Sets the direct sampling mode.
When enabled, the IF mode of the device is activated, and set_center_freq() will control the IF-frequency of the DDC, which can be used to tune from 0 to 28.8 MHz (xtal frequency of the device).
Sourcepub fn get_direct_sampling(&self) -> SamplingMode
pub fn get_direct_sampling(&self) -> SamplingMode
Returns the state of direct sampling mode.
Sourcepub fn set_offset_tuning(&self, enable: bool) -> Error
pub fn set_offset_tuning(&self, enable: bool) -> Error
Sets the offset tuning mode for zero-IF tuners, which avoids problems caused by the DC offset of the ADCs and 1/f noise.
Sourcepub fn get_offset_tuning(&self) -> Error
pub fn get_offset_tuning(&self) -> Error
Returns the offset tuning mode.
Sourcepub fn reset_buffer(&self) -> Error
pub fn reset_buffer(&self) -> Error
Resets the streaming buffer.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
158
159unsafe extern "C" fn read_async_callback(buf: *mut c_uchar, len: u32, ctx: *mut c_void) {
160 let _ = ctx;
161 let v = Vec::<u8>::from_raw_parts(buf, len as usize, len as usize);
162 println!("----- read_async_callback buffer size - {}", len);
163 println!("----- {} {} {} {} {} {}",
164 v[0],
165 v[1],
166 v[2],
167 v[3],
168 v[4],
169 v[5]);
170}
171
172
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}
Sourcepub fn read_sync(&self, len: i32) -> (Vec<u8>, i32, Error)
pub fn read_sync(&self, len: i32) -> (Vec<u8>, i32, Error)
Performs a synchronous read of samples and returns the number of samples read.
Examples found in repository?
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}
Sourcepub fn read_async(
&self,
f: ReadAsyncCbT,
ctx: *mut c_void,
buf_num: i32,
buf_len: i32,
) -> Error
pub fn read_async( &self, f: ReadAsyncCbT, ctx: *mut c_void, buf_num: i32, buf_len: i32, ) -> Error
Reads samples asynchronously. Note, this function will block until canceled using cancel_async. ReadAsyncCbT is a package global variable.
Optional buf_num buffer count, buf_num * buf_len = overall buffer size, set to 0 for default buffer count of 32.
Optional buf_len buffer length, must be multiple of 512, set to 0 for default buffer length of 262,144 (16 * 32 * 512).
Examples found in repository?
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}
Sourcepub fn cancel_async(&self) -> Error
pub fn cancel_async(&self) -> Error
Cancels all pending asynchronous operations.
Examples found in repository?
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}
Sourcepub fn get_hw_info(&self) -> (HwInfo, Error)
pub fn get_hw_info(&self) -> (HwInfo, Error)
Reads the dongle’s information items from the EEPROM.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}
Sourcepub fn set_hw_info(&self, info: &HwInfo) -> Error
pub fn set_hw_info(&self, info: &HwInfo) -> Error
Write the dongle’s information items to the EEPROM.
Examples found in repository?
10fn sdr_config(dev: &rtlsdr::Device) -> Error {
11 let (m, p, s, mut err) = dev.get_usb_strings();
12 match err {
13 Error::NoError => println!("set_xtal_freq successful"),
14 _ => return err,
15 };
16 println!("m: {}\n p: {}\n s: {}\n err: {:?}\n", m, p, s, err);
17
18 // ---------- Get/Set/Get Hardware Info ----------
19 println!("1. Getting hardware info...");
20 let (mut hw_info, mut err) = dev.get_hw_info();
21
22 println!("Error: {:?}", err);
23 println!("Vendor ID: {:?}", hw_info.vendor_id);
24 println!("Product ID: {:?}", hw_info.product_id);
25 println!("Manufacturer: {:?}", hw_info.manufact);
26 println!("Product: {:?}", hw_info.product);
27 println!("Serial number: {:?}", hw_info.serial);
28 println!("Serial number enabled: {:?}", hw_info.have_serial);
29 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
30 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
31 println!("");
32
33 println!("Writing hardware info...");
34 err = dev.set_hw_info(&hw_info);
35 println!("Writing hardware info return message: {:?}\n", err);
36
37 println!("2. Getting hardware info...");
38 let (hw_info, mut err) = dev.get_hw_info();
39
40 println!("Error: {:?}", err);
41 println!("Vendor ID: {:?}", hw_info.vendor_id);
42 println!("Product ID: {:?}", hw_info.product_id);
43 println!("Manufacturer: {:?}", hw_info.manufact);
44 println!("Product: {:?}", hw_info.product);
45 println!("Serial number: {:?}", hw_info.serial);
46 println!("Serial number enabled: {:?}", hw_info.have_serial);
47 println!("IR endpoint enabled: {:?}", hw_info.enable_ir);
48 println!("Remote wakeup enabled: {:?}", hw_info.remote_wakeup);
49 println!("");
50
51 // ---------- Get Tuner Gain ----------
52 println!("get_tuner_type: {}", dev.get_tuner_type());
53 err = dev.set_xtal_freq(28800000, 28800000);
54 match err {
55 Error::NoError => println!("set_xtal_freq - 28800000"),
56 _ => return err,
57 };
58 println!("");
59
60 // ---------- Set Tuner Gain ----------
61 err = dev.set_tuner_gain_mode(true);
62 match err {
63 Error::NoError => println!("set_tuner_gain_mode successful..."),
64 _ => return err,
65 };
66
67 let (gains, mut err) = dev.get_tuner_gains();
68 match err {
69 Error::NoError => println!("get_tuner_gains successful..."),
70 _ => println!("get_tuner_gains failed - {:?}", err), // return err,
71 };
72
73 println!("\ntuner gains: {:?}\n", gains);
74
75 err = dev.set_tuner_gain(gains[2]);
76 match err {
77 Error::NoError => println!("set_tuner_gain {:?} successful...", gains[2]),
78 _ => return err,
79 };
80 println!("");
81
82 // ---------- Get/Set Sample Rate ----------
83 let samplerate: i32 = 2083334;
84 err = dev.set_sample_rate(samplerate);
85 match err {
86 Error::NoError => println!("set_sample_rate {} successful...", samplerate),
87 _ => return err,
88 };
89
90 println!("get_sample_rate {} successful...\n", dev.get_sample_rate());
91
92 // ---------- Get/Set Xtal Freq ----------
93 let (mut rtl_freq, mut tuner_freq, mut err) = dev.get_xtal_freq();
94 match err {
95 Error::NoError => {
96 println!("get_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
97 rtl_freq,
98 tuner_freq)
99 }
100 _ => return err,
101 };
102
103 rtl_freq = 28800000;
104 tuner_freq = 28800000;
105
106 err = dev.set_xtal_freq(rtl_freq, tuner_freq);
107 match err {
108 Error::NoError => {
109 println!("set_xtal_freq successful - rtl_freq: {}, tuner_freq: {}",
110 rtl_freq,
111 tuner_freq)
112 }
113 _ => return err,
114 };
115 println!("");
116
117 // ---------- Get/Set Center Freq ----------
118 err = dev.set_center_freq(978000000);
119 match err {
120 Error::NoError => println!("set_center_freq successful - 978000000"),
121 _ => return err,
122 };
123
124 println!("get_center_freq: {}\n", dev.get_center_freq());
125
126 // ---------- Set Tuner Bandwidth ----------
127 let bw: i32 = 1000000;
128 println!("Setting bandwidth: {}", bw);
129
130 err = dev.set_tuner_bandwidth(bw);
131 match err {
132 Error::NoError => println!("set_tuner_bandwidth {} Successful", bw),
133 _ => return err,
134 };
135 println!("");
136
137 // ---------- Buffer Reset ----------
138 err = dev.reset_buffer();
139 match err {
140 Error::NoError => println!("reset_buffer successful..."),
141 _ => return err,
142 };
143
144 // ---------- Get/Set Freq Correction ----------
145 let mut freq_corr = dev.get_freq_correction();
146 println!("get_freq_correction - {}", freq_corr);
147
148 freq_corr += 1;
149 let err = dev.set_freq_correction(freq_corr);
150 match err {
151 Error::NoError => println!("set_freq_correction successful - {}", freq_corr),
152 _ => return err,
153 };
154 println!("");
155 // ---------- ----------
156 Error::NoError
157}