From 47a2c2f51f709e7a04db2656c0ee2b5d1b9b272a Mon Sep 17 00:00:00 2001
From: Federico Lolli <federico.lolli@skywarder.eu>
Date: Mon, 22 Jan 2024 10:24:09 +0100
Subject: [PATCH] added auto-discovery of first STM32 serial device connected

---
 src/main.rs | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/src/main.rs b/src/main.rs
index 1f34d6d..ff7c0a1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -18,9 +18,23 @@ impl<T: AsRef<dyn SerialPort> + std::io::Write> MavLinkPort for T {
     }
 }
 
+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() {
     // Open the first serialport available.
-    let port_name = "/dev/tty.usbmodem143203";
+    let port_name = get_first_stm32_serial_port().expect("No STM32 serial port found!");
     let mut port = serialport::new(port_name, 115200)
         .open()
         .expect("Failed to open serial port");
-- 
GitLab