Skip to main content

Crate futuresdr

Crate futuresdr 

Source
Expand description

An experimental asynchronous SDR runtime for heterogeneous architectures that is:

  • Extensible: custom buffers (supporting accelerators like GPUs and FPGAs) and custom schedulers (optimized for your application).
  • Asynchronous: solving long-standing issues around IO, blocking, and timers.
  • Portable: Linux, Windows, Mac, WASM, Android, and prime support for embedded platforms through a REST API and web-based GUIs.
  • Fast: SDR go brrr!

§Example

An example flowgraph that forwards 123 zeros into a sink:

use futuresdr::blocks::Head;
use futuresdr::blocks::NullSink;
use futuresdr::blocks::NullSource;
use futuresdr::prelude::*;

fn main() -> Result<()> {
    let mut fg = Flowgraph::new();

    let src = NullSource::<u8>::new();
    let head = Head::<u8>::new(123);
    let snk = NullSink::<u8>::new();

    connect!(fg, src > head > snk);

    Runtime::new().run(fg)?;

    Ok(())
}

§Main Entry Points

  • blocks Library of common blocks that are not tied to a specific technology.
  • runtime Runtime APIs for constructing, running, and interacting with flowgraphs.
  • prelude Imports for constructing, running, and interacting with flowgraphs.

§Custom Blocks

To implement custom blocks or other runtime extensions, use runtime::dev::prelude.

Re-exports§

pub extern crate tracing;
pub use async_net;
pub use futuredsp;
pub use futures;
pub use num_complex;
pub use num_integer;

Modules§

blocks
Library of common blocks that are not tied to a specific technology.
prelude
Prelude for building and controlling flowgraphs.
runtime
Build, run, and control SDR flowgraphs.