Added basic validation for frequencies

This commit is contained in:
Sebastian 2024-05-24 19:07:28 +02:00
parent c55704dbdd
commit 47330b11fd
2 changed files with 24 additions and 1 deletions

View File

@ -1,9 +1,16 @@
use eframe::egui::Color32;
use eframe::egui::{self};
use crate::serial;
use crate::widgets;
use crate::CheapsdoControl;
const PLL_MIN_FREQ: u32 = 600_000_000;
const PLL_MAX_FREQ: u32 = 900_000_000;
const OUT_MIN_FREQ: u32 = 500_000;
const OUT_MAX_FREQ: u32 = 225_000_000;
impl CheapsdoControl {
pub fn output_control(&mut self, ui: &mut egui::Ui, ctx: &egui::Context) {
ui.vertical(|ui| {
@ -16,6 +23,8 @@ impl CheapsdoControl {
widgets::frequency_input(
self.ms1_frequency_id,
&mut self.pll_settings.ms1_frequency,
PLL_MIN_FREQ,
PLL_MAX_FREQ,
&ctx,
ui,
);
@ -25,6 +34,8 @@ impl CheapsdoControl {
widgets::frequency_input(
self.ms2_frequency_id,
&mut self.pll_settings.ms2_frequency,
PLL_MIN_FREQ,
PLL_MAX_FREQ,
&ctx,
ui,
);
@ -45,6 +56,8 @@ impl CheapsdoControl {
widgets::frequency_input(
self.output_frequency_id[i],
&mut self.pll_settings.outputs[i].frequency,
OUT_MIN_FREQ,
OUT_MAX_FREQ,
&ctx,
ui,
);

View File

@ -1,11 +1,13 @@
use cheapsdo_protocol::Multisynth;
use eframe::egui::{self, RichText};
use eframe::egui::{self, Color32, RichText};
use crate::formatters;
pub fn frequency_input(
id: egui::Id,
freq: &mut u32,
min_freq: u32,
max_freq: u32,
ctx: &egui::Context,
ui: &mut egui::Ui,
) -> egui::Response {
@ -16,10 +18,18 @@ pub fn frequency_input(
} else {
formatters::format_frequency(*freq as f64)
};
let color = if !has_focus && (*freq <= min_freq || *freq >= max_freq) {
Some(Color32::DARK_RED)
} else {
None
};
let resp = ui.add_sized(
[100.0, 20.0],
egui::TextEdit::singleline(&mut tmp)
.id(id)
.text_color_opt(color)
.horizontal_align(egui::Align::Max),
);
if has_focus {