Crates.io | futuresdr |
lib.rs | futuresdr |
version | 0.0.37 |
source | src |
created_at | 2021-07-29 13:42:12.044795 |
updated_at | 2023-11-06 10:55:42.033185 |
description | An Experimental Async SDR Runtime for Heterogeneous Architectures. |
homepage | https://www.futuresdr.org |
repository | https://github.com/futuresdr/futuresdr/ |
max_upload_size | |
id | 428803 |
size | 749,892 |
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!
Website | Guides | API Docs | Chat
FutureSDR supports Blocks with synchronous or asynchronous implementations for stream-based or message-based data processing. Blocks can be combined to a Flowgraph and launched on a Runtime that is driven by a Scheduler.
Since FutureSDR is in an early state of development, it is likely that SDR applications will require changes to the runtime. We, therefore, do not recommend to add it as a dependency in a separate project but to clone the repository and implement the application as binary, example, or sub-crate.
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(())
}
Contributions are very welcome. Please see the (work-in-progress) contributing guide for more information. If you develop larger features or work on major changes with the main intention to submit them upstream, it would be great, if you could announce them in advance.
The FutureSDR project adheres to the Rust Code of Conduct. It describes the minimum behavior expected from all contributors.
This project is licensed under the Apache 2.0 license.
Using this license is in contrast to the large majority of Open Source SDR applications and frameworks, which are mostly AGLP, LGPL, or GPL. In a nutshell, this means that there is no money to be made from relicensing the project for commercial use, since this is already allowed by Apache 2.0. Furthermore, companies can use (parts of) the project and integrate (adapted) versions in commercial products without releasing the source or contributing back to the project.
The main motivation for this license is that
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in FutureSDR, shall be licensed as Apache 2.0, without any additional terms or conditions.