use neurosky::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();
println!("NeuroSky MindWave — Rust CLI\n");
let ports = MindWaveDevice::find()?;
if ports.is_empty() { eprintln!("No device found."); return Ok(()); }
println!("Opening {}...", ports[0]);
let mut device = MindWaveDevice::open(&ports[0])?;
device.auto_connect()?;
println!("Streaming (Ctrl+C to stop)...\n");
loop {
for packet in device.read()? {
match packet {
Packet::Attention(v) => println!("Attention: {}/100", v),
Packet::Meditation(v) => println!("Meditation: {}/100", v),
Packet::PoorSignal(v) => { if v > 0 { println!("Signal: {} (0=good, 200=off)", v); } }
Packet::AsicEeg(eeg) => println!("EEG bands: δ={} θ={} α={}/{} β={}/{} γ={}/{}",
eeg.delta, eeg.theta, eeg.low_alpha, eeg.high_alpha,
eeg.low_beta, eeg.high_beta, eeg.low_gamma, eeg.mid_gamma),
_ => {}
}
}
}
}