15 个版本 (破坏性更新)

0.12.0 2024 年 7 月 31 日
0.11.0 2024 年 2 月 22 日
0.10.0 2023 年 9 月 15 日
0.8.0 2023 年 6 月 13 日
0.1.0 2022 年 12 月 31 日

#144硬件支持

Download history 87/week @ 2024-04-24 14/week @ 2024-05-01 1/week @ 2024-05-08 4/week @ 2024-05-15 36/week @ 2024-05-22 3/week @ 2024-06-05 31/week @ 2024-06-12 52/week @ 2024-06-19 9/week @ 2024-06-26 40/week @ 2024-07-03 39/week @ 2024-07-10 55/week @ 2024-07-17 15/week @ 2024-07-24 151/week @ 2024-07-31 5/week @ 2024-08-07

每月 236 次下载
futuresdr 中使用

Apache-2.0 和可能 GPL-3.0

160KB
4K SLoC

Seify! 一个 Rusty SDR 硬件抽象库

目标

通往出色的 Rust SDR 驱动程序生态系统的清晰路径。

  • Seify 为 Soapy 提供了实现,因此支持几乎所有可用的 SDR 前端。
  • Seify 支持具有动态分发的类型化和泛型设备。对于类型化版本,没有或最小化开销,即没有理由不使用 Seify。
  • 一旦有更多本机 Rust 驱动程序可用,它们可以被添加到 Seify 中,并逐步从 Soapy 转移到纯 Rust 驱动程序。
  • 通往适当的异步和 WASM WebUSB 的清晰路径。
  • 零安装:Rust 驱动程序不需要基础系统的库。它们要么基于网络/http,要么使用 rusb,它提供 libusb
  • 为 Rust 驱动程序提供适当的驱动程序集成(例如,核心库中没有线程)。
  • Rust 驱动程序通过每个二进制文件的 crate 功能添加,并不依赖于系统范围的库。
  • 为 Rust SDR 驱动程序提供一个框架,以避免在生态系统中驱动程序实现的分歧概念。

硬件驱动程序

要添加新的 SDR 驱动程序,请在 src/impls 文件夹中添加一个实现 DeviceTrait 的结构体,并将驱动程序的特性逻辑添加到 src/device.rs 中的探测/枚举逻辑中。

目前,Seify 被设计为将驱动程序实现提交到上游,即没有插件系统。这可能会添加,但不是当前的重点。虽然这集中在 Seify 的维护工作上,但简化了用户的工作,用户只需将 Seify 添加到项目中,并启用其 SDR 的功能标志。

示例

use num_complex::Complex32;
use seify::Device;

pub fn main() -> Result<(), Box<dyn std::error::Error>> {
    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(())
}

依赖项

~3–10MB
~113K SLoC