From 59fd331bfc623d2a403fd4fe90fe6367b85ed13b Mon Sep 17 00:00:00 2001 From: Yu-Ping Wu Date: Thu, 11 Jun 2020 17:07:08 +0800 Subject: vboot/ui: pass timer_disabled to vb2ex_display_ui() Add an argument 'timer_disabled' to vb2ex_display_ui(), which will be used when drawing dev mode screen to show the appropriate screen descriptions. BRANCH=none BUG=b:146399181, b:157871585 TEST=make runtests TEST=emerge-puff depthcharge Cq-Depend: chromium:2236550 Change-Id: I48b46838f482bce612106b840476f5f941cc1166 Signed-off-by: Yu-Ping Wu Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2241492 Reviewed-by: Joel Kitching --- firmware/2lib/2ui.c | 8 +++++++- firmware/2lib/include/2api.h | 3 +++ tests/vb2_ui_action_tests.c | 1 + tests/vb2_ui_tests.c | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 81243ac2..91478623 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -285,6 +285,7 @@ vb2_error_t ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, { struct vb2_ui_context ui; struct vb2_screen_state prev_state; + int prev_disable_timer; enum vb2_ui_error prev_error_code; const struct vb2_menu *menu; const struct vb2_screen_info *root_info; @@ -301,12 +302,15 @@ vb2_error_t ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, if (rv != VB2_REQUEST_UI_CONTINUE) return rv; memset(&prev_state, 0, sizeof(prev_state)); + prev_disable_timer = 0; prev_error_code = VB2_UI_ERROR_NONE; while (1) { /* Draw if there are state changes. */ if (memcmp(&prev_state, ui.state, sizeof(*ui.state)) || - /* we want to redraw/beep on a transition */ + /* We want to redraw when timer is disabled. */ + prev_disable_timer != ui.disable_timer || + /* We want to redraw/beep on a transition. */ prev_error_code != ui.error_code) { menu = get_menu(&ui); @@ -318,6 +322,7 @@ vb2_error_t ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, vb2ex_display_ui(ui.state->screen->id, ui.locale_id, ui.state->selected_item, ui.state->disabled_item_mask, + ui.disable_timer, ui.error_code); /* * Only beep if we're transitioning from no @@ -329,6 +334,7 @@ vb2_error_t ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, /* Update prev variables. */ memcpy(&prev_state, ui.state, sizeof(*ui.state)); + prev_disable_timer = ui.disable_timer; prev_error_code = ui.error_code; } diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 69fd1458..0a023c6f 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1256,6 +1256,8 @@ enum vb2_ui_error { * doesn't have a menu, this value will be ignored. * @param disabled_item_mask Mask for disabled menu items. Bit (1 << idx) * indicates whether item 'idx' is disabled. + * @param timer_disabled Whether timer is disabled or not. Some screen + * descriptions will depend on this value. * @param error_code Error code if an error occurred. * @return VB2_SUCCESS, or error code on error. */ @@ -1263,6 +1265,7 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale_id, uint32_t selected_item, uint32_t disabled_item_mask, + int timer_disabled, enum vb2_ui_error error_code); /** diff --git a/tests/vb2_ui_action_tests.c b/tests/vb2_ui_action_tests.c index b32bafe5..fb110b4e 100644 --- a/tests/vb2_ui_action_tests.c +++ b/tests/vb2_ui_action_tests.c @@ -386,6 +386,7 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale_id, uint32_t selected_item, uint32_t disabled_item_mask, + int timer_disabled, enum vb2_ui_error error_code) { struct display_call displayed = (struct display_call){ diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index 47c70466..516ec6f0 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -326,6 +326,7 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale_id, uint32_t selected_item, uint32_t disabled_item_mask, + int timer_disabled, enum vb2_ui_error error_code) { struct display_call displayed = (struct display_call){ -- cgit v1.2.1