futuresdr 0.0.39

An Experimental Async SDR Runtime for Heterogeneous Architectures.
Documentation
use anyhow::Result;
use futuresdr::blocks::FirBuilder;
use futuresdr::blocks::VectorSink;
use futuresdr::blocks::VectorSource;
use futuresdr::prelude::*;

#[test]
fn fir_f32() -> Result<()> {
    let mut fg = Flowgraph::new();

    let orig = vec![1.0f32, 2.0, 3.0, 4.0, 5.0, 6.0];
    let taps = [1.0f32, 1.0, 1.0];

    let src = VectorSource::<f32>::new(orig);
    let fir = FirBuilder::fir::<f32, f32, _>(taps);
    let snk = VectorSink::<f32>::new(6);

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

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

    let snk = snk.get()?;
    let v = snk.items();

    let res = vec![6.0f32, 9.0, 12.0, 15.0];
    assert_eq!(v.len(), res.len());
    for (have, want) in v.iter().zip(res) {
        assert!((have - want).abs() < f32::EPSILON);
    }

    Ok(())
}