mirror of
https://github.com/hubaldv/bioz-host-rs.git
synced 2025-12-06 05:11:17 +00:00
55 lines
1.7 KiB
Rust
55 lines
1.7 KiB
Rust
use simple_logger::SimpleLogger;
|
|
use log::info;
|
|
use tokio::runtime::Runtime;
|
|
|
|
use bioz_host_rs::app::App;
|
|
|
|
use bioz_host_rs::communication::communicate_with_hardware;
|
|
|
|
use tokio::sync::mpsc::{self};
|
|
|
|
use bioz_host_rs::signals::SingleFrequencySignal;
|
|
|
|
fn main() {
|
|
SimpleLogger::new().init().expect("Failed to initialize logger");
|
|
log::set_max_level(log::LevelFilter::Info);
|
|
info!("Starting Bioz Impedance Visualizer...");
|
|
|
|
let rt = Runtime::new().expect("Unable to create Runtime");
|
|
|
|
// Enter the runtime so that `tokio::spawn` is available immediately.
|
|
// let _enter = rt.enter();
|
|
|
|
let (run_impedancemeter_tx, run_impedancemeter_rx) = mpsc::channel::<SingleFrequencySignal>(2);
|
|
let run_impedancemeter_tx_clone = run_impedancemeter_tx.clone();
|
|
|
|
let app = App::new(run_impedancemeter_tx);
|
|
let magnitude_clone = app.magnitude.clone();
|
|
let phase_clone = app.phase.clone();
|
|
let magnitude_series_clone = app.magnitude_series.clone();
|
|
let phase_series_clone = app.phase_series.clone();
|
|
let connected_clone = app.connected.clone();
|
|
|
|
let data_frequency_clone = app.data_frequency.clone();
|
|
|
|
// Execute the runtime in its own thread.
|
|
std::thread::spawn(move || {
|
|
rt.block_on(communicate_with_hardware(
|
|
run_impedancemeter_rx,
|
|
run_impedancemeter_tx_clone,
|
|
magnitude_clone,
|
|
phase_clone,
|
|
magnitude_series_clone,
|
|
phase_series_clone,
|
|
connected_clone,
|
|
data_frequency_clone,
|
|
));
|
|
});
|
|
|
|
// Run the GUI in the main thread.
|
|
let _ = eframe::run_native(
|
|
"Impedance Visualizer [egui + tokio] - Hubald Verzijl - 2025",
|
|
eframe::NativeOptions::default(),
|
|
Box::new(|_cc| Ok(Box::new(app))),
|
|
);
|
|
} |