summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu-Ping Wu <yupingso@chromium.org>2020-04-06 16:12:20 +0800
committerCommit Bot <commit-bot@chromium.org>2020-04-22 07:16:54 +0000
commit60bf68b93178a5ede4a8874c5289290d3d45b6c4 (patch)
tree2219285e412b37e6c5aa5cfd6bd8a743dece203e
parent8a3a35962695d5da4e3dcde3db6026c631ca2a79 (diff)
downloadvboot-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.c6
-rw-r--r--firmware/2lib/include/2api.h15
-rw-r--r--tests/vb2_ui_tests.c12
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;