diff --git a/Cargo.lock b/Cargo.lock index 906ab36..c3ca4a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1644,7 +1644,7 @@ dependencies = [ ] [[package]] -name = "stabilizer-streaming" +name = "stabilizer-stream" version = "0.1.0" dependencies = [ "anyhow", diff --git a/Cargo.toml b/Cargo.toml index b1f288b..76d3f52 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "stabilizer-streaming" +name = "stabilizer-stream" version = "0.1.0" authors = [ "Robert Jördens ", @@ -7,7 +7,9 @@ authors = [ ] license = "MIT OR Apache-2.0" edition = "2021" -rust-version = "1.67" +rust-version = "1.70" +description = "Tools to interact with Stabilizer streams, including PSD analysis app" +repository = "https://github.com/quartiq/stabilizer-streaming" [dependencies] clap = { version = "4.3", features = ["derive"] } diff --git a/README.md b/README.md index 1bc976c..41c4677 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,17 @@ -# stabilizer-streaming -Host-side stream utilities for interacting with Stabilizer's livestream +# stabilizer-stream + +Host-side stream utilities for interacting with Stabilizer's data stream + +## PSD + +Graphical frontend to real-time cascaded power-spectral density (PSD) measurements. + +* Low-latency online PSD monitoring +* Arbitrarily large effective FFT sizes +* More than 200 MS/s on a single CPU core +* Supports [`stabilizer`](https://github.com/quartiq/stabilizer) + `dual-iir`/`lockin`/`fls` formats as well as device-independent raw streams + +See the following real time video of a 200 MS/s stream being analyzed (4.8e9 samples in 24 seconds): + +https://github.com/quartiq/stabilizer-streaming/assets/1338946/14333e17-61ef-4ca2-a5d2-c314b70714ad diff --git a/src/bin/main.rs b/src/bin/psd.rs similarity index 99% rename from src/bin/main.rs rename to src/bin/psd.rs index bf31d65..b67a7b5 100644 --- a/src/bin/main.rs +++ b/src/bin/psd.rs @@ -4,13 +4,12 @@ use anyhow::Result; use clap::Parser; use eframe::egui::{self, ComboBox, ProgressBar, Slider}; use egui_plot::{GridInput, GridMark, Legend, Line, Plot, PlotPoint, PlotPoints}; -use stabilizer_streaming::{AvgOpts, MergeOpts}; use std::time::Duration; use std::{ops::RangeInclusive, sync::mpsc}; -use stabilizer_streaming::{ +use stabilizer_stream::{ source::{Source, SourceOpts}, - Break, Detrend, PsdCascade, + AvgOpts, Break, Detrend, MergeOpts, PsdCascade, }; #[derive(Clone, Copy, Debug)] diff --git a/src/bin/stream_test.rs b/src/bin/stream_test.rs index 53bb5f3..646685b 100644 --- a/src/bin/stream_test.rs +++ b/src/bin/stream_test.rs @@ -1,11 +1,12 @@ use anyhow::Result; use clap::Parser; -use stabilizer_streaming::{ +use std::sync::mpsc; +use std::time::Duration; + +use stabilizer_stream::{ source::{Source, SourceOpts}, Break, Detrend, MergeOpts, PsdCascade, VarBuilder, }; -use std::sync::mpsc; -use std::time::Duration; /// Execute stabilizer stream throughput testing. /// Use `RUST_LOG=info cargo run` to increase logging verbosity. diff --git a/src/bin/stream_to_raw.rs b/src/bin/stream_to_raw.rs index 3b790fb..a46fb14 100644 --- a/src/bin/stream_to_raw.rs +++ b/src/bin/stream_to_raw.rs @@ -1,8 +1,9 @@ use anyhow::Result; use clap::Parser; -use stabilizer_streaming::source::{Source, SourceOpts}; use std::io::Write; +use stabilizer_stream::source::{Source, SourceOpts}; + #[derive(Parser, Debug)] pub struct Opts { #[command(flatten)]