Started work on output pll settings

This commit is contained in:
Sebastian 2023-12-25 01:24:56 +01:00
parent be45b12b5a
commit 3ca1f112e7
2 changed files with 116 additions and 59 deletions

View File

@ -7,13 +7,15 @@ use std::time::Duration;
use crossbeam_channel::{select, unbounded, Receiver, Sender}; use crossbeam_channel::{select, unbounded, Receiver, Sender};
use eframe::egui; use eframe::egui::{self, RichText};
use egui_plot::{Line, Plot, PlotPoints};
use cheapsdo_protocol::*; use cheapsdo_protocol::*;
use postcard::{from_bytes_cobs, to_stdvec_cobs}; use postcard::{from_bytes_cobs, to_stdvec_cobs};
mod formatters; mod formatters;
mod plots;
fn main() -> Result<(), eframe::Error> { fn main() -> Result<(), eframe::Error> {
let options = eframe::NativeOptions { let options = eframe::NativeOptions {
@ -146,65 +148,55 @@ impl eframe::App for CheapsdoControl {
ui.separator(); ui.separator();
ui.horizontal(|ui| { ui.horizontal(|ui| {
ui.label( ui.vertical(|ui| {
egui::RichText::new(format!( ui.vertical(|ui| ui.label(egui::RichText::new("TCXO Status").size(20.0)));
"Measured: {}", ui.add_space(20.0);
formatters::frequency( plots::show_freuqencies(ui, &self.device_state);
self.device_state.measured_frequency as f64 / 1_000_000_000.0 ui.add_space(20.0);
) plots::show_plots(ui, &self.average_points, &self.pwm_points);
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
ui.add_space(100.0);
ui.label(
egui::RichText::new(format!(
"Average: {}",
formatters::frequency(
self.device_state.average_frequency as f64 / 1_000_000_000.0
)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
}); });
ui.separator();
ui.vertical(|ui| {
ui.label(egui::RichText::new("Output Settings").size(20.0));
ui.add_space(20.0); ui.add_space(20.0);
let average_line = Line::new(PlotPoints::new(self.average_points.clone())); let mut my_string = String::new();
//let measured_line = Line::new(PlotPoints::new(self.measured_points.clone()));
Plot::new("frequency_plot") #[derive(PartialEq)]
.view_aspect(4.0) enum Enum {
.allow_zoom(false) First,
.allow_scroll(false) Second,
.allow_drag(false) }
.allow_boxed_zoom(false) let mut my_enum = Enum::First;
.y_axis_width(12)
.y_axis_formatter(|val, _, _| formatters::frequency(val)) egui::Grid::new("output_pll_settings")
.label_formatter(|name, value| { .spacing([20.0, 5.0])
format!("{}: {}", name, formatters::frequency(value.y)) .show(ui, |ui| {
}) ui.label("CLK1 Multisynth");
.show(ui, |plot_ui| { ui.horizontal(|ui| {
plot_ui.set_auto_bounds([true, true].into()); ui.selectable_value(&mut my_enum, Enum::First, "MS1");
plot_ui.line(average_line); ui.selectable_value(&mut my_enum, Enum::Second, "MS2");
//plot_ui.line(measured_line);
}); });
ui.end_row();
ui.add_space(20.0); ui.label("CLK1 Frequency [Hz]");
ui.add_sized([200.0, 20.0], egui::TextEdit::singleline(&mut my_string));
ui.end_row();
let pwm_line = Line::new(PlotPoints::new(self.pwm_points.clone())); ui.label("CLK1 Enable");
Plot::new("pwm_plot") ui.horizontal(|ui| {
.view_aspect(4.0) ui.add(egui::Button::new(
.allow_zoom(false) RichText::new("On").color(egui::Color32::GREEN),
.allow_scroll(false) ));
.allow_drag(false) ui.add(egui::Button::new(
.allow_boxed_zoom(false) RichText::new("Off").color(egui::Color32::RED),
.y_axis_width(12) ));
.show(ui, |plot_ui| { });
plot_ui.set_auto_bounds([true, true].into()); ui.end_row();
plot_ui.line(pwm_line); });
});
}); });
}); });
} }

65
hostsoftware/src/plots.rs Normal file
View File

@ -0,0 +1,65 @@
use eframe::egui;
use egui_plot::{Line, Plot, PlotPoints};
use crate::{formatters};
use crate::StatusMessage;
pub fn show_freuqencies(ui: &mut egui::Ui, state: &StatusMessage) {
ui.horizontal(|ui| {
ui.label(
egui::RichText::new(format!(
"Measured: {}",
formatters::frequency(state.measured_frequency as f64/ 1_000_000_000.0)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
ui.add_space(100.0);
ui.label(
egui::RichText::new(format!(
"Average: {}",
formatters::frequency(state.average_frequency as f64 / 1_000_000_000.0)
))
.family(egui::FontFamily::Monospace)
.size(20.0),
);
});
}
pub fn show_plots(ui: &mut egui::Ui, average_points: &Vec<[f64; 2]>, pwm_points: &Vec<[f64; 2]>) {
let average_line = Line::new(PlotPoints::new(average_points.clone()));
Plot::new("frequency_plot")
.width(900.0)
.view_aspect(3.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.y_axis_formatter(|val, _, _| formatters::frequency(val))
.label_formatter(|name, value| format!("{}: {}", name, formatters::frequency(value.y)))
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(average_line);
//plot_ui.line(measured_line);
});
ui.add_space(20.0);
let pwm_line = Line::new(PlotPoints::new(pwm_points.clone()));
Plot::new("pwm_plot")
.width(900.0)
.view_aspect(3.0)
.allow_zoom(false)
.allow_scroll(false)
.allow_drag(false)
.allow_boxed_zoom(false)
.y_axis_width(12)
.show(ui, |plot_ui| {
plot_ui.set_auto_bounds([true, true].into());
plot_ui.line(pwm_line);
});
}