From 9daaaa29592fbf0e2772e1fd3b37e4141ad724f5 Mon Sep 17 00:00:00 2001 From: Federico Lolli <federico.lolli@skywarder.eu> Date: Mon, 22 Jan 2024 10:24:11 +0100 Subject: [PATCH] refactored a bit --- src/main.rs | 61 ++++++++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 31 deletions(-) diff --git a/src/main.rs b/src/main.rs index 9f2359c..cabf90e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,31 +9,6 @@ use serialport::SerialPort; const EOT: u8 = 0x04; -trait MavLinkPort { - fn write_packet(&mut self, packet: MavlinkPayloadFlightTM); -} - -impl<T: AsRef<dyn SerialPort> + std::io::Write> MavLinkPort for T { - fn write_packet(&mut self, packet: MavlinkPayloadFlightTM) { - self.write_all(&packet.into_le_bytes()) - .expect("Failed to write to serial port"); - } -} - -fn get_first_stm32_serial_port() -> Option<String> { - let ports = serialport::available_ports().expect("No serial ports found!"); - for port in ports { - if let serialport::SerialPortType::UsbPort(info) = port.port_type { - if let Some(p) = info.product { - if p.contains("STM32") { - return Some(port.port_name); - } - } - } - } - None -} - fn main() { let mut packets = Vec::new(); @@ -88,18 +63,42 @@ fn main() { if i == 580 { break; } - // for line in input.lines() { - // if !line.contains("[WAITING]") { - // println!("{}", line); - // } - // } } Err(ref e) if e.kind() == io::ErrorKind::TimedOut => (), Err(e) => eprintln!("{:?}", e), } } - // print stats (mean, median, std, etc) + print_stats(times); +} + +trait MavLinkPort { + fn write_packet(&mut self, packet: MavlinkPayloadFlightTM); +} + +impl<T: AsRef<dyn SerialPort> + std::io::Write> MavLinkPort for T { + fn write_packet(&mut self, packet: MavlinkPayloadFlightTM) { + self.write_all(&packet.into_le_bytes()) + .expect("Failed to write to serial port"); + } +} + +fn get_first_stm32_serial_port() -> Option<String> { + let ports = serialport::available_ports().expect("No serial ports found!"); + for port in ports { + if let serialport::SerialPortType::UsbPort(info) = port.port_type { + if let Some(p) = info.product { + if p.contains("STM32") { + return Some(port.port_name); + } + } + } + } + None +} + +/// print stats (mean, median, std, etc) +fn print_stats(times: Vec<u128>) { let mean = times.iter().sum::<u128>() as f64 / times.len() as f64; let median = times[times.len() / 2] as f64; let std = times -- GitLab