rust-patlite-beacon 0.1.1

A Rust library and CLI tool for controlling USB PATLITE beacon devices
Documentation
use anyhow::Result;
use rust_patlite_beacon::{AsyncBeacon, Beacon, LedColor, LedPattern};
use std::time::Duration;

#[tokio::main]
async fn main() -> Result<()> {
    println!("Opening beacon device...");
    let beacon = Beacon::open()?;
    
    // Set LED to blue while waiting
    beacon.set_light(LedColor::Blue, LedPattern::Pattern1)?;
    
    let async_beacon = AsyncBeacon::new(beacon);
    
    println!("Example 1: Simple wait for touch");
    println!("Please press the touch sensor...");
    async_beacon.wait_for_touch().await?;
    println!("Touch detected!");
    
    println!("\nExample 2: Wait with callback to show state");
    println!("Press the touch sensor again...");
    async_beacon.wait_for_touch_with_callback(|state| {
        println!("Sensor state: {}", if state { "PRESSED" } else { "RELEASED" });
    }).await?;
    
    println!("\nExample 3: Poll sensor for 5 seconds");
    let start = std::time::Instant::now();
    async_beacon.poll_touch_sensor(|state| {
        println!("Polling... state: {}", if state { "PRESSED" } else { "RELEASED" });
        
        // Continue polling for 5 seconds
        start.elapsed() < Duration::from_secs(5)
    }, Duration::from_millis(100)).await?;
    
    println!("\nAll examples completed!");
    Ok(())
}