From f0e8da98ee107db14a3fb1e1e560c4b0cbcbe8e2 Mon Sep 17 00:00:00 2001 From: DerSkythe Date: Wed, 19 Oct 2022 12:20:58 +0400 Subject: [PATCH] Fix interface and add extra history field --- .../subghz/views/subghz_frequency_analyzer.c | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/applications/main/subghz/views/subghz_frequency_analyzer.c b/applications/main/subghz/views/subghz_frequency_analyzer.c index bf0ed6f5b..6b03aacfa 100644 --- a/applications/main/subghz/views/subghz_frequency_analyzer.c +++ b/applications/main/subghz/views/subghz_frequency_analyzer.c @@ -15,7 +15,7 @@ #define RSSI_MIN -97 #define RSSI_MAX -60 -#define RSSI_SCALE 2 +#define RSSI_SCALE 3 #define TRIGGER_STEP 1 // static const NotificationSequence sequence_hw_blink = { @@ -87,7 +87,7 @@ typedef struct { uint32_t frequency_last; uint32_t frequency_to_save; float rssi; - uint32_t history_frequency[3]; + uint32_t history_frequency[4]; bool signal; float rssi_last; float trigger; @@ -128,7 +128,9 @@ void subghz_frequency_analyzer_draw_rssi( // Last RSSI if(rssi_last) { - if(rssi_last > RSSI_MAX) rssi_last = RSSI_MAX; + if(rssi_last > RSSI_MAX) { + rssi_last = RSSI_MAX; + } int max_x = (int)((rssi_last - RSSI_MIN) / RSSI_SCALE) * 2; //if(!(max_x % 8)) max_x -= 2; int max_h = (int)((rssi_last - RSSI_MIN) / RSSI_SCALE) + 4; @@ -149,11 +151,22 @@ static void subghz_frequency_analyzer_history_frequency_draw( Canvas* canvas, SubGhzFrequencyAnalyzerModel* model) { char buffer[64]; - uint8_t x = 66; - uint8_t y = 43; + const uint8_t x1 = 0; + const uint8_t x2 = 66; + const uint8_t y = 41; canvas_set_font(canvas, FontKeyboard); - for(uint8_t i = 0; i < 3; i++) { + uint8_t line = 0; + for(uint8_t i = 0; i < 4; i++) { + uint8_t current_x; + uint8_t current_y = y + line * 9; + + if(i % 2 == 0) { + current_x = x1; + } else { + current_x = x2; + line++; + } if(model->history_frequency[i]) { snprintf( buffer, @@ -161,11 +174,11 @@ static void subghz_frequency_analyzer_history_frequency_draw( "%03ld.%03ld", model->history_frequency[i] / 1000000 % 1000, model->history_frequency[i] / 1000 % 1000); - canvas_draw_str(canvas, x, y + i * 10, buffer); + canvas_draw_str(canvas, current_x, current_y, buffer); } else { - canvas_draw_str(canvas, x, y + i * 10, "---.---"); + canvas_draw_str(canvas, current_x, current_y, "---.---"); } - canvas_draw_str(canvas, x + 44, y + i * 10, "MHz"); + canvas_draw_str(canvas, current_x + 44, current_y, "MHz"); } canvas_set_font(canvas, FontSecondary); } @@ -195,13 +208,13 @@ void subghz_frequency_analyzer_draw(Canvas* canvas, SubGhzFrequencyAnalyzerModel model->frequency / 1000000 % 1000, model->frequency / 1000 % 1000); if(model->signal) { - canvas_draw_box(canvas, 4, 12, 121, 22); + canvas_draw_box(canvas, 4, 12, 121, 20); canvas_set_color(canvas, ColorWhite); } else { } - canvas_draw_str(canvas, 8, 30, buffer); - canvas_draw_icon(canvas, 96, 19, &I_MHz_25x11); + canvas_draw_str(canvas, 8, 29, buffer); + canvas_draw_icon(canvas, 96, 18, &I_MHz_25x11); // Last detected frequency // canvas_set_font(canvas, FontSecondary); @@ -217,14 +230,16 @@ void subghz_frequency_analyzer_draw(Canvas* canvas, SubGhzFrequencyAnalyzerModel // } // canvas_draw_str(canvas, 9, 42, buffer); + canvas_set_color(canvas, ColorBlack); + canvas_set_font(canvas, FontKeyboard); switch(model->feedback_level) { - case SubGHzFrequencyAnalyzerFeedbackLevelMute: + case SubGHzFrequencyAnalyzerFeedbackLevelAll: canvas_draw_icon(canvas, 128 - 8 - 1, 1, &I_Volup_8x6); break; case SubGHzFrequencyAnalyzerFeedbackLevelVibro: canvas_draw_icon(canvas, 128 - 8 - 1, 1, &I_Voldwn_6x6); break; - case SubGHzFrequencyAnalyzerFeedbackLevelAll: + case SubGHzFrequencyAnalyzerFeedbackLevelMute: canvas_draw_icon(canvas, 128 - 8 - 1, 1, &I_Voldwn_6x6); canvas_set_color(canvas, ColorWhite); canvas_draw_box(canvas, 128 - 2 - 1 - 2, 1, 2, 6); @@ -414,6 +429,7 @@ void subghz_frequency_analyzer_pair_callback( instance->view, SubGhzFrequencyAnalyzerModel * model, { + model->history_frequency[3] = model->history_frequency[2]; model->history_frequency[2] = model->history_frequency[1]; model->history_frequency[1] = model->history_frequency[0]; model->history_frequency[0] = model->frequency; @@ -504,6 +520,7 @@ void subghz_frequency_analyzer_enter(void* context) { model->rssi = 0; model->rssi_last = 0; model->frequency = 0; + model->history_frequency[3] = 0; model->history_frequency[2] = 0; model->history_frequency[1] = 0; model->history_frequency[0] = 0;