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::anyhow::Result;
use futuresdr::blocks::Head;
use futuresdr::blocks::NullSink;
use futuresdr::blocks::NullSource;
use futuresdr::macros::connect;
use futuresdr::runtime::Flowgraph;
use futuresdr::runtime::Runtime;
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(())
}
Re-exports
pub extern crate log;
pub use anyhow;
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
- Block Library
- Macros
- SDR Runtime