Seify! A Rusty SDR Hardware Abstraction Library

Goals

A clear path towards a great Rust SDR driver ecosystem.

Hardware Drivers

To add a new SDR driver, add a struct, implementing the DeviceTrait in the src/impls folder and add feature-gated logic for the driver to the probing/enumeration logic in src/device.rs.

At the moment, Seify is designed to commit the driver implementations upstream, i.e., there is no plugin system. This will probably be added but is no priority at the moment. While this concentrates maintenance efforts on Seify, it simplifies things for the user, who just add Seify to the project and enables feature flags for their SDR.

Example

```rust use num_complex::Complex32; use seify::Device;

pub fn main() -> Result<(), Box> { let dev = Device::new()?; let mut samps = [Complex32::new(0.0, 0.0); 1024]; let mut rx = dev.rx_streamer(&[0])?; rx.activate()?; let n = rx.read(&mut [&mut samps], 200000)?; println!("read {n} samples");

Ok(())

} ```