diff options
author | Yu-Ping Wu <yupingso@chromium.org> | 2020-04-06 16:12:20 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-04-22 07:16:54 +0000 |
commit | 60bf68b93178a5ede4a8874c5289290d3d45b6c4 (patch) | |
tree | 2219285e412b37e6c5aa5cfd6bd8a743dece203e | |
parent | 8a3a35962695d5da4e3dcde3db6026c631ca2a79 (diff) | |
download | vboot-60bf68b93178a5ede4a8874c5289290d3d45b6c4.tar.gz |
vboot: Add recovery select screen to vb2_screen
Add VB2_SCREEN_RECOVERY_SELECT to enum vb2_screen for the recovery
select screen.
Also add arguments 'selected_item' and 'disabled_item_mask' to
vb2ex_display_ui() for menu items, and rename argument 'locale' to
'locale_id'.
BRANCH=none
BUG=b:146399181
TEST=USE="menu_ui" emerge-nami depthcharge
Cq-Depend: chromium:2124025
Change-Id: Ifff67ded8196288cdb3c1558c64c09b7ffc5011e
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2138876
Reviewed-by: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | firmware/2lib/2ui.c | 6 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 15 | ||||
-rw-r--r-- | tests/vb2_ui_tests.c | 12 |
3 files changed, 23 insertions, 10 deletions
diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 25037c94..5b38e08a 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -22,7 +22,7 @@ vb2_error_t vb2_developer_menu(struct vb2_context *ctx) enum vb2_dev_default_boot default_boot; /* TODO(roccochen): Init, wait for user, and boot. */ - vb2ex_display_ui(VB2_SCREEN_BLANK, 0); + vb2ex_display_ui(VB2_SCREEN_BLANK, 0, 0, 0); /* If dev mode was disabled, loop forever. */ if (!vb2_dev_boot_allowed(ctx)) @@ -48,7 +48,7 @@ vb2_error_t vb2_developer_menu(struct vb2_context *ctx) vb2_error_t vb2_broken_recovery_menu(struct vb2_context *ctx) { /* TODO(roccochen): Init and wait for user to reset or shutdown. */ - vb2ex_display_ui(VB2_SCREEN_BLANK, 0); + vb2ex_display_ui(VB2_SCREEN_BLANK, 0, 0, 0); while (1); @@ -58,7 +58,7 @@ vb2_error_t vb2_broken_recovery_menu(struct vb2_context *ctx) vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx) { /* TODO(roccochen): Init and wait for user. */ - vb2ex_display_ui(VB2_SCREEN_BLANK, 0); + vb2ex_display_ui(VB2_SCREEN_BLANK, 0 ,0, 0); while (1); diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index d75b9e4b..07a5718d 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1172,16 +1172,25 @@ enum vb2_screen { /* Blank screen */ VB2_SCREEN_BLANK = 0x0, /* Wait screen for EC sync and AUXFW sync */ - VB2_SCREEN_FIRMWARE_SYNC = 0x10, + VB2_SCREEN_FIRMWARE_SYNC = 0x100, + /* First recovery screen to select recovering from disk or phone */ + VB2_SCREEN_RECOVERY_SELECT = 0x200, }; /** * Display UI screen. * * @param screen Screen to display. - * @param locale Locale. + * @param selected_item Index of the selected menu item. If the screen + * 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 locale_id Id of current locale. * @return VB2_SUCCESS, or error code on error. */ -vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale); +vb2_error_t vb2ex_display_ui(enum vb2_screen screen, + uint32_t locale_id, + uint32_t selected_item, + uint32_t disabled_item_mask); #endif /* VBOOT_REFERENCE_2API_H_ */ diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index eb7de299..bf9124bc 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -116,10 +116,13 @@ vb2_error_t VbTryLoadKernel(struct vb2_context *c, uint32_t get_info_flags) return mock_vbtlk_retval[mock_vbtlk_count++]; } -vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale) +vb2_error_t vb2ex_display_ui(enum vb2_screen screen, + uint32_t locale_id, + uint32_t selected_item, + uint32_t disabled_item_mask) { - VB2_DEBUG("screens %d: screen = %#x, locale = %u\n", - mock_screens_count, screen, locale); + VB2_DEBUG("screens %d: screen = %#x, locale_id = %u\n", + mock_screens_count, screen, locale_id); if (mock_screens_count >= ARRAY_SIZE(mock_screens_displayed) || mock_screens_count >= ARRAY_SIZE(mock_locales_displayed)) { @@ -129,7 +132,8 @@ vb2_error_t vb2ex_display_ui(enum vb2_screen screen, uint32_t locale) } mock_screens_displayed[mock_screens_count] = screen; - mock_locales_displayed[mock_screens_count] = locale; + mock_locales_displayed[mock_screens_count] = locale_id; + /* TODO(roccochen): handle the rest of two arguments */ mock_screens_count++; return VB2_SUCCESS; |