diff options
author | Shelley Chen <shchen@chromium.org> | 2017-09-20 15:58:13 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2017-11-30 00:29:08 +0000 |
commit | f39d959d4647868b06b27e449cff26ddd5eda458 (patch) | |
tree | 96502df78125cf5e2aa885b9563243511c3a710d | |
parent | 05ffc9cd0d993a962ca85aeec2eb984116454e06 (diff) | |
download | vboot-f39d959d4647868b06b27e449cff26ddd5eda458.tar.gz |
detachables: create menu items for legacy screens
Previously, we didn't require any action on these legacy screens, so
didn't update current_screen when displaying these. Now, will be
adding language switching and debug display for these screens, so need
to keep track of them.
BUG=b:65470853, b:67371896, b:64400036
BRANCH=None
TEST=None
Change-Id: I2bab22fcbb0bb3cdfffe585eb633231ba8015fc3
Signed-off-by: Shelley Chen <shchen@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/676269
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/798129
-rw-r--r-- | firmware/lib/vboot_ui_menu.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c index 851e905b..23ef7130 100644 --- a/firmware/lib/vboot_ui_menu.c +++ b/firmware/lib/vboot_ui_menu.c @@ -102,6 +102,9 @@ typedef enum _VB_MENU { VB_MENU_TO_DEV, VB_MENU_LANGUAGES, VB_MENU_RECOVERY_INSERT, + VB_MENU_RECOVERY_NO_GOOD, + VB_MENU_RECOVERY_BROKEN, + VB_MENU_TO_NORM_CONFIRMED, VB_MENU_COUNT, } VB_MENU; @@ -302,6 +305,9 @@ static const uint32_t VB_MENU_TO_SCREEN_MAP[] = { VB_SCREEN_RECOVERY_TO_DEV_MENU, VB_SCREEN_LANGUAGES_MENU, VB_SCREEN_RECOVERY_INSERT, + VB_SCREEN_RECOVERY_NO_GOOD, + VB_SCREEN_OS_BROKEN, + VB_SCREEN_TO_NORM_CONFIRMED, }; VbError_t vb2_draw_current_screen(struct vb2_context *ctx, @@ -458,6 +464,10 @@ VbError_t vb2_update_menu(struct vb2_context *ctx) vb2_set_menu_items(VB_MENU_RECOVERY, VB_RECOVERY_POWER_OFF); break; + case VB_MENU_RECOVERY_NO_GOOD: + case VB_MENU_RECOVERY_BROKEN: + case VB_MENU_TO_NORM_CONFIRMED: + break; case VB_MENU_RECOVERY: switch(current_menu_idx) { case VB_RECOVERY_TO_DEV: @@ -909,6 +919,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams) cparams, VB_SCREEN_TO_NORM_CONFIRMED, 0); + current_menu = VB_MENU_TO_NORM_CONFIRMED; VbExSleepMs(5000); return VBERROR_REBOOT_REQUIRED; } @@ -995,6 +1006,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) vb2_nv_commit(ctx); VbDisplayScreen(ctx, cparams, VB_SCREEN_OS_BROKEN, 0); + current_menu = VB_MENU_RECOVERY_BROKEN; VB2_DEBUG("waiting for manual recovery\n"); while (1) { key = VbExKeyboardRead(); @@ -1039,10 +1051,12 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) current_menu_idx != VB_RECOVERY_DBG_INFO) { if (retval == VBERROR_NO_DISK_FOUND) vb2_draw_current_screen(ctx, cparams); - else + else { VbDisplayScreen(ctx, cparams, VB_SCREEN_RECOVERY_NO_GOOD, 0); + current_menu = VB_MENU_RECOVERY_NO_GOOD; + } } /* @@ -1124,10 +1138,12 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams) if (retval == VBERROR_NO_DISK_FOUND) vb2_draw_current_screen(ctx, cparams); - else + else { VbDisplayScreen(ctx, cparams, VB_SCREEN_RECOVERY_NO_GOOD, 0); + current_menu = VB_MENU_RECOVERY_NO_GOOD; + } } /* Probably shutting down */ |