vboot/ui: Pass screen and locale_id to vb2ex_prepare_log_screen()

To support multi-line title for log screens, we need to support
different size of log box in each screen. Therefore, pass the screen and
locale information to vb2ex_prepare_log_screen() so that the number of
lines per page can be determined.

BUG=b:165187866
TEST=emerge-asurada depthcharge
BRANCH=none

Cq-Depend: chromium:2522156
Change-Id: I652d6261ed559a948e7bd578da3ec81d54374039
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2522416
Reviewed-by: Hsuan Ting Chen <roccochen@chromium.org>
Reviewed-by: Joel Kitching <kitching@chromium.org>
This commit is contained in:
Yu-Ping Wu 2020-11-06 11:24:22 +08:00 committed by Commit Bot
parent 9a820d7351
commit abcd6d2454
4 changed files with 20 additions and 9 deletions

View File

@ -87,7 +87,8 @@ const char *vb2ex_get_firmware_log(int reset)
}
__attribute__((weak))
uint32_t vb2ex_prepare_log_screen(const char *str)
uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
const char *str)
{
return 1;
}

View File

@ -297,7 +297,8 @@ static vb2_error_t debug_info_init(struct vb2_ui_context *ui)
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare debug info screen\n");
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
@ -315,7 +316,8 @@ static vb2_error_t debug_info_reinit(struct vb2_ui_context *ui)
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare debug info screen\n");
ui->error_code = VB2_UI_ERROR_DEBUG_LOG;
@ -359,7 +361,8 @@ static vb2_error_t firmware_log_init(struct vb2_ui_context *ui)
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare firmware log screen\n");
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
@ -377,7 +380,8 @@ static vb2_error_t firmware_log_reinit(struct vb2_ui_context *ui)
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare firmware log screen\n");
ui->error_code = VB2_UI_ERROR_FIRMWARE_LOG;
@ -1082,7 +1086,8 @@ static vb2_error_t diagnostics_storage_init(struct vb2_ui_context *ui)
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare storage log screen\n");
ui->error_code = VB2_UI_ERROR_DIAGNOSTICS;
@ -1140,7 +1145,8 @@ static vb2_error_t diagnostics_memory_update_screen(struct vb2_ui_context *ui,
return vb2_ui_screen_back(ui);
}
ui->state->page_count = vb2ex_prepare_log_screen(log_string);
ui->state->page_count = vb2ex_prepare_log_screen(
ui->state->screen->id, ui->locale_id, log_string);
if (ui->state->page_count == 0) {
VB2_DEBUG("ERROR: Failed to prepare memory log screen, error: "
"%#x\n", rv);

View File

@ -1491,10 +1491,13 @@ const char *vb2ex_get_firmware_log(int reset);
* pages in the log string is returned. If the log string ever changes, this
* function should be called again before the next vb2ex_display_ui() call.
*
* @param screen Screen to display the log.
* @param locale_id Id of current locale.
* @param str The log string to display.
* @return The number of pages after pagination. 0 if none or error.
*/
uint32_t vb2ex_prepare_log_screen(const char *str);
uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
const char *str);
/**
* Get the full storage diagnostic log.

View File

@ -560,7 +560,8 @@ const char *vb2ex_get_firmware_log(int reset)
return mock_firmware_log_buf;
}
uint32_t vb2ex_prepare_log_screen(const char *str)
uint32_t vb2ex_prepare_log_screen(enum vb2_screen screen, uint32_t locale_id,
const char *str)
{
if (mock_prepare_log_count < ARRAY_SIZE(mock_prepare_log))
strncpy(mock_prepare_log[mock_prepare_log_count],