From 03fe508aae68efd308e361aab335e085d2c630d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=AA=E6=9D=A5=E6=96=B9=E8=88=9F?= Date: Wed, 8 Jul 2026 10:08:24 +0800 Subject: [PATCH] fix looking glass frequency cast error (#3253) * fix looking glass frequency cast error * add useless protecter back --- firmware/application/apps/ui_looking_glass_app.cpp | 9 ++++++--- firmware/application/apps/ui_looking_glass_app.hpp | 5 +++-- mbt | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/firmware/application/apps/ui_looking_glass_app.cpp b/firmware/application/apps/ui_looking_glass_app.cpp index ab9ed3d71..3502b0489 100644 --- a/firmware/application/apps/ui_looking_glass_app.cpp +++ b/firmware/application/apps/ui_looking_glass_app.cpp @@ -328,8 +328,8 @@ void GlassView::update_min(int32_t v) { min_size = search_span; if (min_size < 1) min_size = 1; - if (v > 7200 - min_size) { - v = 7200 - min_size; + if (v > LOOKING_GLASS_MAX_FREQ_MHZ - min_size) { + v = LOOKING_GLASS_MAX_FREQ_MHZ - min_size; } if (v > (field_frequency_max.value() - min_size)) field_frequency_max.set_value(v + min_size, false); @@ -348,6 +348,9 @@ void GlassView::update_max(int32_t v) { if (v < min_size) { v = min_size; } + if (v > LOOKING_GLASS_MAX_FREQ_MHZ) { + v = LOOKING_GLASS_MAX_FREQ_MHZ; + } if (v < (field_frequency_min.value() + min_size)) field_frequency_min.set_value(v - min_size, false); if (locked_range) @@ -630,7 +633,7 @@ void GlassView::load_presets() { parse_int(cols[1], entry.max); entry.label = trimr(cols[2]); - if (entry.min == 0 || entry.max == 0 || entry.min >= entry.max) + if (entry.max == 0 || entry.min >= entry.max) continue; // Invalid line. presets_db.emplace_back(std::move(entry)); diff --git a/firmware/application/apps/ui_looking_glass_app.hpp b/firmware/application/apps/ui_looking_glass_app.hpp index 1a55cb4cb..7d738ffd9 100644 --- a/firmware/application/apps/ui_looking_glass_app.hpp +++ b/firmware/application/apps/ui_looking_glass_app.hpp @@ -42,6 +42,7 @@ namespace ui { #define LOOKING_GLASS_SLICE_WIDTH_MAX 20000000 #define LOOKING_GLASS_MAX_SAMPLERATE 20000000 #define MHZ_DIV 1000000 +#define LOOKING_GLASS_MAX_FREQ_MHZ 7250 // HackRF upper tuning limit (band_high top), in MHz // blanked DC (16 centered bins ignored ) and top left and right (2 bins ignored on each side ) #define LOOKING_GLASS_FASTSCAN 0 @@ -179,14 +180,14 @@ class GlassView : public View { NumberField field_frequency_min{ {UI_POS_X(4), UI_POS_Y(0)}, 4, - {0, 7199}, + {0, LOOKING_GLASS_MAX_FREQ_MHZ - 1}, 1, // number of steps by encoder delta ' '}; NumberField field_frequency_max{ {UI_POS_X(13), UI_POS_Y(0)}, 4, - {1, 7200}, + {1, LOOKING_GLASS_MAX_FREQ_MHZ}, 1, // number of steps by encoder delta ' '}; diff --git a/mbt b/mbt index 3326602e2..ab2dc0a82 100755 --- a/mbt +++ b/mbt @@ -200,7 +200,7 @@ Build options: -G, --generator CMake generator (default: Ninja) -j, --jobs Build parallelism (default: host CPU count) --target Build a specific target - --clean Remove build directory, run libopencm3 clean, and exit + --clean Remove build directory, run libopencm3 clean, and exit --cmake-arg Extra CMake configure arg (repeatable) --build-arg Extra cmake --build arg (repeatable) -y, --non-interactive Fail instead of prompting when required input is missing