awear 0.2.0

Rust client for AWEAR EEG devices over BLE using btleplug
Documentation
//! Headless CLI: scan, connect, and print all AWEAR events to stdout.

use awear::prelude::*;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    env_logger::Builder::from_env(env_logger::Env::default().default_filter_or("info")).init();

    let config = AwearClientConfig::default();
    let client = AwearClient::new(config);

    println!("Scanning for AWEAR devices...");
    let (mut rx, handle) = client.connect().await?;

    println!("Connected! Sending START...");
    handle.start().await?;

    println!("Streaming EEG data (Ctrl+C to stop)...\n");

    while let Some(event) = rx.recv().await {
        match event {
            AwearEvent::Eeg(reading) => {
                println!(
                    "EEG [seq={}] {} samples | min={} max={}",
                    reading.sequence,
                    reading.samples.len(),
                    reading.samples.iter().min().unwrap_or(&0),
                    reading.samples.iter().max().unwrap_or(&0),
                );
            }
            AwearEvent::Battery(level) => {
                println!("Battery: {}%", level);
            }
            AwearEvent::Signal(rssi) => {
                println!("Signal: {} dBm", rssi);
            }
            AwearEvent::Connected(name) => {
                println!("Connected to: {}", name);
            }
            AwearEvent::Ready => {
                println!("Device ready (authenticated)");
            }
            AwearEvent::Disconnected => {
                println!("Disconnected");
                break;
            }
            AwearEvent::Misc(text) => {
                println!("Misc: {}", text);
            }
            AwearEvent::Status(text) => {
                println!("Status: {}", text);
            }
        }
    }

    Ok(())
}