From 942b50dc3a2bf7ebcedd3fb1e4d9187377a08c65 Mon Sep 17 00:00:00 2001 From: 3djc Date: Fri, 5 Apr 2019 09:29:58 +0200 Subject: [PATCH] Allow setting frequency and span for spektrum analyser --- .../common/stdlcd/radio_spectrum_analyser.cpp | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/radio/src/gui/common/stdlcd/radio_spectrum_analyser.cpp b/radio/src/gui/common/stdlcd/radio_spectrum_analyser.cpp index 292998ff4..1d8ce43d5 100644 --- a/radio/src/gui/common/stdlcd/radio_spectrum_analyser.cpp +++ b/radio/src/gui/common/stdlcd/radio_spectrum_analyser.cpp @@ -22,6 +22,12 @@ extern uint8_t g_moduleIdx; +enum SpektrumFields { + SPEKTRUM_FREQUENCY, + SPEKTRUM_SPAN, + SPEKTRUM_FIELDS_MAX +}; + void menuRadioSpectrumAnalyser(event_t event) { if (TELEMETRY_STREAMING()) { @@ -33,7 +39,7 @@ void menuRadioSpectrumAnalyser(event_t event) return; } - SIMPLE_SUBMENU("SPECTRUM ANALYSER", 1); + SUBMENU("SPECTRUM ANALYSER", 1, {1}); if (menuEvent) { pausePulses(); @@ -56,6 +62,32 @@ void menuRadioSpectrumAnalyser(event_t event) moduleSettings[g_moduleIdx].mode = MODULE_MODE_SPECTRUM_ANALYSER; } + for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); + + switch (i) { + case SPEKTRUM_FREQUENCY: { + uint16_t frequency = reusableBuffer.spectrumAnalyser.freq / 1000000; + lcdDrawText(1, 10, "F:", 0); + lcdDrawNumber(lcdLastRightPos + 2, 10, frequency, ((menuHorizontalPosition == 0 && s_editMode) ? blink : 0)); + lcdDrawText(lcdLastRightPos + 2, 10, "MHz", 0); + if (menuHorizontalPosition == 0) { + reusableBuffer.spectrumAnalyser.freq = checkIncDec(event, frequency, 2400, 2485, 0) * 1000000; + } + break; + } + + case SPEKTRUM_SPAN: + uint8_t span = reusableBuffer.spectrumAnalyser.span / 1000000; + lcdDrawText(lcdLastRightPos + 5, 10, "S:", 0); + lcdDrawNumber(lcdLastRightPos + 2, 10, reusableBuffer.spectrumAnalyser.span/1000000, (menuHorizontalPosition==1 ? blink : 0)); + lcdDrawText(lcdLastRightPos + 2, 10, "MHz", 0); + if (menuHorizontalPosition == 1) { + reusableBuffer.spectrumAnalyser.span = checkIncDec(event, span, 1, 80, 0) * 1000000; + } + break; + } + } uint8_t peak_y = 1; uint8_t peak_x = 0; for (uint8_t i=0; i(FH, LCD_H - peak_y - FH); lcdDrawNumber(min(100, peak_x), y, ((reusableBuffer.spectrumAnalyser.freq - reusableBuffer.spectrumAnalyser.span / 2) + peak_x * (reusableBuffer.spectrumAnalyser.span / 128)) / 1000000, TINSIZE); lcdDrawText(lcdLastRightPos, y, "M", TINSIZE);