From 0e97d578830414bf2caa2f90222f06829cc4874f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20H=C3=BCttel?= Date: Thu, 25 Jun 2020 23:52:58 +0200 Subject: [PATCH] Improve menu function --- stm-firmware/main.c | 2 ++ stm-firmware/reflow-menu.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/stm-firmware/main.c b/stm-firmware/main.c index 36b3b4c..3af87db 100644 --- a/stm-firmware/main.c +++ b/stm-firmware/main.c @@ -259,6 +259,8 @@ int main(void) if (menu_wait_request) __WFI(); + else + __NOP(); } diff --git a/stm-firmware/reflow-menu.c b/stm-firmware/reflow-menu.c index 05984af..b36d981 100644 --- a/stm-firmware/reflow-menu.c +++ b/stm-firmware/reflow-menu.c @@ -206,6 +206,7 @@ static void reflow_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_e (void)parent; static struct menu_list list; static bool button_valid; + static bool menu_changed = true; static const char * const root_entry_names[] = { "About", "Monitoring", @@ -219,6 +220,7 @@ static void reflow_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_e int16_t rot_delta; if (entry_type != MENU_ENTRY_CONTINUE) { + menu_changed = true; menu_display_clear(menu); update_display_buffer(0, "Main Menu"); menu_ack_rotary_delta(menu); @@ -245,12 +247,15 @@ static void reflow_menu_root_entry(struct lcd_menu *menu, enum menu_entry_func_e if (rot_delta >= 4) { menu_list_scroll_down(&list); menu_ack_rotary_delta(menu); + menu_changed = true; } else if (rot_delta <= -4) { menu_list_scroll_up(&list); menu_ack_rotary_delta(menu); + menu_changed = true; } - menu_list_display(&list, 1, 3); + if (menu_changed) + menu_list_display(&list, 1, 3); } int reflow_menu_handle()