use std::sync::Arc;
use std::sync::atomic::{AtomicBool, Ordering};
use std::thread;
use std::time::Duration;
use pad_motion::protocol::*;
use pad_motion::client::*;
fn main() {
let running = Arc::new(AtomicBool::new(true));
{
let running = running.clone();
ctrlc::set_handler(move || {
running.store(false, Ordering::SeqCst);
}).expect("Error setting Ctrl-C handler");
}
let client = Arc::new(Client::new(None, None, None).unwrap());
let client_thread_join_handle = {
let client = client.clone();
client.start(running.clone())
};
client.request_connected_controllers_info(&[0, 1, 2, 3]).unwrap();
while running.load(Ordering::SeqCst) {
client.request_controller_data(ControllerDataRequest::ReportAll).unwrap();
while let Some(event) = client.next_event() {
println!("{:?}", event);
}
thread::sleep(Duration::from_secs(1));
}
client_thread_join_handle.join().unwrap();
}