From 05fe57bf2408f40ca51695c8fb67d1884273f4b3 Mon Sep 17 00:00:00 2001 From: mattbk Date: Sun, 6 Sep 2026 22:29:24 -0500 Subject: [PATCH] Rip out all GUI except skeleton. --- src/main.rs | 221 +++++++++++++++++++++++++++------------------------- 1 file changed, 114 insertions(+), 107 deletions(-) diff --git a/src/main.rs b/src/main.rs index 6488039..2f0d55e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,24 +1,24 @@ use eframe::egui; -use serialport::available_ports; +//use serialport::available_ports; use std::sync::{Arc, Mutex}; use std::thread; use std::time::Duration; -use egui_plot::{Plot, PlotPoints, Points, Text, Line}; +// use egui_plot::{Plot, PlotPoints, Points, Text, Line}; #[derive(Default, Clone)] -struct Satellite { - id: String, - latitude: f64, - longitude: f64, - strength: u8, -} +// struct Satellite { +// id: String, +// latitude: f64, +// longitude: f64, +// strength: u8, +// } -#[derive(Default)] +//#[derive(Default)] struct AppState { - ports: Vec, - selected_port: Option, - satellites: Vec, + //ports: Vec, + //selected_port: Option, + //satellites: Vec, is_reading: bool, // 🔵 NEW: live NMEA data buffer @@ -31,13 +31,13 @@ pub struct MyApp { impl Default for MyApp { fn default() -> Self { - let ports = available_ports() - .map(|ps| ps.into_iter().map(|p| p.port_name).collect()) - .unwrap_or_default(); + // let ports = available_ports() + // .map(|ps| ps.into_iter().map(|p| p.port_name).collect()) + // .unwrap_or_default(); Self { state: Arc::new(Mutex::new(AppState { - ports, + //ports, ..Default::default() })), } @@ -48,36 +48,36 @@ impl Default for MyApp { // Satellite Map Drawing Method // ===================================================================== impl MyApp { - fn draw_satellite_map(&self, ui: &mut egui::Ui, sats: &[Satellite]) { - Plot::new("satellite_map") - .width(300.0) - .height(300.0) - .view_aspect(1.0) - .show(ui, |plot_ui| { - // Draw outline circle - let circle: PlotPoints = (0..360) - .map(|deg| { - let rad = (deg as f64).to_radians(); - [rad.cos(), rad.sin()] - }) - .collect::>() - .into(); + // fn draw_satellite_map(&self, ui: &mut egui::Ui, sats: &[Satellite]) { + // Plot::new("satellite_map") + // .width(300.0) + // .height(300.0) + // .view_aspect(1.0) + // .show(ui, |plot_ui| { + // // Draw outline circle + // let circle: PlotPoints = (0..360) + // .map(|deg| { + // let rad = (deg as f64).to_radians(); + // [rad.cos(), rad.sin()] + // }) + // .collect::>() + // .into(); - plot_ui.line(Line::new(circle)); + // plot_ui.line(Line::new(circle)); - // Draw satellites - for sat in sats { - let az = sat.longitude.to_radians(); - let el = sat.latitude.to_radians(); + // // Draw satellites + // for sat in sats { + // let az = sat.longitude.to_radians(); + // let el = sat.latitude.to_radians(); - let x = el.cos() * az.cos(); - let y = el.cos() * az.sin(); + // let x = el.cos() * az.cos(); + // let y = el.cos() * az.sin(); - plot_ui.points(Points::new(vec![[x, y]]).radius(3.0)); - plot_ui.text(Text::new([x, y].into(), sat.id.clone())); - } - }); - } + // plot_ui.points(Points::new(vec![[x, y]]).radius(3.0)); + // plot_ui.text(Text::new([x, y].into(), sat.id.clone())); + // } + // }); + // } } // ===================================================================== @@ -88,26 +88,28 @@ impl eframe::App for MyApp { let mut state = self.state.lock().unwrap(); // Main panel - egui::CentralPanel::default().show(ctx, |ui| { - ui.heading("Select COM Port"); + // egui::CentralPanel::default().show(ctx, |ui| { + // ui.heading("Select COM Port"); - let ports = state.ports.clone(); + // let ports = state.ports.clone(); - egui::ComboBox::from_label("COM Port") - .selected_text(state.selected_port.as_deref().unwrap_or("Select a Port")) - .show_ui(ui, |cb| { - for port in ports { - cb.selectable_value( - &mut state.selected_port, - Some(port.clone()), - port, - ); - } - }); + // egui::ComboBox::from_label("COM Port") + // .selected_text(state.selected_port.as_deref().unwrap_or("Select a Port")) + // .show_ui(ui, |cb| { + // for port in ports { + // cb.selectable_value( + // &mut state.selected_port, + // Some(port.clone()), + // port, + // ); + // } + // }); - if ui.button("Start Reading").clicked() && !state.is_reading { - if let Some(port_name) = state.selected_port.clone() { - let state_clone = Arc::clone(&self.state); + // if ui.button("Start Reading").clicked() && !state.is_reading { + // if let Some(port_name) = state.selected_port.clone() { + let state_clone = Arc::clone(&self.state); + + let port_name = "/dev/tty.usbmodem1301"; // Thread for GPS streaming thread::spawn(move || { @@ -122,7 +124,7 @@ impl eframe::App for MyApp { match serial.read(&mut buf) { Ok(n) => { let data = String::from_utf8_lossy(&buf[..n]); - let mut satellites = Vec::new(); + // let mut satellites = Vec::new(); for line in data.lines() { @@ -139,24 +141,24 @@ impl eframe::App for MyApp { // Parse GSV if line.starts_with("$GPGSV") { - let fields: Vec<&str> = line.split(',').collect(); - let mut i = 4; + //let fields: Vec<&str> = line.split(',').collect(); + //let mut i = 4; - while i + 3 < fields.len() { - satellites.push(Satellite { - id: fields[i].to_string(), - latitude: fields[i + 1].parse().unwrap_or(0.0), - longitude: fields[i + 2].parse().unwrap_or(0.0), - strength: fields[i + 3].parse().unwrap_or(0), - }); - i += 4; - } + // while i + 3 < fields.len() { + // satellites.push(Satellite { + // id: fields[i].to_string(), + // latitude: fields[i + 1].parse().unwrap_or(0.0), + // longitude: fields[i + 2].parse().unwrap_or(0.0), + // strength: fields[i + 3].parse().unwrap_or(0), + // }); + // i += 4; + // } } } // Update satellites - let mut st = state_clone.lock().unwrap(); - st.satellites = satellites; + //let mut st = state_clone.lock().unwrap(); + // st.satellites = satellites; } Err(_) => break, } @@ -167,51 +169,56 @@ impl eframe::App for MyApp { }); state.is_reading = true; - } - } + // } + // } - ui.separator(); - ui.heading("Satellites"); + // ui.separator(); + // ui.heading("Satellites"); - egui::ScrollArea::vertical().show(ui, |ui| { - for sat in &state.satellites { - ui.horizontal(|ui| { - ui.label(format!("ID: {}", sat.id)); - ui.label(format!("Elv: {:.2}", sat.latitude)); - ui.label(format!("Azm: {:.2}", sat.longitude)); - ui.label(format!("Strength: {}", sat.strength)); - }); - } - }); - }); + // egui::ScrollArea::vertical().show(ui, |ui| { + // for sat in &state.satellites { + // ui.horizontal(|ui| { + // ui.label(format!("ID: {}", sat.id)); + // ui.label(format!("Elv: {:.2}", sat.latitude)); + // ui.label(format!("Azm: {:.2}", sat.longitude)); + // ui.label(format!("Strength: {}", sat.strength)); + // }); + // } + // }); + // }); // ===================================================================== // NEW: Live GPS Stream Window // ===================================================================== - egui::Window::new("GPS Stream") - .default_width(400.0) - .default_height(300.0) - .resizable(true) - .show(ctx, |ui| { - ui.label("Live NMEA Data:"); + // egui::Window::new("GPS Stream") + // .default_width(400.0) + // .default_height(300.0) + // .resizable(true) + // .show(ctx, |ui| { + // ui.label("Live NMEA Data:"); - egui::ScrollArea::vertical() - .stick_to_bottom(true) - .show(ui, |ui| { - for line in &state.nmea_log { - ui.monospace(line); - } - }); - }); + // egui::ScrollArea::vertical() + // .stick_to_bottom(true) + // .show(ui, |ui| { + // for line in &state.nmea_log { + // ui.monospace(line); + // } + // }); + // }); + + // Write to console + for line in &state.nmea_log { + println!("{line}"); + } // ===================================================================== // Mini floating sky map // ===================================================================== - egui::Area::new("mini_sky_map".into()) - .anchor(egui::Align2::RIGHT_TOP, [-10.0, 10.0]) - .show(ctx, |ui| { - self.draw_satellite_map(ui, &state.satellites); - }); + // egui::Area::new("mini_sky_map".into()) + // .anchor(egui::Align2::RIGHT_TOP, [-10.0, 10.0]) + // .show(ctx, |ui| { + // self.draw_satellite_map(ui, &state.satellites); + // }); } }