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(())
}