neurosky 0.0.1

Rust library and TUI for NeuroSky MindWave EEG headsets via the ThinkGear serial protocol
Documentation
//! CLI: scan for MindWave ports, connect, and stream packets.

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),
                _ => {}
            }
        }
    }
}