Add limit to scrolling of flag list in LCD gui

This commit is contained in:
Mario Hüttel 2020-11-17 00:31:24 +01:00
parent e60da5b23f
commit d176389711

View File

@ -222,6 +222,7 @@ static void reflow_menu_err_flags(struct lcd_menu *menu, enum menu_entry_func_en
static void *my_parent = NULL;
static uint8_t offset;
static uint64_t timestamp;
static bool end_of_list_reached = true;
bool state;
enum button_state push_button;
int16_t rot;
@ -232,6 +233,7 @@ static void reflow_menu_err_flags(struct lcd_menu *menu, enum menu_entry_func_en
bool try_ack = false;
enum safety_flag flag;
bool button_ready;
const char *err_flag_prefix = "ERR_FLAG_";
push_button = menu_get_button_state(menu);
rot = menu_get_rotary_delta(menu);
@ -240,6 +242,7 @@ static void reflow_menu_err_flags(struct lcd_menu *menu, enum menu_entry_func_en
if (entry_type == MENU_ENTRY_FIRST_ENTER) {
my_parent = parent;
offset = 0;
end_of_list_reached = true;
}
} else {
if (push_button == BUTTON_IDLE && rot == 0) {
@ -259,7 +262,8 @@ static void reflow_menu_err_flags(struct lcd_menu *menu, enum menu_entry_func_en
if (rot >= 4 || rot <= -4) {
menu_ack_rotary_delta(menu);
if (rot > 0) {
offset++;
if (!end_of_list_reached)
offset++;
} else {
if (offset > 0)
offset--;
@ -276,16 +280,20 @@ static void reflow_menu_err_flags(struct lcd_menu *menu, enum menu_entry_func_en
if (state) {
if (line_counter >= 0 && line_counter < 4) {
safety_controller_get_flag_name_by_index(i, name, sizeof(name));
if (!strncmp(name, "ERR_FLAG_", 9)) {
if (!strncmp(name, err_flag_prefix, 9)) {
skip_err_flag_prefix = true;
} else {
skip_err_flag_prefix = false;
}
menu_lcd_outputf(menu, line_counter, "%s", (skip_err_flag_prefix ? &name[9] : name));
menu_lcd_outputf(menu, line_counter, "%s",
(skip_err_flag_prefix ? &name[9] : name));
}
line_counter++;
}
}
end_of_list_reached = (line_counter > 4 ? false : true);
timestamp = systick_get_global_tick();
}