use brainvision::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
let host = std::env::var("BRAINVISION_HOST").unwrap_or_else(|_| "127.0.0.1".into());
let port = std::env::var("BRAINVISION_PORT")
.ok()
.and_then(|s| s.parse::<u16>().ok())
.unwrap_or(RDA_PORT_I16);
println!("BrainVision RDA — Rust CLI\n");
println!("Connecting to {host}:{port} ...");
let mut dev = BrainVisionDevice::connect(&host, port)?;
let h = dev.wait_for_start()?;
println!("Channels: {}", h.channel_count);
println!("Sampling: {:.2} Hz", h.sampling_rate_hz());
let n = (h.sampling_rate_hz() as u32).max(1) * 4;
let scans = dev.capture(n)?;
println!("Captured {} scans", scans.len());
for (i, s) in scans.iter().take(5).enumerate() {
println!("[{i}] {:?}", &s.eeg()[..s.eeg().len().min(8)]);
}
dev.close();
Ok(())
}