From 29fe6898edb4d54b037a0c1f441bb649737b73de Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sat, 4 Jul 2020 20:09:36 +0300 Subject: [PATCH 1/3] Simply redraw on menu walk --- ui.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ui.c b/ui.c index f9c05f9..a98fbf5 100644 --- a/ui.c +++ b/ui.c @@ -1138,7 +1138,7 @@ menu_move_back(void) area_width = 0; } else { // redraw_frame(); -// request_to_redraw_grid(); + redraw_request |= REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY; area_width = AREA_WIDTH_NORMAL - MENU_BUTTON_WIDTH; } @@ -1742,14 +1742,14 @@ erase_numeric_input(void) static void leave_ui_mode() { - if (ui_mode == UI_MENU) { - request_to_draw_cells_behind_menu(); - erase_menu_buttons(); - } else if (ui_mode == UI_NUMERIC) { - request_to_draw_cells_behind_numeric_input(); - erase_numeric_input(); - } - redraw_request|=REDRAW_AREA|REDRAW_FREQUENCY; +// if (ui_mode == UI_MENU) { +// request_to_draw_cells_behind_menu(); +// erase_menu_buttons(); +// } else if (ui_mode == UI_NUMERIC) { +// request_to_draw_cells_behind_numeric_input(); +// erase_numeric_input(); +// } + redraw_request|=REDRAW_AREA | REDRAW_FREQUENCY | REDRAW_CAL_STATUS | REDRAW_BATTERY; } #ifdef __VNA__ From 800fa5ea663eca0253d0b50be3319e635c9311eb Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sat, 4 Jul 2020 20:35:57 +0300 Subject: [PATCH 2/3] Not redraw menu then need step back and leave ui --- ui.c | 16 ++++++++++++++-- ui_sa.c | 44 ++++++++++++++------------------------------ 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/ui.c b/ui.c index a98fbf5..708f7b0 100644 --- a/ui.c +++ b/ui.c @@ -129,6 +129,7 @@ static void ui_process_keypad(void); static void ui_process_numeric(void); static void choose_active_marker(void); static void menu_move_back(void); +static void menu_move_back_and_leave_ui(void); static void menu_push_submenu(const menuitem_t *submenu); //static const menuitem_t menu_marker_type[]; @@ -767,8 +768,7 @@ menu_marker_op_cb(int item, uint8_t data) break; #endif } - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); redraw_request |= REDRAW_CAL_STATUS; //redraw_all(); } @@ -1145,6 +1145,18 @@ menu_move_back(void) draw_menu(); } +static void +menu_move_back_and_leave_ui(void) +{ + if (menu_current_level == 0) + return; + menu_current_level--; + if (selection >= 0) + selection = 0; + ensure_selection(); + ui_mode_normal(); +} + static void menu_push_submenu(const menuitem_t *submenu) { diff --git a/ui_sa.c b/ui_sa.c index 2ac1979..778a17e 100644 --- a/ui_sa.c +++ b/ui_sa.c @@ -553,14 +553,12 @@ extern const menuitem_t menu_topultra[]; case 0: // if (setting.mode != M_LOW) // set_mode(M_LOW); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); break; case 1: // if (setting.mode != M_HIGH) // set_mode(M_HIGH); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); break; case 2: menu_push_submenu(menu_lowoutputmode); @@ -588,8 +586,7 @@ void menu_load_preset_cb(int item, uint8_t data) return; } } - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } void menu_store_preset_cb(int item, uint8_t data) @@ -601,8 +598,7 @@ void menu_store_preset_cb(int item, uint8_t data) data = 0; } caldata_save(data); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } @@ -636,8 +632,7 @@ static void menu_calibrate_cb(int item, uint8_t data) switch (item) { case 1: sweep_mode = SWEEP_CALIBRATE; - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); break; case 2: reset_calibration(); @@ -672,8 +667,7 @@ static void menu_config_cb(int item, uint8_t data) break; case 2: sweep_mode = 0; // Suspend sweep to save time - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); setting.test = 0; setting.test_argument = 0; sweep_mode = SWEEP_SELFTEST; @@ -868,8 +862,7 @@ static void menu_atten_cb(int item, uint8_t data) (void)item; (void)data; set_auto_attenuation(); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } static void menu_atten_high_cb(int item, uint8_t data) @@ -877,8 +870,7 @@ static void menu_atten_high_cb(int item, uint8_t data) (void)item; setting.auto_attenuation = false; set_attenuation(data); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } static void menu_reflevel_cb(int item, uint8_t data) @@ -886,8 +878,7 @@ static void menu_reflevel_cb(int item, uint8_t data) (void)item; (void)data; set_auto_reflevel(true); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } static void menu_storage_cb(int item, uint8_t data) @@ -910,8 +901,7 @@ static void menu_storage_cb(int item, uint8_t data) toggle_waterfall(); break; } - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); // draw_cal_status(); } @@ -919,8 +909,7 @@ static void menu_average_cb(int item, uint8_t data) { (void)data; set_average(item); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); redraw_request |= REDRAW_CAL_STATUS; } @@ -979,17 +968,14 @@ static void menu_rbw_cb(int item, uint8_t data) { (void)item; set_RBW(rbwsel_x10[data]); - menu_move_back(); - ui_mode_normal(); -// draw_cal_status(); + menu_move_back_and_leave_ui(); } static void menu_unit_cb (int item, uint8_t data) { (void)item; set_unit(data); - menu_move_back(); - ui_mode_normal(); + menu_move_back_and_leave_ui(); } enum { @@ -1001,9 +987,7 @@ static void menu_scale_per_cb(int item, uint8_t data) { (void)item; set_scale(menu_scale_per_value[data]); - menu_move_back(); - ui_mode_normal(); -// draw_cal_status(); + menu_move_back_and_leave_ui(); } static void menu_trigger_cb(int item, uint8_t data) From 934ab41d8b6b53ef1a87c49bf7aebd0232a708ae Mon Sep 17 00:00:00 2001 From: DiSlord Date: Sat, 4 Jul 2020 21:51:58 +0300 Subject: [PATCH 3/3] More defines for use set FG BG color, direct call function more compact --- ili9341.c | 6 +++++- main.c | 4 ++-- nanovna.h | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ili9341.c b/ili9341.c index 06563d6..9b3686b 100644 --- a/ili9341.c +++ b/ili9341.c @@ -523,17 +523,21 @@ void ili9341_clear_screen(void) { ili9341_fill(0, 0, ILI9341_WIDTH, ILI9341_HEIGHT, background_color); } -#if 0 + +#ifndef ili9341_set_foreground void ili9341_set_foreground(uint16_t fg) { foreground_color = fg; } +#endif +#ifndef ili9341_set_background void ili9341_set_background(uint16_t bg) { background_color = bg; } #endif + void ili9341_set_rotation(uint8_t r) { // static const uint8_t rotation_const[]={DISPLAY_ROTATION_0, DISPLAY_ROTATION_90, diff --git a/main.c b/main.c index 7a42927..08b2e2b 100644 --- a/main.c +++ b/main.c @@ -2797,8 +2797,8 @@ void hard_fault_handler_c(uint32_t *sp) int y = 0; int x = OFFSETX + 1; static char buf[96]; - ili9341_set_background(0x0000); - ili9341_set_foreground(0xFFFF); + ili9341_set_background(DEFAULT_BG_COLOR); + ili9341_set_foreground(DEFAULT_FG_COLOR); plot_printf(buf, sizeof(buf), "SP 0x%08x", (uint32_t)sp);ili9341_drawstring(buf, x, y+=FONT_STR_HEIGHT); plot_printf(buf, sizeof(buf), "R0 0x%08x", r0);ili9341_drawstring(buf, x, y+=FONT_STR_HEIGHT); diff --git a/nanovna.h b/nanovna.h index baaa90b..ae88c5c 100644 --- a/nanovna.h +++ b/nanovna.h @@ -540,13 +540,15 @@ void ili9341_init(void); void ili9341_test(int mode); void ili9341_bulk(int x, int y, int w, int h); void ili9341_fill(int x, int y, int w, int h, uint16_t color); -#if 0 + +#if 1 void ili9341_set_foreground(uint16_t fg); void ili9341_set_background(uint16_t fg); #else #define ili9341_set_foreground(fg) { foreground_color = fg; } #define ili9341_set_background(bg) { background_color = bg;} #endif + void ili9341_clear_screen(void); void blit8BitWidthBitmap(uint16_t x, uint16_t y, uint16_t width, uint16_t height, const uint8_t *bitmap); void ili9341_drawchar(uint8_t ch, int x, int y);