neurosky 0.0.1

Rust library and TUI for NeuroSky MindWave EEG headsets via the ThinkGear serial protocol
Documentation
//! Example: stream packets from a MindWave device.
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,
                ),
                _ => {}
            }
        }
    }
}