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::macros::connect;
use futuresdr::runtime::Error;
use futuresdr::runtime::Flowgraph;
use futuresdr::runtime::Runtime;

fn main() -> Result<(), Error> {
    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(())
}

Re-exports§

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

Modules§

blocks
Block Library
macros
Macros
runtime
SDR Runtime