diff --git a/firmware/application/apps/ui_looking_glass_app.cpp b/firmware/application/apps/ui_looking_glass_app.cpp index f233eacb..7160337a 100644 --- a/firmware/application/apps/ui_looking_glass_app.cpp +++ b/firmware/application/apps/ui_looking_glass_app.cpp @@ -561,6 +561,17 @@ GlassView::GlassView( update_display_beep(); } +void GlassView::on_freqchg(int64_t freq) { + int64_t half_range = abs(field_frequency_max.value() - field_frequency_max.value()) / 2; + if (half_range < 1) { + half_range = 1; + } + range_presets.set_selected_index(0); // Manual + update_min(freq - half_range); + update_max(freq + half_range); + on_range_changed(); +} + uint8_t GlassView::get_spec_iq_phase_calibration_value() { // define accessor functions inside AnalogAudioView to read & write real iq_phase_calibration_value return iq_phase_calibration_value; } diff --git a/firmware/application/apps/ui_looking_glass_app.hpp b/firmware/application/apps/ui_looking_glass_app.hpp index 58e2d6fe..2acfde71 100644 --- a/firmware/application/apps/ui_looking_glass_app.hpp +++ b/firmware/application/apps/ui_looking_glass_app.hpp @@ -109,6 +109,7 @@ class GlassView : public View { std::string label{}; }; + void on_freqchg(int64_t freq); int32_t map(int32_t value, int32_t fromLow, int32_t fromHigh, int32_t toLow, int32_t toHigh); std::vector presets_db{}; void manage_beep_audio(); @@ -307,6 +308,7 @@ class GlassView : public View { const auto message = *reinterpret_cast(p); this->fifo = message.fifo; }}; + MessageHandlerRegistration message_handler_frame_sync{ Message::ID::DisplayFrameSync, [this](const Message* const) { @@ -317,6 +319,13 @@ class GlassView : public View { } } }}; + + MessageHandlerRegistration message_handler_freqchg{ + Message::ID::FreqChangeCommand, + [this](Message* const p) { + const auto message = static_cast(p); + this->on_freqchg(message->freq); + }}; }; } // namespace ui #endif