#sdr #ffi #bindings #iq #samples #set #libairspy

bin+lib airspy

libairspy 的 Rust 绑定

5 个版本 (3 个破坏性更新)

使用旧的 Rust 2015

0.4.0 2015年8月31日
0.3.1 2015年8月31日
0.3.0 2015年8月31日
0.2.0 2015年8月30日
0.1.0 2015年8月28日

#19#samples

MIT 许可证

32KB
698

libairspy 的 Rust 绑定

需要系统上已安装并构建的至少 1.0.6 版的 libairspy。测试需要一个连接的 Airspy(否则没有太多可测试的!)并且必须使用 RUST_TEST_THREADS=1 运行,否则线程可能会互相干扰。

简单使用示例

extern crate airspy;
use airspy::{Airspy,IQ};
use std::sync::mpsc;

// Open first available Airspy and configure for floating IQ samples,
// 10Msps, 434MHz (can also set gains, AGC, RF bias etc).
let mut dev = Airspy::new().unwrap();
dev.set_sample_rate(0).unwrap();
dev.set_freq(434000000).unwrap();

// Samples are sent back to us from the C thread by an MPSC channel
let (tx, rx) = mpsc::channel();

// Begin receiving data. Need the type hint either here or when creating the
// channel, which must match with the sample type selected earlier.
dev.start_rx::<IQ<f32>>(tx).unwrap();

// Blocking receive samples, stop after 10M. When the `rx` object goes out of
// scope and is destroyed, the `tx` detects the hangup and tells libairspy to
// stop data reception.
let mut n_samples = 0usize;
while dev.is_streaming() {
    let samples = rx.recv().unwrap();
    n_samples += samples.len() / 2;
    println!("Got {} samples so far", n_samples);
    if n_samples > 10_000_000 {
        break;
    }
}

查看 src/bin/rx.rs 以获取使用示例。

依赖项

~510KB
~10K SLoC