use std::{env, io, time::Duration}; use crsf::{Packet, PacketParser}; fn main() { let path = env::args().nth(1).expect("no serial port supplied"); let mut port = serialport::new(path, 115_200) .timeout(Duration::from_millis(20)) .open() .expect("failed to open serial port"); let mut buf = [0; 1024]; let mut parser = PacketParser::<1024>::new(); loop { match port.read(buf.as_mut_slice()) { Ok(n) => { if n > 0 { parser.push_bytes(&buf[..n]); while let Some(Ok((_, packet))) = parser.next_packet() { match packet { Packet::LinkStatistics(link_statistics) => { println!("{:?}", link_statistics); } Packet::RcChannels(channels) => { println!("{:?}", channels); } _ => {} } } } } Err(ref e) if e.kind() == io::ErrorKind::TimedOut => (), Err(e) => { eprintln!("{}", e); break; } } } }