summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authoredisonhello <edisonhello@google.com>2021-09-02 17:55:15 +0800
committerCommit Bot <commit-bot@chromium.org>2021-09-14 08:03:19 +0000
commit1a7c57ce7fa5aa1c8cdc6bffffbfe3f8dbece664 (patch)
treed1597cec0e288f2ca31f9f3d8588d8bdb23c7e72 /firmware
parent3852f05c1cf9a0178ec5d16352d213e6ec2ab422 (diff)
downloadvboot-1a7c57ce7fa5aa1c8cdc6bffffbfe3f8dbece664.tar.gz
vboot/ui: Remove 2ui, 2ui_screens, and vb2_ui*_testsstabilize-rust-14225.Bstabilize-rust-14224.Bstabilize-rust-14220.B
Since all the screens and tests are already moved to depthcharge in previous CLs, remove all internal UI functions and tests from vboot. BUG=b:172339016 TEST=DEBUG=1 make -j test_setup && make -j runtests BRANCH=none Signed-off-by: edisonhello <edisonhello@google.com> Change-Id: Ifbd005a5761e5c354e010fc70487a63cd17cf4b3 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3139540 Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Diffstat (limited to 'firmware')
-rw-r--r--firmware/2lib/2ui.c414
-rw-r--r--firmware/2lib/2ui_screens.c523
-rw-r--r--firmware/2lib/include/2ui.h231
-rw-r--r--firmware/2lib/include/2ui_private.h43
4 files changed, 0 insertions, 1211 deletions
diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c
deleted file mode 100644
index 64680220..00000000
--- a/firmware/2lib/2ui.c
+++ /dev/null
@@ -1,414 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * User interfaces for developer and recovery mode menus.
- */
-
-#include "2api.h"
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2return_codes.h"
-#include "2ui.h"
-#include "2ui_private.h"
-#include "vboot_api.h" /* For VB_SHUTDOWN_REQUEST_POWER_BUTTON */
-
-/*****************************************************************************/
-/* Utility functions */
-
-/**
- * Check GBB flags against VbExIsShutdownRequested() shutdown request,
- * and check for VB_BUTTON_POWER_SHORT_PRESS key, to determine if a
- * shutdown is required.
- *
- * @param ui UI context pointer
- * @return VB2_REQUEST_SHUTDOWN if shutdown needed, or VB2_SUCCESS
- */
-vb2_error_t vb2_check_shutdown_request(struct vb2_ui_context *ui)
-{
- uint32_t shutdown_request = VbExIsShutdownRequested();
-
- /*
- * Ignore power button push until after we have seen it released.
- * This avoids shutting down immediately if the power button is still
- * being held on startup. After we've recognized a valid power button
- * push then don't report the event until after the button is released.
- */
- if (shutdown_request & VB_SHUTDOWN_REQUEST_POWER_BUTTON) {
- shutdown_request &= ~VB_SHUTDOWN_REQUEST_POWER_BUTTON;
- if (ui->power_button == VB2_POWER_BUTTON_RELEASED)
- ui->power_button = VB2_POWER_BUTTON_PRESSED;
- } else {
- if (ui->power_button == VB2_POWER_BUTTON_PRESSED)
- shutdown_request |= VB_SHUTDOWN_REQUEST_POWER_BUTTON;
- ui->power_button = VB2_POWER_BUTTON_RELEASED;
- }
-
- if (ui->key == VB_BUTTON_POWER_SHORT_PRESS)
- shutdown_request |= VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-
- /* If desired, ignore shutdown request due to lid closure. */
- if (vb2api_gbb_get_flags(ui->ctx) & VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN)
- shutdown_request &= ~VB_SHUTDOWN_REQUEST_LID_CLOSED;
-
- /*
- * In detachables, disable shutdown due to power button.
- * It is used for menu selection instead.
- */
- if (DETACHABLE)
- shutdown_request &= ~VB_SHUTDOWN_REQUEST_POWER_BUTTON;
-
- if (shutdown_request)
- return VB2_REQUEST_SHUTDOWN;
-
- return VB2_SUCCESS;
-}
-
-/*****************************************************************************/
-/* Error action functions */
-
-vb2_error_t vb2_error_exit_action(struct vb2_ui_context *ui)
-{
- /*
- * If an error message is currently shown on the screen, any
- * key press clears that error. Unset the key so that it is
- * not processed by other action functions.
- */
- if (ui->key && ui->error_code) {
- ui->error_code = VB2_UI_ERROR_NONE;
- ui->key = 0;
- }
- return VB2_SUCCESS;
-}
-
-/*****************************************************************************/
-/* Menu navigation functions */
-
-const struct vb2_menu *vb2_get_menu(struct vb2_ui_context *ui)
-{
- const struct vb2_menu *menu;
- static const struct vb2_menu empty_menu = {
- .num_items = 0,
- .items = NULL,
- };
- if (ui->state->screen->get_menu) {
- menu = ui->state->screen->get_menu(ui);
- return menu ? menu : &empty_menu;
- } else {
- return &ui->state->screen->menu;
- }
-}
-
-vb2_error_t vb2_menu_navigation_action(struct vb2_ui_context *ui)
-{
- uint32_t key = ui->key;
-
- /* Map detachable button presses for simplicity. */
- if (DETACHABLE) {
- if (key == VB_BUTTON_VOL_UP_SHORT_PRESS)
- key = VB_KEY_UP;
- else if (key == VB_BUTTON_VOL_DOWN_SHORT_PRESS)
- key = VB_KEY_DOWN;
- else if (key == VB_BUTTON_POWER_SHORT_PRESS)
- key = VB_KEY_ENTER;
- }
-
- switch (key) {
- case VB_KEY_UP:
- return vb2_ui_menu_prev(ui);
- case VB_KEY_DOWN:
- return vb2_ui_menu_next(ui);
- case VB_KEY_ENTER:
- return vb2_ui_menu_select(ui);
- case VB_KEY_ESC:
- return vb2_ui_screen_back(ui);
- default:
- if (key != 0)
- VB2_DEBUG("Pressed key %#x, trusted? %d\n",
- ui->key, ui->key_trusted);
- }
-
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_menu_prev(struct vb2_ui_context *ui)
-{
- int item;
-
- if (!DETACHABLE && ui->key == VB_BUTTON_VOL_UP_SHORT_PRESS)
- return VB2_SUCCESS;
-
- item = ui->state->selected_item - 1;
- while (item >= 0 && VB2_GET_BIT(ui->state->hidden_item_mask, item))
- item--;
- /* Only update if item is valid */
- if (item >= 0)
- ui->state->selected_item = item;
-
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_menu_next(struct vb2_ui_context *ui)
-{
- int item;
- const struct vb2_menu *menu;
-
- if (!DETACHABLE && ui->key == VB_BUTTON_VOL_DOWN_SHORT_PRESS)
- return VB2_SUCCESS;
-
- menu = vb2_get_menu(ui);
- item = ui->state->selected_item + 1;
- while (item < menu->num_items &&
- VB2_GET_BIT(ui->state->hidden_item_mask, item))
- item++;
- /* Only update if item is valid */
- if (item < menu->num_items)
- ui->state->selected_item = item;
-
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_menu_select(struct vb2_ui_context *ui)
-{
- const struct vb2_menu *menu;
- const struct vb2_menu_item *menu_item;
-
- if (!DETACHABLE && ui->key == VB_BUTTON_POWER_SHORT_PRESS)
- return VB2_SUCCESS;
-
- menu = vb2_get_menu(ui);
- if (menu->num_items == 0)
- return VB2_SUCCESS;
-
- menu_item = &menu->items[ui->state->selected_item];
-
- /* Cannot select a disabled menu item */
- if (VB2_GET_BIT(ui->state->disabled_item_mask,
- ui->state->selected_item)) {
- VB2_DEBUG("Menu item <%s> disabled; ignoring\n",
- menu_item->text);
- return VB2_SUCCESS;
- }
-
- if (menu_item->action) {
- VB2_DEBUG("Menu item <%s> run action\n", menu_item->text);
- return menu_item->action(ui);
- } else if (menu_item->target) {
- VB2_DEBUG("Menu item <%s> to target screen %#x\n",
- menu_item->text, menu_item->target);
- return vb2_ui_screen_change(ui, menu_item->target);
- }
-
- VB2_DEBUG("Menu item <%s> no action or target screen\n",
- menu_item->text);
- return VB2_SUCCESS;
-}
-
-/*****************************************************************************/
-/* Screen navigation functions */
-
-vb2_error_t vb2_ui_screen_back(struct vb2_ui_context *ui)
-{
- struct vb2_screen_state *tmp;
-
- if (ui->state && ui->state->prev) {
- tmp = ui->state->prev;
- free(ui->state);
- ui->state = tmp;
- if (ui->state->screen->reinit)
- VB2_TRY(ui->state->screen->reinit(ui));
- } else {
- VB2_DEBUG("ERROR: No previous screen; ignoring\n");
- }
-
- return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t default_screen_init(struct vb2_ui_context *ui)
-{
- const struct vb2_menu *menu = vb2_get_menu(ui);
- ui->state->selected_item = 0;
- if (menu->num_items > 1 && menu->items[0].is_language_select)
- ui->state->selected_item = 1;
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_screen_change(struct vb2_ui_context *ui, enum vb2_screen id)
-{
- const struct vb2_screen_info *new_screen_info;
- struct vb2_screen_state *cur_state;
- int state_exists = 0;
-
- new_screen_info = vb2_get_screen_info(id);
- if (new_screen_info == NULL) {
- VB2_DEBUG("ERROR: Screen entry %#x not found; ignoring\n", id);
- return VB2_REQUEST_UI_CONTINUE;
- }
-
- /* Check to see if the screen state already exists in our stack. */
- cur_state = ui->state;
- while (cur_state != NULL) {
- if (cur_state->screen->id == id) {
- state_exists = 1;
- break;
- }
- cur_state = cur_state->prev;
- }
-
- if (state_exists) {
- /* Pop until the requested screen is at the top of stack. */
- while (ui->state->screen->id != id) {
- cur_state = ui->state;
- ui->state = cur_state->prev;
- free(cur_state);
- }
- if (ui->state->screen->reinit)
- VB2_TRY(ui->state->screen->reinit(ui));
- } else {
- /* Allocate the requested screen on top of the stack. */
- cur_state = malloc(sizeof(*ui->state));
- if (cur_state == NULL) {
- VB2_DEBUG("WARNING: malloc failed; ignoring\n");
- return VB2_REQUEST_UI_CONTINUE;
- }
- memset(cur_state, 0, sizeof(*ui->state));
- cur_state->prev = ui->state;
- cur_state->screen = new_screen_info;
- ui->state = cur_state;
- if (ui->state->screen->init)
- VB2_TRY(ui->state->screen->init(ui));
- else
- VB2_TRY(default_screen_init(ui));
- }
-
- return VB2_REQUEST_UI_CONTINUE;
-}
-
-/*****************************************************************************/
-/* Core UI loop */
-
-static vb2_error_t ui_loop_impl(
- struct vb2_context *ctx, enum vb2_screen root_screen_id,
- vb2_error_t (*global_action)(struct vb2_ui_context *ui))
-{
- 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;
- uint32_t key_flags;
- uint32_t start_time_ms, elapsed_ms;
- vb2_error_t rv;
-
- memset(&ui, 0, sizeof(ui));
- ui.ctx = ctx;
- root_info = vb2_get_screen_info(root_screen_id);
- if (root_info == NULL)
- VB2_DIE("Root screen not found.\n");
- ui.locale_id = vb2api_get_locale_id(ctx);
-
- rv = vb2_ui_screen_change(&ui, root_screen_id);
- if (rv && 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) {
- start_time_ms = vb2ex_mtime();
-
- /* Draw if there are state changes. */
- if (memcmp(&prev_state, ui.state, sizeof(*ui.state)) ||
- /* Redraw when timer is disabled. */
- prev_disable_timer != ui.disable_timer ||
- /* Redraw/beep on a transition. */
- prev_error_code != ui.error_code ||
- /* Beep. */
- ui.error_beep != 0 ||
- /* Redraw on a screen request to refresh. */
- ui.force_display) {
-
- menu = vb2_get_menu(&ui);
- VB2_DEBUG("<%s> menu item <%s>\n",
- ui.state->screen->name,
- menu->num_items ?
- menu->items[ui.state->selected_item].text :
- "null");
- vb2ex_display_ui(ui.state->screen->id, ui.locale_id,
- ui.state->selected_item,
- ui.state->disabled_item_mask,
- ui.state->hidden_item_mask,
- ui.disable_timer,
- ui.state->current_page,
- ui.error_code);
- if (ui.error_beep ||
- (ui.error_code &&
- prev_error_code != ui.error_code)) {
- vb2ex_beep(250, 400);
- ui.error_beep = 0;
- }
-
- /* Reset refresh flag. */
- ui.force_display = 0;
-
- /* Update prev variables. */
- memcpy(&prev_state, ui.state, sizeof(*ui.state));
- prev_disable_timer = ui.disable_timer;
- prev_error_code = ui.error_code;
- }
-
- /* Grab new keyboard input. */
- ui.key = VbExKeyboardReadWithFlags(&key_flags);
- ui.key_trusted = !!(key_flags & VB_KEY_FLAG_TRUSTED_KEYBOARD);
-
- /* Check for shutdown request. */
- rv = vb2_check_shutdown_request(&ui);
- if (rv && rv != VB2_REQUEST_UI_CONTINUE) {
- VB2_DEBUG("Shutdown requested!\n");
- return rv;
- }
-
- /* Check if we need to exit an error box. */
- rv = vb2_error_exit_action(&ui);
- if (rv && rv != VB2_REQUEST_UI_CONTINUE)
- return rv;
-
- /* Run screen action. */
- if (ui.state->screen->action) {
- rv = ui.state->screen->action(&ui);
- if (rv && rv != VB2_REQUEST_UI_CONTINUE)
- return rv;
- }
-
- /* Run menu navigation action. */
- rv = vb2_menu_navigation_action(&ui);
- if (rv && rv != VB2_REQUEST_UI_CONTINUE)
- return rv;
-
- /* Run global action function if available. */
- if (global_action) {
- rv = global_action(&ui);
- if (rv && rv != VB2_REQUEST_UI_CONTINUE)
- return rv;
- }
-
- /* Delay. */
- elapsed_ms = vb2ex_mtime() - start_time_ms;
- if (elapsed_ms < KEY_DELAY_MS)
- vb2ex_msleep(KEY_DELAY_MS - elapsed_ms);
- }
-
- return VB2_SUCCESS;
-}
-
-vb2_error_t vb2_ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id,
- vb2_error_t (*global_action)(struct vb2_ui_context *ui))
-{
- vb2_error_t rv = ui_loop_impl(ctx, root_screen_id, global_action);
- if (rv == VB2_REQUEST_UI_EXIT)
- return VB2_SUCCESS;
- return rv;
-}
diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c
deleted file mode 100644
index 3a8e0b60..00000000
--- a/firmware/2lib/2ui_screens.c
+++ /dev/null
@@ -1,523 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Firmware screen definitions.
- */
-
-#include "2api.h"
-#include "2common.h"
-#include "2misc.h"
-#include "2nvstorage.h"
-#include "2ui.h"
-#include "2ui_private.h"
-#include "vboot_api.h"
-
-#define MENU_ITEMS(a) ((struct vb2_menu){ \
- .num_items = ARRAY_SIZE(a), \
- .items = a, \
-})
-
-#define LANGUAGE_SELECT_ITEM ((struct vb2_menu_item){ \
- .text = "Language selection", \
- .target = VB2_SCREEN_LANGUAGE_SELECT, \
- .is_language_select = 1, \
-})
-
-#define NEXT_ITEM(target_screen) ((struct vb2_menu_item){ \
- .text = "Next", \
- .target = (target_screen), \
-})
-
-#define BACK_ITEM ((struct vb2_menu_item){ \
- .text = "Back", \
- .action = vb2_ui_screen_back, \
-})
-
-#define ADVANCED_OPTIONS_ITEM ((struct vb2_menu_item){ \
- .text = "Advanced options", \
- .target = VB2_SCREEN_ADVANCED_OPTIONS, \
-})
-
-/* Action that will power off the device. */
-static vb2_error_t power_off_action(struct vb2_ui_context *ui)
-{
- return VB2_REQUEST_SHUTDOWN;
-}
-
-#define POWER_OFF_ITEM ((struct vb2_menu_item){ \
- .text = "Power off", \
- .action = power_off_action, \
-})
-
-/******************************************************************************/
-/*
- * Functions for ui error handling
- */
-
-static vb2_error_t set_ui_error(struct vb2_ui_context *ui,
- enum vb2_ui_error error_code)
-{
- /* Keep the first occurring error. */
- if (ui->error_code)
- VB2_DEBUG("When handling ui error %#x, another ui error "
- "occurred: %#x",
- ui->error_code, error_code);
- else
- ui->error_code = error_code;
- /* Return to the ui loop to show the error code. */
- return VB2_REQUEST_UI_CONTINUE;
-}
-
-static vb2_error_t set_ui_error_and_go_back(struct vb2_ui_context *ui,
- enum vb2_ui_error error_code)
-{
- set_ui_error(ui, error_code);
- return vb2_ui_screen_back(ui);
-}
-
-/******************************************************************************/
-/*
- * Functions used for log screens
- *
- * Expects that the page_count is valid and page_up_item and page_down_item are
- * assigned to correct menu item indices in all three functions, the
- * current_page is valid in prev and next actions, and the back_item is assigned
- * to a correct menu item index.
- */
-
-static vb2_error_t log_page_update(struct vb2_ui_context *ui,
- const char *new_log_string)
-{
- const struct vb2_screen_info *screen = ui->state->screen;
-
- if (new_log_string) {
- ui->state->page_count = vb2ex_prepare_log_screen(
- screen->id, ui->locale_id, new_log_string);
- if (ui->state->page_count == 0) {
- VB2_DEBUG("vb2ex_prepare_log_screen failed\n");
- return VB2_ERROR_UI_LOG_INIT;
- }
- if (ui->state->current_page >= ui->state->page_count)
- ui->state->current_page = ui->state->page_count - 1;
- ui->force_display = 1;
- }
- VB2_CLR_BIT(ui->state->disabled_item_mask, screen->page_up_item);
- VB2_CLR_BIT(ui->state->disabled_item_mask, screen->page_down_item);
- if (ui->state->current_page == 0)
- VB2_SET_BIT(ui->state->disabled_item_mask,
- screen->page_up_item);
- if (ui->state->current_page == ui->state->page_count - 1)
- VB2_SET_BIT(ui->state->disabled_item_mask,
- screen->page_down_item);
-
- return VB2_SUCCESS;
-}
-
-static vb2_error_t log_page_reset_to_top(struct vb2_ui_context *ui)
-{
- const struct vb2_screen_info *screen = ui->state->screen;
-
- ui->state->current_page = 0;
- ui->state->selected_item = ui->state->page_count > 1
- ? screen->page_down_item
- : screen->back_item;
- return log_page_update(ui, NULL);
-}
-
-static vb2_error_t log_page_prev_action(struct vb2_ui_context *ui)
-{
- /* Validity check. */
- if (ui->state->current_page == 0)
- return VB2_SUCCESS;
-
- ui->state->current_page--;
- return log_page_update(ui, NULL);
-}
-
-static vb2_error_t log_page_next_action(struct vb2_ui_context *ui)
-{
- /* Validity check. */
- if (ui->state->current_page == ui->state->page_count - 1)
- return VB2_SUCCESS;
-
- ui->state->current_page++;
- return log_page_update(ui, NULL);
-}
-
-#define PAGE_UP_ITEM ((struct vb2_menu_item){ \
- .text = "Page up", \
- .action = log_page_prev_action, \
-})
-
-#define PAGE_DOWN_ITEM ((struct vb2_menu_item){ \
- .text = "Page down", \
- .action = log_page_next_action, \
-})
-
-/******************************************************************************/
-/* VB2_SCREEN_LANGUAGE_SELECT */
-
-static vb2_error_t language_select_action(struct vb2_ui_context *ui)
-{
- vb2_error_t rv;
- ui->locale_id = ui->state->selected_item;
- VB2_DEBUG("Locale changed to %u\n", ui->locale_id);
-
- /* Write locale id back to nvdata. */
- vb2api_set_locale_id(ui->ctx, ui->locale_id);
-
- /* Commit nvdata changes immediately, in case of three-finger salute
- reboot. Ignore commit errors in recovery mode. */
- rv = vb2ex_commit_data(ui->ctx);
- if (rv && !(ui->ctx->flags & VB2_CONTEXT_RECOVERY_MODE))
- return rv;
-
- return vb2_ui_screen_back(ui);
-}
-
-const struct vb2_menu *vb2_get_language_menu(struct vb2_ui_context *ui)
-{
- int i;
- uint32_t num_locales;
- struct vb2_menu_item *items;
-
- if (ui->language_menu.num_items > 0)
- return &ui->language_menu;
-
- num_locales = vb2ex_get_locale_count();
- if (num_locales == 0) {
- VB2_DEBUG("WARNING: No locales available; assuming 1 locale\n");
- num_locales = 1;
- }
-
- items = malloc(num_locales * sizeof(struct vb2_menu_item));
- if (!items) {
- VB2_DEBUG("ERROR: malloc failed for language items\n");
- return NULL;
- }
-
- for (i = 0; i < num_locales; i++) {
- items[i].text = "Some language";
- items[i].action = language_select_action;
- }
-
- ui->language_menu.num_items = num_locales;
- ui->language_menu.items = items;
- return &ui->language_menu;
-}
-
-static vb2_error_t language_select_init(struct vb2_ui_context *ui)
-{
- const struct vb2_menu *menu = vb2_get_menu(ui);
- if (menu->num_items == 0) {
- VB2_DEBUG("ERROR: No menu items found; "
- "rejecting entering language selection screen\n");
- return vb2_ui_screen_back(ui);
- }
- if (ui->locale_id < menu->num_items) {
- ui->state->selected_item = ui->locale_id;
- } else {
- VB2_DEBUG("WARNING: Current locale not found in menu items; "
- "initializing selected_item to 0\n");
- ui->state->selected_item = 0;
- }
- return VB2_SUCCESS;
-}
-
-static const struct vb2_screen_info language_select_screen = {
- .id = VB2_SCREEN_LANGUAGE_SELECT,
- .name = "Language selection screen",
- .init = language_select_init,
- .get_menu = vb2_get_language_menu,
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_ADVANCED_OPTIONS */
-
-#define ADVANCED_OPTIONS_ITEM_DEVELOPER_MODE 1
-#define ADVANCED_OPTIONS_ITEM_DEBUG_INFO 2
-
-vb2_error_t vb2_advanced_options_init(struct vb2_ui_context *ui)
-{
- ui->state->selected_item = ADVANCED_OPTIONS_ITEM_DEVELOPER_MODE;
- if (vb2_get_sd(ui->ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED ||
- !vb2api_allow_recovery(ui->ctx)) {
- VB2_SET_BIT(ui->state->hidden_item_mask,
- ADVANCED_OPTIONS_ITEM_DEVELOPER_MODE);
- ui->state->selected_item = ADVANCED_OPTIONS_ITEM_DEBUG_INFO;
- }
-
- return VB2_SUCCESS;
-}
-
-static const struct vb2_menu_item advanced_options_items[] = {
- LANGUAGE_SELECT_ITEM,
- [ADVANCED_OPTIONS_ITEM_DEVELOPER_MODE] = {
- .text = "Enable developer mode",
- .target = VB2_SCREEN_RECOVERY_TO_DEV,
- },
- [ADVANCED_OPTIONS_ITEM_DEBUG_INFO] = {
- .text = "Debug info",
- .target = VB2_SCREEN_DEBUG_INFO,
- },
- {
- .text = "Firmware log",
- .target = VB2_SCREEN_FIRMWARE_LOG,
- },
- BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info advanced_options_screen = {
- .id = VB2_SCREEN_ADVANCED_OPTIONS,
- .name = "Advanced options",
- .init = vb2_advanced_options_init,
- .menu = MENU_ITEMS(advanced_options_items),
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_DEBUG_INFO */
-
-#define DEBUG_INFO_ITEM_PAGE_UP 1
-#define DEBUG_INFO_ITEM_PAGE_DOWN 2
-#define DEBUG_INFO_ITEM_BACK 3
-
-static vb2_error_t debug_info_set_content(struct vb2_ui_context *ui)
-{
- const char *log_string = vb2ex_get_debug_info(ui->ctx);
- if (!log_string)
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_DEBUG_LOG);
- if (vb2_is_error(log_page_update(ui, log_string)))
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_DEBUG_LOG);
- return VB2_SUCCESS;
-}
-
-static vb2_error_t debug_info_init(struct vb2_ui_context *ui)
-{
- VB2_TRY(debug_info_set_content(ui));
- if (vb2_is_error(log_page_reset_to_top(ui)))
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_DEBUG_LOG);
- return VB2_SUCCESS;
-}
-
-static vb2_error_t debug_info_reinit(struct vb2_ui_context *ui)
-{
- return debug_info_set_content(ui);
-}
-
-static const struct vb2_menu_item debug_info_items[] = {
- LANGUAGE_SELECT_ITEM,
- [DEBUG_INFO_ITEM_PAGE_UP] = PAGE_UP_ITEM,
- [DEBUG_INFO_ITEM_PAGE_DOWN] = PAGE_DOWN_ITEM,
- [DEBUG_INFO_ITEM_BACK] = BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info debug_info_screen = {
- .id = VB2_SCREEN_DEBUG_INFO,
- .name = "Debug info",
- .init = debug_info_init,
- .reinit = debug_info_reinit,
- .menu = MENU_ITEMS(debug_info_items),
- .page_up_item = DEBUG_INFO_ITEM_PAGE_UP,
- .page_down_item = DEBUG_INFO_ITEM_PAGE_DOWN,
- .back_item = DEBUG_INFO_ITEM_BACK,
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_FIRMWARE_LOG */
-
-#define FIRMWARE_LOG_ITEM_PAGE_UP 1
-#define FIRMWARE_LOG_ITEM_PAGE_DOWN 2
-#define FIRMWARE_LOG_ITEM_BACK 3
-
-static vb2_error_t firmware_log_set_content(struct vb2_ui_context *ui,
- int reset)
-{
- const char *log_string = vb2ex_get_firmware_log(reset);
- if (!log_string)
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_FIRMWARE_LOG);
- if (vb2_is_error(log_page_update(ui, log_string)))
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_FIRMWARE_LOG);
- return VB2_SUCCESS;
-}
-
-static vb2_error_t firmware_log_init(struct vb2_ui_context *ui)
-{
- VB2_TRY(firmware_log_set_content(ui, 1));
- if (vb2_is_error(log_page_reset_to_top(ui)))
- return set_ui_error_and_go_back(ui, VB2_UI_ERROR_FIRMWARE_LOG);
- return VB2_SUCCESS;
-}
-
-static vb2_error_t firmware_log_reinit(struct vb2_ui_context *ui)
-{
- return firmware_log_set_content(ui, 0);
-}
-
-static const struct vb2_menu_item firmware_log_items[] = {
- LANGUAGE_SELECT_ITEM,
- [FIRMWARE_LOG_ITEM_PAGE_UP] = PAGE_UP_ITEM,
- [FIRMWARE_LOG_ITEM_PAGE_DOWN] = PAGE_DOWN_ITEM,
- [FIRMWARE_LOG_ITEM_BACK] = BACK_ITEM,
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info firmware_log_screen = {
- .id = VB2_SCREEN_FIRMWARE_LOG,
- .name = "Firmware log",
- .init = firmware_log_init,
- .reinit = firmware_log_reinit,
- .menu = MENU_ITEMS(firmware_log_items),
- .page_up_item = FIRMWARE_LOG_ITEM_PAGE_UP,
- .page_down_item = FIRMWARE_LOG_ITEM_PAGE_DOWN,
- .back_item = FIRMWARE_LOG_ITEM_BACK,
-};
-
-/******************************************************************************/
-/* VB2_SCREEN_RECOVERY_TO_DEV */
-
-#define RECOVERY_TO_DEV_ITEM_CONFIRM 1
-#define RECOVERY_TO_DEV_ITEM_CANCEL 2
-
-vb2_error_t recovery_to_dev_init(struct vb2_ui_context *ui)
-{
- if (vb2_get_sd(ui->ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED)
- /* We're in dev mode, so let user know they can't transition */
- return set_ui_error_and_go_back(
- ui, VB2_UI_ERROR_DEV_MODE_ALREADY_ENABLED);
-
- if (!PHYSICAL_PRESENCE_KEYBOARD && vb2ex_physical_presence_pressed()) {
- VB2_DEBUG("Presence button stuck?\n");
- return vb2_ui_screen_back(ui);
- }
-
- ui->state->selected_item = RECOVERY_TO_DEV_ITEM_CONFIRM;
-
- /* Disable "Confirm" button for other physical presence types. */
- if (!PHYSICAL_PRESENCE_KEYBOARD) {
- VB2_SET_BIT(ui->state->hidden_item_mask,
- RECOVERY_TO_DEV_ITEM_CONFIRM);
- ui->state->selected_item = RECOVERY_TO_DEV_ITEM_CANCEL;
- }
-
- ui->physical_presence_button_pressed = 0;
-
- return VB2_SUCCESS;
-}
-
-static vb2_error_t recovery_to_dev_finalize(struct vb2_ui_context *ui)
-{
- VB2_DEBUG("Physical presence confirmed!\n");
-
- /* Validity check, should never happen. */
- if (ui->state->screen->id != VB2_SCREEN_RECOVERY_TO_DEV ||
- (vb2_get_sd(ui->ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) ||
- !vb2api_allow_recovery(ui->ctx)) {
- VB2_DEBUG("ERROR: Dev transition validity check failed\n");
- return VB2_SUCCESS;
- }
-
- VB2_DEBUG("Enabling dev mode and rebooting...\n");
-
- if (vb2api_enable_developer_mode(ui->ctx) != VB2_SUCCESS) {
- VB2_DEBUG("Enable developer mode failed\n");
- return VB2_SUCCESS;
- }
-
- return VB2_REQUEST_REBOOT_EC_TO_RO;
-}
-
-vb2_error_t recovery_to_dev_confirm_action(struct vb2_ui_context *ui)
-{
- if (!ui->key_trusted) {
- VB2_DEBUG("Reject untrusted %s confirmation\n",
- ui->key == VB_KEY_ENTER ? "ENTER" : "POWER");
- /*
- * If physical presence is confirmed using the keyboard,
- * beep and notify the user when the ENTER key comes
- * from an untrusted keyboard.
- */
- if (PHYSICAL_PRESENCE_KEYBOARD && ui->key == VB_KEY_ENTER)
- return set_ui_error(
- ui, VB2_UI_ERROR_UNTRUSTED_CONFIRMATION);
- return VB2_SUCCESS;
- }
- return recovery_to_dev_finalize(ui);
-}
-
-vb2_error_t recovery_to_dev_action(struct vb2_ui_context *ui)
-{
- int pressed;
-
- if (ui->key == ' ') {
- VB2_DEBUG("SPACE means cancel dev mode transition\n");
- return vb2_ui_screen_back(ui);
- }
-
- /* Keyboard physical presence case covered by "Confirm" action. */
- if (PHYSICAL_PRESENCE_KEYBOARD)
- return VB2_SUCCESS;
-
- pressed = vb2ex_physical_presence_pressed();
- if (pressed) {
- VB2_DEBUG("Physical presence button pressed, "
- "awaiting release\n");
- ui->physical_presence_button_pressed = 1;
- return VB2_SUCCESS;
- }
- if (!ui->physical_presence_button_pressed)
- return VB2_SUCCESS;
- VB2_DEBUG("Physical presence button released\n");
-
- return recovery_to_dev_finalize(ui);
-}
-
-static const struct vb2_menu_item recovery_to_dev_items[] = {
- LANGUAGE_SELECT_ITEM,
- [RECOVERY_TO_DEV_ITEM_CONFIRM] = {
- .text = "Confirm",
- .action = recovery_to_dev_confirm_action,
- },
- [RECOVERY_TO_DEV_ITEM_CANCEL] = {
- .text = "Cancel",
- .action = vb2_ui_screen_back,
- },
- POWER_OFF_ITEM,
-};
-
-static const struct vb2_screen_info recovery_to_dev_screen = {
- .id = VB2_SCREEN_RECOVERY_TO_DEV,
- .name = "Transition to developer mode",
- .init = recovery_to_dev_init,
- .action = recovery_to_dev_action,
- .menu = MENU_ITEMS(recovery_to_dev_items),
-};
-
-
-/******************************************************************************/
-/*
- * TODO(chromium:1035800): Refactor UI code across vboot and depthcharge.
- * Currently vboot and depthcharge maintain their own copies of menus/screens.
- * vboot detects keyboard input and controls the navigation among different menu
- * items and screens, while depthcharge performs the actual rendering of each
- * screen, based on the menu information passed from vboot.
- */
-static const struct vb2_screen_info *screens[] = {
- &language_select_screen,
- &advanced_options_screen,
- &debug_info_screen,
- &firmware_log_screen,
- &recovery_to_dev_screen,
-};
-
-const struct vb2_screen_info *vb2_get_screen_info(enum vb2_screen id)
-{
- int i;
- for (i = 0; i < ARRAY_SIZE(screens); i++) {
- if (screens[i]->id == id)
- return screens[i];
- }
- return NULL;
-}
diff --git a/firmware/2lib/include/2ui.h b/firmware/2lib/include/2ui.h
deleted file mode 100644
index c01c1f97..00000000
--- a/firmware/2lib/include/2ui.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * User interfaces for developer and recovery mode menus.
- */
-
-#ifndef VBOOT_REFERENCE_2UI_H_
-#define VBOOT_REFERENCE_2UI_H_
-
-#include <2api.h>
-#include <2sysincludes.h>
-
-/*****************************************************************************/
-/* Data structures */
-
-struct vb2_ui_context; /* Forward declaration */
-
-struct vb2_menu_item {
- /* Text description */
- const char *text;
- /* Target screen */
- enum vb2_screen target;
- /* Action function takes precedence over target screen if non-NULL. */
- vb2_error_t (*action)(struct vb2_ui_context *ui);
- /* Whether the item is language selection */
- int is_language_select;
-};
-
-struct vb2_menu {
- /* Number of menu items */
- uint16_t num_items;
- /* List of menu items */
- const struct vb2_menu_item *items;
-};
-
-struct vb2_screen_info {
- /* Screen id */
- enum vb2_screen id;
- /* Screen name for printing to console only */
- const char *name;
- /*
- * Init function runs once when changing to the screen which is not in
- * the history stack.
- */
- vb2_error_t (*init)(struct vb2_ui_context *ui);
- /*
- * Re-init function runs once when changing to the screen which is
- * already in the history stack, for example, when going back to the
- * screen. Exactly one of init() and reinit() will be called.
- */
- vb2_error_t (*reinit)(struct vb2_ui_context *ui);
- /* Action function runs repeatedly while on the screen. */
- vb2_error_t (*action)(struct vb2_ui_context *ui);
- /* Menu items. */
- struct vb2_menu menu;
- /*
- * Custom function for getting menu items. If non-null, field 'menu'
- * will be ignored.
- */
- const struct vb2_menu *(*get_menu)(struct vb2_ui_context *ui);
- /*
- * Indices of menu items;
- * used by log_page_* functions in 2ui_screens.c.
- */
- uint32_t page_up_item;
- uint32_t page_down_item;
- uint32_t back_item;
- uint32_t cancel_item;
-};
-
-struct vb2_screen_state {
- const struct vb2_screen_info *screen;
- uint32_t selected_item;
- uint32_t disabled_item_mask;
- uint32_t hidden_item_mask;
-
- /* For log screen. */
- uint32_t page_count;
- uint32_t current_page;
-
- /* For minidiag test screens. */
- int test_finished; /* Do not update screen if the content is done */
-
- struct vb2_screen_state *prev;
-};
-
-enum vb2_power_button {
- VB2_POWER_BUTTON_HELD_SINCE_BOOT = 0,
- VB2_POWER_BUTTON_RELEASED,
- VB2_POWER_BUTTON_PRESSED, /* Must have been previously released */
-};
-
-struct vb2_ui_context {
- struct vb2_context *ctx;
- struct vb2_screen_state *state;
- uint32_t locale_id;
- uint32_t key;
- int key_trusted;
-
- /* For vb2_check_shutdown_request. */
- enum vb2_power_button power_button;
-
- /* For developer mode. */
- int disable_timer;
- uint32_t start_time_ms;
- int beep_count;
-
- /* For manual recovery. */
- vb2_error_t recovery_rv;
-
- /* For to_dev transition flow. */
- int physical_presence_button_pressed;
-
- /* For language selection screen. */
- struct vb2_menu language_menu;
-
- /* For bootloader selection screen. */
- struct vb2_menu bootloader_menu;
-
- /* For error beep sound. */
- int error_beep;
-
- /* For displaying error messages. */
- enum vb2_ui_error error_code;
-
- /* Force calling vb2ex_display_ui for refreshing the screen. This flag
- will be reset after done. */
- int force_display;
-};
-
-vb2_error_t vb2_ui_developer_mode_boot_internal_action(
- struct vb2_ui_context *ui);
-vb2_error_t vb2_ui_developer_mode_boot_external_action(
- struct vb2_ui_context *ui);
-vb2_error_t vb2_ui_developer_mode_boot_altfw_action(
- struct vb2_ui_context *ui);
-
-/**
- * Get info struct of a screen.
- *
- * @param id Screen from enum vb2_screen
- *
- * @return screen info struct on success, NULL on error.
- */
-const struct vb2_screen_info *vb2_get_screen_info(enum vb2_screen id);
-
-/*****************************************************************************/
-/* Menu navigation functions */
-
-/**
- * Move selection to the previous menu item.
- *
- * Update selected_item, taking into account hidden indices (from
- * hidden_item_mask). The selection does not wrap, meaning that we block
- * on 0 when we hit the start of the menu.
- *
- * @param ui UI context pointer
- * @return VB2_SUCCESS, or error code on error.
- */
-vb2_error_t vb2_ui_menu_prev(struct vb2_ui_context *ui);
-
-/**
- * Move selection to the next menu item.
- *
- * Update selected_item, taking into account hidden indices (from
- * hidden_item_mask). The selection does not wrap, meaning that we block
- * on the max index when we hit the end of the menu.
- *
- * @param ui UI context pointer
- * @return VB2_SUCCESS, or error code on error.
- */
-vb2_error_t vb2_ui_menu_next(struct vb2_ui_context *ui);
-
-/**
- * Select the current menu item.
- *
- * The caller should take care of returning after this function, and should not
- * continue executing under the assumption that the screen has *not* changed.
- *
- * If the current menu item has an action associated with it, run the action.
- * Otherwise, navigate to the target screen. If neither of these are set, then
- * selecting the menu item is a no-op.
- *
- * @param ui UI context pointer
- * @return VB2_SUCCESS, or error code on error.
- */
-vb2_error_t vb2_ui_menu_select(struct vb2_ui_context *ui);
-
-/*****************************************************************************/
-/* Screen navigation functions */
-/**
- * After these functions are called, no assumptions may be made about which
- * screen is currently displayed, and thus execution should return to ui_loop.
- * VB2_REQUEST_UI_CONTINUE is returned rather than VB2_SUCCESS, so VB2_TRY can
- * be used to wrapped to these functions and the callers of these functions.
- */
-/**
- * Return back to the previous screen.
- *
- * The caller should take care of returning after this function, and should not
- * continue executing under the assumption that the screen has *not* changed.
- *
- * If the current screen is already the root screen, the request is ignored.
- *
- * TODO(b/157625765): Consider falling into recovery mode (BROKEN screen) when
- * the current screen is already the root screen.
- *
- * @param ui UI context pointer
- * @return VB2_REQUEST_UI_CONTINUE, or error code on error.
- */
-vb2_error_t vb2_ui_screen_back(struct vb2_ui_context *ui);
-
-/**
- * Change to the given screen.
- *
- * The caller should take care of returning after this function, and should not
- * continue executing under the assumption that the screen has *not* changed.
- *
- * If the screen is not found, the request is ignored.
- *
- * TODO(b/157625765): Consider falling into recovery mode (BROKEN screen) when
- * the target screen is not found.
- *
- * @param ui UI context pointer
- * @param id Screen from enum vb2_screen
- * @return VB2_REQUEST_UI_CONTINUE, or error code on error.
- */
-vb2_error_t vb2_ui_screen_change(struct vb2_ui_context *ui, enum vb2_screen id);
-
-#endif /* VBOOT_REFERENCE_2UI_H_ */
diff --git a/firmware/2lib/include/2ui_private.h b/firmware/2lib/include/2ui_private.h
deleted file mode 100644
index 9f08c3eb..00000000
--- a/firmware/2lib/include/2ui_private.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* Copyright 2020 The Chromium OS Authors. All rights reserved.
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- *
- * Private declarations for 2ui.c. Defined here for testing purposes.
- */
-
-#include "2api.h"
-#include "2common.h"
-
-#ifndef VBOOT_REFERENCE_2UI_PRIVATE_H_
-#define VBOOT_REFERENCE_2UI_PRIVATE_H_
-
-/* Time-related constants */
-#define KEY_DELAY_MS 20 /* Delay between key scans in UI loops */
-#define DEV_DELAY_SHORT_MS (2 * VB2_MSEC_PER_SEC) /* 2 seconds */
-#define DEV_DELAY_NORMAL_MS (30 * VB2_MSEC_PER_SEC) /* 30 seconds */
-#define DEV_DELAY_BEEP1_MS (20 * VB2_MSEC_PER_SEC) /* 20 seconds */
-#define DEV_DELAY_BEEP2_MS (20 * VB2_MSEC_PER_SEC + 500) /* 20.5 seconds */
-
-/* From 2ui.c */
-vb2_error_t vb2_check_shutdown_request(struct vb2_ui_context *ui);
-const struct vb2_menu *vb2_get_menu(struct vb2_ui_context *ui);
-vb2_error_t vb2_error_exit_action(struct vb2_ui_context *ui);
-vb2_error_t vb2_menu_navigation_action(struct vb2_ui_context *ui);
-vb2_error_t
-vb2_ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id,
- vb2_error_t (*global_action)(struct vb2_ui_context *ui));
-vb2_error_t developer_action(struct vb2_ui_context *ui);
-vb2_error_t manual_recovery_action(struct vb2_ui_context *ui);
-
-/* From 2ui_screens.c */
-const struct vb2_menu *vb2_get_language_menu(struct vb2_ui_context *ui);
-vb2_error_t vb2_advanced_options_init(struct vb2_ui_context *ui);
-vb2_error_t recovery_select_init(struct vb2_ui_context *ui);
-vb2_error_t recovery_to_dev_init(struct vb2_ui_context *ui);
-vb2_error_t recovery_to_dev_confirm_action(struct vb2_ui_context *ui);
-vb2_error_t recovery_to_dev_action(struct vb2_ui_context *ui);
-vb2_error_t developer_mode_init(struct vb2_ui_context *ui);
-vb2_error_t developer_mode_action(struct vb2_ui_context *ui);
-vb2_error_t developer_to_norm_action(struct vb2_ui_context *ui);
-
-#endif /* VBOOT_REFERENCE_2UI_PRIVATE_H_ */