use neurosky::prelude::*;
fn main() -> Result<(), Box<dyn std::error::Error>> {
env_logger::init();
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");
let mut n = 0u64;
loop {
for pkt in device.read()? {
n += 1;
match pkt {
Packet::Attention(v) => println!("[{n:>6}] Attention: {v}/100"),
Packet::Meditation(v) => println!("[{n:>6}] Meditation: {v}/100"),
Packet::PoorSignal(v) if v > 0
=> println!("[{n:>6}] Signal: {v} (0=good, 200=off-head)"),
Packet::AsicEeg(eeg) => println!(
"[{n:>6}] EEG bands δ={} θ={} α={}/{} β={}/{} γ={}/{}",
eeg.delta, eeg.theta,
eeg.low_alpha, eeg.high_alpha,
eeg.low_beta, eeg.high_beta,
eeg.low_gamma, eeg.mid_gamma,
),
_ => {}
}
}
}
}