summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2021-04-18 10:09:43 +0300
committerYuval Adam <_@yuv.al>2021-04-18 10:09:43 +0300
commit4965dfdb43111d002c262c4de3011359e41bd2c3 (patch)
tree3da7f36b3a698805eb8d05b95d88f93877a41bec /src/lib.rs
parent23dd9ed9eede40d033c22645fdc3eec310901b9b (diff)
Handle refactoring WIP
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 1a5e6b2..c5a6499 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -19,19 +19,18 @@ const KNOWN_DEVICES: [(u16, u16, &str); 2] = [
const KNOWN_TUNERS: [TunerInfo; 2] = [r820t::TUNER_INFO, fc0013::TUNER_INFO];
pub struct RtlSdr {
- // ctx: rusb::Context,
- // device: UsbDevice,
iface_id: u8,
tuner: Option<Box<dyn Tuner>>,
+ handle: Option<RtlSdrDeviceHandle>,
}
impl RtlSdr {
pub fn new() -> RtlSdr {
pretty_env_logger::init();
RtlSdr {
- // ctx: rusb::Context::new().unwrap(),
iface_id: INTERFACE_ID,
tuner: None,
+ handle: None,
}
}
@@ -49,6 +48,7 @@ impl RtlSdr {
info!("Found device {} {{{:04x}:{:04x}}}", kd.2, vid, pid);
let usb_handle = dev.open().unwrap();
let mut handle = RtlSdrDeviceHandle::new(usb_handle, self.iface_id);
+ self.handle = Some(handle);
// let kernel_driver_attached = handle.detach_kernel_driver();
let _iface = handle.claim_interface();
@@ -117,7 +117,19 @@ impl RtlSdr {
}
pub fn set_sample_rate(&self, samp_rate: u32) {
- self.handle.set_sample_rate(samp_rate);
+ self.handle.unwrap().set_sample_rate(samp_rate);
+ }
+
+ pub fn set_test_mode(&self, on: bool) {
+ let val = match on {
+ true => 0x03,
+ false => 0x05,
+ };
+ self.handle.unwrap().demod_write_reg(0, 0x19, val, 1);
+ }
+
+ pub fn reset_buffer(&self) {
+ self.handle.unwrap().reset_buffer();
}
}