summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathew King <mathewk@chromium.org>2019-03-18 16:13:26 -0600
committerchrome-bot <chrome-bot@chromium.org>2019-03-26 04:43:05 -0700
commit4cab32fbf65910513e2e6cbda1d283d6afce59a5 (patch)
tree40768006398966fa4e44464240c8a4db72d8f16e
parentc4daa6e936a5dc2dad28bb1e07af995c05b37a99 (diff)
downloadvboot-4cab32fbf65910513e2e6cbda1d283d6afce59a5.tar.gz
Arrow keys change language on vendor data uis
BUG=b:127843397 TEST=Tested set and confirm screens on local arcada device BRANCH=none Change-Id: Ifafba3fd32a79131cf1d2059ef2147c074f3a3b6 Reviewed-on: https://chromium-review.googlesource.com/1529751 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Mathew King <mathewk@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--firmware/lib/include/vboot_display.h3
-rw-r--r--firmware/lib/vboot_display.c5
-rw-r--r--firmware/lib/vboot_ui.c14
-rw-r--r--tests/vboot_display_tests.c14
4 files changed, 20 insertions, 16 deletions
diff --git a/firmware/lib/include/vboot_display.h b/firmware/lib/include/vboot_display.h
index 4c8df0e6..99e49f1a 100644
--- a/firmware/lib/include/vboot_display.h
+++ b/firmware/lib/include/vboot_display.h
@@ -16,7 +16,8 @@ VbError_t VbDisplayMenu(struct vb2_context *ctx,
uint32_t screen, int force, uint32_t selected_index,
uint32_t disabled_idx_mask);
VbError_t VbDisplayDebugInfo(struct vb2_context *ctx);
-VbError_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key);
+VbError_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key,
+ const VbScreenData *data);
/**
* Return a description of the recovery reason code.
diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c
index c7094254..6ed5ad6c 100644
--- a/firmware/lib/vboot_display.c
+++ b/firmware/lib/vboot_display.c
@@ -412,7 +412,8 @@ VbError_t VbDisplayDebugInfo(struct vb2_context *ctx)
#define MAGIC_WORD "xyzzy"
static uint8_t MagicBuffer[MAGIC_WORD_LEN];
-VbError_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key)
+VbError_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key,
+ const VbScreenData *data)
{
int i;
@@ -457,7 +458,7 @@ VbError_t VbCheckDisplayKey(struct vb2_context *ctx, uint32_t key)
#endif
/* Force redraw of current screen */
- return VbDisplayScreen(ctx, disp_current_screen, 1, NULL);
+ return VbDisplayScreen(ctx, disp_current_screen, 1, data);
}
if (0 == memcmp(MagicBuffer, MAGIC_WORD, MAGIC_WORD_LEN)) {
diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c
index 2e3bb270..65f47986 100644
--- a/firmware/lib/vboot_ui.c
+++ b/firmware/lib/vboot_ui.c
@@ -159,7 +159,7 @@ int VbUserConfirms(struct vb2_context *ctx, uint32_t confirm_flags)
return 1;
}
}
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
}
VbExSleepMs(CONFIRM_KEY_DELAY);
}
@@ -215,7 +215,7 @@ VbError_t vb2_altfw_ui(struct vb2_context *ctx)
break;
default:
VB2_DEBUG("VbBootDeveloper() - pressed key %d\n", key);
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
break;
}
VbExSleepMs(DEV_KEY_DELAY);
@@ -296,6 +296,7 @@ VbError_t vb2_enter_vendor_data_ui(struct vb2_context *ctx, char *data_value)
break;
default:
VB2_DEBUG("Vendor Data UI - pressed key %d\n", key);
+ VbCheckDisplayKey(ctx, key, &data);
break;
}
VbExSleepMs(DEV_KEY_DELAY);
@@ -362,6 +363,7 @@ VbError_t vb2_vendor_data_ui(struct vb2_context *ctx)
}
default:
VB2_DEBUG("Vendor Data UI - pressed key %d\n", key);
+ VbCheckDisplayKey(ctx, key, &data);
break;
}
VbExSleepMs(DEV_KEY_DELAY);
@@ -444,7 +446,7 @@ VbError_t vb2_diagnostics_ui(struct vb2_context *ctx)
default:
VB2_DEBUG("vb2_diagnostics_ui() - pressed key %d\n",
key);
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
break;
}
if (VbExGetTimer() - start_time_us >= 30 * VB_USEC_PER_SEC) {
@@ -738,7 +740,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx)
break;
default:
VB2_DEBUG("VbBootDeveloper() - pressed key %d\n", key);
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
break;
}
@@ -822,7 +824,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx)
VB2_DEBUG("VbBootRecovery() waiting for manual recovery\n");
while (1) {
key = VbExKeyboardRead();
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
if (VbWantShutdown(ctx, key))
return VBERROR_SHUTDOWN_REQUESTED;
VbExSleepMs(REC_KEY_DELAY);
@@ -925,7 +927,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx)
vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 1);
return VBERROR_REBOOT_REQUIRED;
} else {
- VbCheckDisplayKey(ctx, key);
+ VbCheckDisplayKey(ctx, key, NULL);
}
if (VbWantShutdown(ctx, key))
return VBERROR_SHUTDOWN_REQUESTED;
diff --git a/tests/vboot_display_tests.c b/tests/vboot_display_tests.c
index 2c7691e1..f010ddd6 100644
--- a/tests/vboot_display_tests.c
+++ b/tests/vboot_display_tests.c
@@ -146,28 +146,28 @@ static void DebugInfoTest(void)
static void DisplayKeyTest(void)
{
ResetMocks();
- VbCheckDisplayKey(&ctx, 'q');
+ VbCheckDisplayKey(&ctx, 'q', NULL);
TEST_EQ(*debug_info, '\0', "DisplayKey q = does nothing");
ResetMocks();
- VbCheckDisplayKey(&ctx, '\t');
+ VbCheckDisplayKey(&ctx, '\t', NULL);
TEST_NEQ(*debug_info, '\0', "DisplayKey tab = display");
/* Toggle localization */
ResetMocks();
vb2_nv_set(&ctx, VB2_NV_LOCALIZATION_INDEX, 0);
- VbCheckDisplayKey(&ctx, VB_KEY_DOWN);
+ VbCheckDisplayKey(&ctx, VB_KEY_DOWN, NULL);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 2,
"DisplayKey up");
- VbCheckDisplayKey(&ctx, VB_KEY_LEFT);
+ VbCheckDisplayKey(&ctx, VB_KEY_LEFT, NULL);
vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 1,
"DisplayKey left");
- VbCheckDisplayKey(&ctx, VB_KEY_RIGHT);
+ VbCheckDisplayKey(&ctx, VB_KEY_RIGHT, NULL);
vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 2,
"DisplayKey right");
- VbCheckDisplayKey(&ctx, VB_KEY_UP);
+ VbCheckDisplayKey(&ctx, VB_KEY_UP, NULL);
vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 0,
"DisplayKey up");
@@ -176,7 +176,7 @@ static void DisplayKeyTest(void)
ResetMocks();
vb2_nv_set(&ctx, VB2_NV_LOCALIZATION_INDEX, 1);
mock_localization_count = 0xffffffff;
- VbCheckDisplayKey(&ctx, VB_KEY_UP);
+ VbCheckDisplayKey(&ctx, VB_KEY_UP, NULL);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 0,
"DisplayKey invalid");
}