summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2018-01-02 15:40:04 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-01-11 08:37:29 +0000
commitb508dce0bd741b438745ec5c09549d33a98efa25 (patch)
treeba43b9470a7f494699eaf7b59c484320616a0a47
parentaf49cc17948972507fcf8a4bd47dbd445ec72006 (diff)
downloadvboot-b508dce0bd741b438745ec5c09549d33a98efa25.tar.gz
firmware: Remove bmpblk code
All screens are now drawn by depthcharge. ToT firmware does not include a bmpblk / bmpfv section in the GBB. Remove the code paths which are no longer used. Also drop a few cparams parameters from functions that no longer use it, now that those functions don't need to access the GBB. BUG=chromium:502066 BRANCH=none TEST=make -j runtests; build bob firmware and check recovery screens Change-Id: I4d2d0a3ba57c34151e65c6f42581df823192a4ae Signed-off-by: Randall Spangler <rspangler@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/852371 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Stefan Reinauer <reinauer@chromium.org> (cherry picked from commit 7d92bd8a6ba2640cc6588607af9886c9ecef4127) Reviewed-on: https://chromium-review.googlesource.com/861610 Reviewed-by: Shelley Chen <shchen@chromium.org> Commit-Queue: Shelley Chen <shchen@chromium.org> Tested-by: Shelley Chen <shchen@chromium.org>
-rw-r--r--firmware/2lib/include/2struct.h2
-rw-r--r--firmware/include/gbb_access.h31
-rw-r--r--firmware/include/gbb_header.h2
-rw-r--r--firmware/include/vboot_api.h3
-rw-r--r--firmware/lib/ec_sync_all.c2
-rw-r--r--firmware/lib/include/vboot_display.h32
-rw-r--r--firmware/lib/region-kernel.c113
-rw-r--r--firmware/lib/vboot_api_kernel.c5
-rw-r--r--firmware/lib/vboot_display.c340
-rw-r--r--firmware/lib/vboot_ui.c41
-rw-r--r--firmware/lib/vboot_ui_menu.c38
-rw-r--r--tests/ec_sync_tests.c3
-rw-r--r--tests/vboot_api_kernel2_tests.c3
-rw-r--r--tests/vboot_detach_menu_tests.c6
-rw-r--r--tests/vboot_display_tests.c96
15 files changed, 61 insertions, 656 deletions
diff --git a/firmware/2lib/include/2struct.h b/firmware/2lib/include/2struct.h
index 9c75ba44..9ae1f540 100644
--- a/firmware/2lib/include/2struct.h
+++ b/firmware/2lib/include/2struct.h
@@ -305,7 +305,7 @@ struct vb2_gbb_header {
uint32_t hwid_size;
uint32_t rootkey_offset; /* Root key */
uint32_t rootkey_size;
- uint32_t bmpfv_offset; /* BMP FV */
+ uint32_t bmpfv_offset; /* BMP FV; deprecated in current FW */
uint32_t bmpfv_size;
uint32_t recovery_key_offset; /* Recovery key */
uint32_t recovery_key_size;
diff --git a/firmware/include/gbb_access.h b/firmware/include/gbb_access.h
index 965f7fac..7b11dc85 100644
--- a/firmware/include/gbb_access.h
+++ b/firmware/include/gbb_access.h
@@ -49,35 +49,4 @@ VbError_t VbGbbReadRootKey(VbCommonParams *cparams,
VbError_t VbGbbReadRecoveryKey(VbCommonParams *cparams,
struct VbPublicKey **keyp);
-/**
- * Read the bitmap block header from the GBB
- *
- * @param cparams Vboot common parameters
- * @param hdr The header is placed in this block
- * @return VBERROR_... error, VBERROR_SUCCESS on success,
- */
-VbError_t VbGbbReadBmpHeader(VbCommonParams *cparams,
- struct BmpBlockHeader *hdr);
-
-/**
- * Read a image from the GBB
- *
- * The caller must call free() on *image_datap when finished with it.
- *
- * @param cparams Vboot common parameters
- * @param localization Localization/language number
- * @param screen_index Index of screen to display (VB_SCREEN_...)
- * @param image_num Image number within the screen
- * @param layout Returns layout information (x, y position)
- * @param image_info Returns information about the image (format)
- * @param image_datap Returns a pointer to the image data
- * @param iamge_data_sizep Return size of image data
- * @return VBERROR_... error, VBERROR_SUCCESS on success,
- */
-VbError_t VbGbbReadImage(VbCommonParams *cparams,
- uint32_t localization, uint32_t screen_index,
- uint32_t image_num, struct ScreenLayout *layout,
- struct ImageInfo *image_info, char **image_datap,
- uint32_t *image_data_sizep);
-
#endif
diff --git a/firmware/include/gbb_header.h b/firmware/include/gbb_header.h
index 0eef7314..4503ffaa 100644
--- a/firmware/include/gbb_header.h
+++ b/firmware/include/gbb_header.h
@@ -95,7 +95,7 @@ typedef struct GoogleBinaryBlockHeader
uint32_t hwid_size;
uint32_t rootkey_offset; /* Root key */
uint32_t rootkey_size;
- uint32_t bmpfv_offset; /* BMP FV */
+ uint32_t bmpfv_offset; /* BMP FV; deprecated in current FW */
uint32_t bmpfv_size;
uint32_t recovery_key_offset; /* Recovery key */
uint32_t recovery_key_size;
diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h
index c71dfbf1..aa3ba2c9 100644
--- a/firmware/include/vboot_api.h
+++ b/firmware/include/vboot_api.h
@@ -122,7 +122,7 @@ enum VbErrorPredefined_t {
VBERROR_REGION_READ_FAILED = 0x10024,
/* Unsupported region type */
VBERROR_UNSUPPORTED_REGION = 0x10025,
- /* No image present (returned from VbGbbReadImage() for missing image) */
+ /* No image present (was returned from VbGbbReadImage(); deprecated */
VBERROR_NO_IMAGE_PRESENT = 0x10026,
/* failed to draw screen */
VBERROR_SCREEN_DRAW = 0x10027,
@@ -196,7 +196,6 @@ typedef struct VbCommonParams {
/* For internal use of Vboot - do not examine or modify! */
struct GoogleBinaryBlockHeader *gbb;
- struct BmpBlockHeader *bmp;
} VbCommonParams;
/* Flags for VbInitParams.flags */
diff --git a/firmware/lib/ec_sync_all.c b/firmware/lib/ec_sync_all.c
index 1d9c7f71..f27ab3cc 100644
--- a/firmware/lib/ec_sync_all.c
+++ b/firmware/lib/ec_sync_all.c
@@ -57,7 +57,7 @@ VbError_t ec_sync_all(struct vb2_context *ctx, struct VbCommonParams *cparams)
/* Display the wait screen if we need it */
if (need_wait_screen) {
VB2_DEBUG("EC is slow. Show WAIT screen.\n");
- VbDisplayScreen(ctx, cparams, VB_SCREEN_WAIT, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_WAIT, 0);
}
/* Phase 2; Applies update and/or jumps to the correct EC image */
diff --git a/firmware/lib/include/vboot_display.h b/firmware/lib/include/vboot_display.h
index fbb04e13..8e6a4546 100644
--- a/firmware/lib/include/vboot_display.h
+++ b/firmware/lib/include/vboot_display.h
@@ -8,48 +8,20 @@
#ifndef VBOOT_REFERENCE_VBOOT_DISPLAY_H_
#define VBOOT_REFERENCE_VBOOT_DISPLAY_H_
-#include "bmpblk_font.h"
-
struct vb2_context;
-VbError_t VbDisplayScreenFromGBB(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen,
- uint32_t locale);
-VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams,
- uint32_t screen, int force);
-VbError_t VbDisplayMenu(struct vb2_context *ctx, VbCommonParams *cparams,
+VbError_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force);
+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, VbCommonParams *cparams);
VbError_t VbCheckDisplayKey(struct vb2_context *ctx, VbCommonParams *cparams,
uint32_t key);
-/* Internal functions, for unit testing */
-
-typedef FontArrayHeader VbFont_t;
-
-VbFont_t *VbInternalizeFontData(FontArrayHeader *fonthdr);
-
-void VbDoneWithFontForNow(VbFont_t *ptr);
-
-ImageInfo *VbFindFontGlyph(VbFont_t *font, uint32_t ascii,
- void **bufferptr, uint32_t *buffersize);
-
-/**
- * Try to display the specified text at a particular position.
- */
-void VbRenderTextAtPos(const char *text, int right_to_left,
- uint32_t x, uint32_t y, VbFont_t *font);
-
/**
* Return a description of the recovery reason code.
*/
const char *RecoveryReasonString(uint8_t code);
-/**
- * Get the number of localizations in the GBB bitmap data.
- */
-VbError_t VbGetLocalizationCount(VbCommonParams *cparams, uint32_t *count);
-
#endif /* VBOOT_REFERENCE_VBOOT_DISPLAY_H_ */
diff --git a/firmware/lib/region-kernel.c b/firmware/lib/region-kernel.c
index 7041b4f6..404c189d 100644
--- a/firmware/lib/region-kernel.c
+++ b/firmware/lib/region-kernel.c
@@ -25,45 +25,6 @@ static VbError_t VbRegionReadGbb(VbCommonParams *cparams, uint32_t offset,
return VbRegionReadData(cparams, VB_REGION_GBB, offset, size, buf);
}
-VbError_t VbGbbReadBmpHeader(VbCommonParams *cparams, BmpBlockHeader *hdr_ret)
-{
- BmpBlockHeader *hdr;
- VbError_t ret;
-
- if (!cparams)
- return VBERROR_INVALID_GBB;
- if (!cparams->bmp) {
- GoogleBinaryBlockHeader *gbb = cparams->gbb;
-
- if (0 == gbb->bmpfv_size)
- return VBERROR_INVALID_GBB;
-
- hdr = malloc(sizeof(*hdr));
- ret = VbRegionReadGbb(cparams, gbb->bmpfv_offset,
- sizeof(BmpBlockHeader), hdr);
- if (ret) {
- free(hdr);
- return ret;
- }
-
- /* Sanity-check the bitmap block header */
- if ((0 != memcmp(hdr->signature, BMPBLOCK_SIGNATURE,
- BMPBLOCK_SIGNATURE_SIZE)) ||
- (hdr->major_version > BMPBLOCK_MAJOR_VERSION) ||
- ((hdr->major_version == BMPBLOCK_MAJOR_VERSION) &&
- (hdr->minor_version > BMPBLOCK_MINOR_VERSION))) {
- VB2_DEBUG("VbGbbReadBmpHeader(): "
- "invalid/too new bitmap header\n");
- free(hdr);
- return VBERROR_INVALID_BMPFV;
- }
- cparams->bmp = hdr;
- }
-
- *hdr_ret = *cparams->bmp;
- return VBERROR_SUCCESS;
-}
-
VbError_t VbRegionReadHWID(VbCommonParams *cparams, char *hwid,
uint32_t max_size)
{
@@ -95,80 +56,6 @@ VbError_t VbRegionReadHWID(VbCommonParams *cparams, char *hwid,
return VBERROR_SUCCESS;
}
-VbError_t VbGbbReadImage(VbCommonParams *cparams,
- uint32_t localization, uint32_t screen_index,
- uint32_t image_num, ScreenLayout *layout,
- ImageInfo *image_info, char **image_datap,
- uint32_t *image_data_sizep)
-{
- uint32_t layout_offset, image_offset, data_offset, data_size;
- GoogleBinaryBlockHeader *gbb;
- BmpBlockHeader hdr;
- void *data = NULL;
- VbError_t ret;
-
- if (!cparams)
- return VBERROR_INVALID_GBB;
-
- ret = VbGbbReadBmpHeader(cparams, &hdr);
- if (ret)
- return ret;
-
- gbb = cparams->gbb;
- layout_offset = gbb->bmpfv_offset + sizeof(BmpBlockHeader) +
- localization * hdr.number_of_screenlayouts *
- sizeof(ScreenLayout) +
- screen_index * sizeof(ScreenLayout);
- ret = VbRegionReadGbb(cparams, layout_offset, sizeof(*layout), layout);
- if (ret)
- return ret;
-
- if (!layout->images[image_num].image_info_offset)
- return VBERROR_NO_IMAGE_PRESENT;
-
- image_offset = gbb->bmpfv_offset +
- layout->images[image_num].image_info_offset;
- ret = VbRegionReadGbb(cparams, image_offset, sizeof(*image_info),
- image_info);
- if (ret)
- return ret;
-
- data_offset = image_offset + sizeof(*image_info);
- data_size = image_info->compressed_size;
- if (data_size) {
- void *orig_data;
-
- data = malloc(image_info->compressed_size);
- ret = VbRegionReadGbb(cparams, data_offset,
- image_info->compressed_size, data);
- if (ret) {
- free(data);
- return ret;
- }
- if (image_info->compression != COMPRESS_NONE) {
- uint32_t inoutsize = image_info->original_size;
-
- orig_data = malloc(image_info->original_size);
- ret = VbExDecompress(data,
- image_info->compressed_size,
- image_info->compression,
- orig_data, &inoutsize);
- data_size = inoutsize;
- free(data);
- data = orig_data;
- if (ret) {
- free(data);
- return ret;
- }
- }
- }
-
- *image_datap = data;
- *image_data_sizep = data_size;
-
- return VBERROR_SUCCESS;
-}
-
#define OUTBUF_LEN 128
void VbRegionCheckVersion(VbCommonParams *cparams)
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index fd0556b5..897f7884 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -242,10 +242,6 @@ void VbApiKernelFree(VbCommonParams *cparams)
free(cparams->gbb);
cparams->gbb = NULL;
}
- if (cparams->bmp) {
- free(cparams->bmp);
- cparams->bmp = NULL;
- }
}
static VbError_t vb2_kernel_setup(VbCommonParams *cparams,
@@ -324,7 +320,6 @@ static VbError_t vb2_kernel_setup(VbCommonParams *cparams,
memset(kparams->partition_guid, 0, sizeof(kparams->partition_guid));
/* Read GBB header, since we'll needs flags from it */
- cparams->bmp = NULL;
cparams->gbb = malloc(sizeof(*cparams->gbb));
uint32_t retval = VbGbbReadHeader_static(cparams, cparams->gbb);
if (retval)
diff --git a/firmware/lib/vboot_display.c b/firmware/lib/vboot_display.c
index ac6d7131..3d12244d 100644
--- a/firmware/lib/vboot_display.c
+++ b/firmware/lib/vboot_display.c
@@ -24,335 +24,16 @@
static uint32_t disp_current_screen = VB_SCREEN_BLANK;
static uint32_t disp_current_index = 0;
static uint32_t disp_disabled_idx_mask = 0;
-static uint32_t disp_width = 0, disp_height = 0;
__attribute__((weak))
VbError_t VbExGetLocalizationCount(uint32_t *count) {
- return VBERROR_UNKNOWN;
-}
-
-VbError_t VbGetLocalizationCount(VbCommonParams *cparams, uint32_t *count)
-{
- BmpBlockHeader hdr;
- VbError_t ret;
-
- /* Default to 0 on error */
*count = 0;
-
- /* First try to get the count from GBB */
- ret = VbGbbReadBmpHeader(cparams, &hdr);
- if (ret == VBERROR_SUCCESS) {
- *count = hdr.number_of_localizations;
- return ret;
- }
-
- /* If GBB is broken or missing, fallback to the callback */
- return VbExGetLocalizationCount(count);
-}
-
-/*
- * TODO: We could cache the font info to speed things up, by making the
- * in-memory font structure distinct from the in-flash version. We'll do that
- * Real Soon Now. Until then, we just repeat the same linear search every time.
- */
-
-VbFont_t *VbInternalizeFontData(FontArrayHeader *fonthdr)
-{
- /* Just return the raw data pointer for now. */
- return (VbFont_t *)fonthdr;
-}
-
-void VbDoneWithFontForNow(VbFont_t *ptr)
-{
- /* Nothing. */
-}
-
-ImageInfo *VbFindFontGlyph(VbFont_t *font, uint32_t ascii,
- void **bufferptr, uint32_t *buffersize)
-{
- uint8_t *ptr, *firstptr;
- uint32_t max;
- uint32_t i;
- FontArrayEntryHeader *entry;
-
- ptr = (uint8_t *)font;
- max = ((FontArrayHeader *)ptr)->num_entries;
- ptr += sizeof(FontArrayHeader);
- firstptr = ptr;
-
- /*
- * Simple linear search.
- *
- * Note: We're assuming glpyhs are uncompressed. That's true because
- * the bmpblk_font tool doesn't compress anything. The bmpblk_utility
- * does, but it compresses the entire font blob at once, and we've
- * already uncompressed that before we got here.
- */
- for(i=0; i<max; i++) {
- entry = (FontArrayEntryHeader *)ptr;
- if (entry->ascii == ascii) {
- *bufferptr = ptr + sizeof(FontArrayEntryHeader);
- *buffersize = entry->info.original_size;
- return &(entry->info);
- }
- ptr += sizeof(FontArrayEntryHeader)+entry->info.compressed_size;
- }
-
- /*
- * We must return something valid. We'll just use the first glyph in
- * the font structure (so it should be something distinct).
- */
- entry = (FontArrayEntryHeader *)firstptr;
- *bufferptr = firstptr + sizeof(FontArrayEntryHeader);
- *buffersize = entry->info.original_size;
- return &(entry->info);
-}
-
-void VbRenderTextAtPos(const char *text, int right_to_left,
- uint32_t x, uint32_t y, VbFont_t *font)
-{
- int i;
- ImageInfo *image_info = 0;
- void *buffer;
- uint32_t buffersize;
- uint32_t cur_x = x, cur_y = y;
-
- if (!text || !font) {
- VB2_DEBUG(" VbRenderTextAtPos: invalid args\n");
- return;
- }
-
- for (i=0; text[i]; i++) {
-
- if (text[i] == '\n') {
- if (!image_info)
- image_info = VbFindFontGlyph(font, text[i],
- &buffer,
- &buffersize);
- cur_x = x;
- cur_y += image_info->height;
- continue;
- }
-
- image_info = VbFindFontGlyph(font, text[i], &buffer,
- &buffersize);
-
- if (right_to_left)
- cur_x -= image_info->width;
-
- if (VBERROR_SUCCESS != VbExDisplayImage(cur_x, cur_y, buffer,
- buffersize)) {
- VB2_DEBUG(" VbRenderTextAtPos: "
- "can't display ascii 0x%x\n", text[i]);
- }
-
- if (!right_to_left)
- cur_x += image_info->width;
- }
-}
-
-VbError_t VbDisplayScreenFromGBB(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen,
- uint32_t localization)
-{
- char *fullimage = NULL;
- BmpBlockHeader hdr;
- uint32_t screen_index;
- VbError_t retval = VBERROR_UNKNOWN; /* Assume error until proven ok */
- uint32_t inoutsize;
- uint32_t i;
- VbFont_t *font;
- const char *text_to_show;
- int rtol = 0;
- VbError_t ret;
-
- ret = VbGbbReadBmpHeader(cparams, &hdr);
- if (ret)
- return ret;
-
- /*
- * Translate screen ID into index. Note that not all screens are in
- * the GBB.
- *
- * TODO: ensure screen IDs match indices? Having this translation here
- * is awful.
- */
- switch (screen) {
- case VB_SCREEN_DEVELOPER_WARNING:
- screen_index = SCREEN_DEVELOPER_WARNING;
- break;
- case VB_SCREEN_RECOVERY_REMOVE:
- screen_index = SCREEN_RECOVERY_REMOVE;
- break;
- case VB_SCREEN_RECOVERY_NO_GOOD:
- screen_index = SCREEN_RECOVERY_NO_GOOD;
- break;
- case VB_SCREEN_RECOVERY_INSERT:
- screen_index = SCREEN_RECOVERY_INSERT;
- break;
- case VB_SCREEN_RECOVERY_TO_DEV:
- screen_index = SCREEN_RECOVERY_TO_DEV;
- break;
- case VB_SCREEN_DEVELOPER_TO_NORM:
- screen_index = SCREEN_DEVELOPER_TO_NORM;
- break;
- case VB_SCREEN_WAIT:
- screen_index = SCREEN_WAIT;
- break;
- case VB_SCREEN_TO_NORM_CONFIRMED:
- screen_index = SCREEN_TO_NORM_CONFIRMED;
- break;
- case VB_SCREEN_OS_BROKEN:
- screen_index = SCREEN_OS_BROKEN;
- break;
- case VB_SCREEN_BLANK:
- case VB_SCREEN_DEVELOPER_EGG:
- default:
- /* Screens which aren't in the GBB */
- VB2_DEBUG("VbDisplayScreenFromGBB(): screen %d not in GBB\n",
- (int)screen);
- retval = VBERROR_INVALID_SCREEN_INDEX;
- goto VbDisplayScreenFromGBB_exit;
- }
-
- if (screen_index >= hdr.number_of_screenlayouts) {
- VB2_DEBUG("VbDisplayScreenFromGBB(): "
- "screen %d index %d not in the GBB\n",
- (int)screen, (int)screen_index);
- retval = VBERROR_INVALID_SCREEN_INDEX;
- goto VbDisplayScreenFromGBB_exit;
- }
-
- /* Clip localization to number of localizations present in the GBB */
- if (localization >= hdr.number_of_localizations) {
- localization = 0;
- vb2_nv_set(ctx, VB2_NV_LOCALIZATION_INDEX, localization);
- vb2_nv_set(ctx, VB2_NV_BACKUP_NVRAM_REQUEST, 1);
- }
-
- /* Display all bitmaps for the image */
- for (i = 0; i < MAX_IMAGE_IN_LAYOUT; i++) {
- ScreenLayout layout;
- ImageInfo image_info;
- char hwid[256];
-
- ret = VbGbbReadImage(cparams, localization, screen_index,
- i, &layout, &image_info,
- &fullimage, &inoutsize);
- if (ret == VBERROR_NO_IMAGE_PRESENT) {
- continue;
- } else if (ret) {
- retval = ret;
- goto VbDisplayScreenFromGBB_exit;
- }
-
- switch(image_info.format) {
- case FORMAT_BMP:
- if (i == 0) {
- /**
- * In current version GBB bitmaps, first image
- * is always the background.
- */
- ret = VbExDisplaySetDimension(
- image_info.width,
- image_info.height);
- if (ret) {
- VB2_DEBUG("VbExDisplaySetDimension"
- "(%d,%d): failed (%#x).\n",
- image_info.width,
- image_info.height, ret);
- }
- }
-
- retval = VbExDisplayImage(layout.images[i].x,
- layout.images[i].y,
- fullimage, inoutsize);
- break;
-
- case FORMAT_FONT:
- /*
- * The uncompressed blob is our font structure. Cache
- * it as needed.
- */
- font = VbInternalizeFontData(
- (FontArrayHeader *)fullimage);
-
- /* TODO: handle text in general here */
- if (TAG_HWID == image_info.tag ||
- TAG_HWID_RTOL == image_info.tag) {
- VbRegionReadHWID(cparams, hwid, sizeof(hwid));
- text_to_show = hwid;
- rtol = (TAG_HWID_RTOL == image_info.tag);
- } else {
- text_to_show = "";
- rtol = 0;
- }
-
- VbRenderTextAtPos(text_to_show, rtol,
- layout.images[i].x,
- layout.images[i].y, font);
-
- VbDoneWithFontForNow(font);
- break;
-
- default:
- VB2_DEBUG("VbDisplayScreenFromGBB(): "
- "unsupported ImageFormat %d\n",
- image_info.format);
- retval = VBERROR_INVALID_GBB;
- }
-
- free(fullimage);
-
- if (VBERROR_SUCCESS != retval)
- goto VbDisplayScreenFromGBB_exit;
- }
-
- /* Successful if all bitmaps displayed */
- retval = VBERROR_SUCCESS;
-
- VbRegionCheckVersion(cparams);
-
- VbDisplayScreenFromGBB_exit:
- VB2_DEBUG("leaving VbDisplayScreenFromGBB() with %d\n",retval);
- return retval;
-}
-
-/*
- * This is the deprecated display screen function. This should be called only
- * if bmpblk.bin is found in GBB. New devices store graphics data in cbfs
- * and screens are rendered by Depthcharge (chromium:502066).
- */
-static VbError_t VbDisplayScreenLegacy(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen,
- int force, uint32_t locale)
-{
- VbError_t retval;
-
- /* Initialize display if necessary */
- if (!disp_width) {
- retval = VbExDisplayInit(&disp_width, &disp_height);
- if (VBERROR_SUCCESS != retval)
- return retval;
- }
-
- /* If the screen is blank, turn off the backlight; else turn it on. */
- VbExDisplayBacklight(VB_SCREEN_BLANK == screen ? 0 : 1);
-
- /* Look in the GBB first */
- if (VBERROR_SUCCESS == VbDisplayScreenFromGBB(ctx, cparams, screen,
- locale))
- return VBERROR_SUCCESS;
-
- /* If screen wasn't in the GBB bitmaps, fall back to a default */
- return VbExDisplayScreen(screen, locale);
+ return VBERROR_UNKNOWN;
}
-VbError_t VbDisplayScreen(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen, int force)
+VbError_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force)
{
uint32_t locale;
- GoogleBinaryBlockHeader *gbb = cparams->gbb;
VbError_t rv;
/* If requested screen is the same as the current one, we're done. */
@@ -362,10 +43,7 @@ VbError_t VbDisplayScreen(struct vb2_context *ctx,
/* Read the locale last saved */
locale = vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
- if (gbb->bmpfv_size == 0)
- rv = VbExDisplayScreen(screen, locale);
- else
- rv = VbDisplayScreenLegacy(ctx, cparams, screen, force, locale);
+ rv = VbExDisplayScreen(screen, locale);
if (rv == VBERROR_SUCCESS)
/* Keep track of the currently displayed screen */
@@ -374,8 +52,7 @@ VbError_t VbDisplayScreen(struct vb2_context *ctx,
return rv;
}
-VbError_t VbDisplayMenu(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen, int force,
+VbError_t VbDisplayMenu(struct vb2_context *ctx, uint32_t screen, int force,
uint32_t selected_index, uint32_t disabled_idx_mask)
{
uint32_t locale;
@@ -616,7 +293,7 @@ VbError_t VbDisplayDebugInfo(struct vb2_context *ctx, VbCommonParams *cparams)
* highlighted. On a non-detachable screen, this will be a
* no-op.
*/
- VbDisplayMenu(ctx, cparams, disp_current_screen, 1,
+ VbDisplayMenu(ctx, disp_current_screen, 1,
disp_current_index, disp_disabled_idx_mask);
/* Add hardware ID */
@@ -758,7 +435,7 @@ VbError_t VbCheckDisplayKey(struct vb2_context *ctx, VbCommonParams *cparams,
uint32_t count = 0;
loc = vb2_nv_get(ctx, VB2_NV_LOCALIZATION_INDEX);
- if (VBERROR_SUCCESS != VbGetLocalizationCount(cparams, &count))
+ if (VBERROR_SUCCESS != VbExGetLocalizationCount(&count))
loc = 0; /* No localization count (bad GBB?) */
else if (VB_KEY_RIGHT == key || VB_KEY_UP == key)
loc = (loc < count - 1 ? loc + 1 : 0);
@@ -783,13 +460,12 @@ VbError_t VbCheckDisplayKey(struct vb2_context *ctx, VbCommonParams *cparams,
#endif
/* Force redraw of current screen */
- return VbDisplayScreen(ctx, cparams, disp_current_screen, 1);
+ return VbDisplayScreen(ctx, disp_current_screen, 1);
}
if (0 == memcmp(MagicBuffer, MAGIC_WORD, MAGIC_WORD_LEN)) {
if (VBEASTEREGG)
- (void)VbDisplayScreen(ctx, cparams, disp_current_screen,
- 1);
+ (void)VbDisplayScreen(ctx, disp_current_screen, 1);
}
return VBERROR_SUCCESS;
diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c
index 4057ed18..1776e4f6 100644
--- a/firmware/lib/vboot_ui.c
+++ b/firmware/lib/vboot_ui.c
@@ -213,7 +213,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
/* If dev mode is disabled, only allow TONORM */
while (disable_dev_boot) {
VB2_DEBUG("dev_disable_boot is set\n");
- VbDisplayScreen(ctx, cparams, VB_SCREEN_DEVELOPER_TO_NORM, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_DEVELOPER_TO_NORM, 0);
VbExDisplayDebugInfo(dev_disable_msg);
/* Ignore space in VbUserConfirms()... */
@@ -221,9 +221,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
case 1:
VB2_DEBUG("leaving dev-mode\n");
vb2_nv_set(ctx, VB2_NV_DISABLE_DEV_REQUEST, 1);
- VbDisplayScreen(ctx, cparams,
- VB_SCREEN_TO_NORM_CONFIRMED,
- 0);
+ VbDisplayScreen(ctx, VB_SCREEN_TO_NORM_CONFIRMED, 0);
VbExSleepMs(5000);
return VBERROR_REBOOT_REQUIRED;
case -1:
@@ -236,7 +234,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
}
/* Show the dev mode warning screen */
- VbDisplayScreen(ctx, cparams, VB_SCREEN_DEVELOPER_WARNING, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_DEVELOPER_WARNING, 0);
/* Initialize audio/delay context */
vb2_audio_start(ctx);
@@ -278,9 +276,8 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
VbExBeep(120, 400);
break;
}
- VbDisplayScreen(ctx, cparams,
- VB_SCREEN_DEVELOPER_TO_NORM,
- 0);
+ VbDisplayScreen(ctx,
+ VB_SCREEN_DEVELOPER_TO_NORM, 0);
/* Ignore space in VbUserConfirms()... */
switch (VbUserConfirms(ctx, cparams, 0)) {
case 1:
@@ -288,9 +285,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
vb2_nv_set(ctx, VB2_NV_DISABLE_DEV_REQUEST,
1);
VbDisplayScreen(ctx,
- cparams,
- VB_SCREEN_TO_NORM_CONFIRMED,
- 0);
+ VB_SCREEN_TO_NORM_CONFIRMED, 0);
VbExSleepMs(5000);
return VBERROR_REBOOT_REQUIRED;
case -1:
@@ -300,9 +295,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
/* Stay in dev-mode */
VB2_DEBUG("stay in dev-mode\n");
VbDisplayScreen(ctx,
- cparams,
- VB_SCREEN_DEVELOPER_WARNING,
- 0);
+ VB_SCREEN_DEVELOPER_WARNING, 0);
/* Start new countdown */
vb2_audio_start(ctx);
}
@@ -355,17 +348,14 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
* Clear the screen to show we get the Ctrl+U
* key press.
*/
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK,
- 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
if (VBERROR_SUCCESS ==
VbTryUsb(ctx, cparams)) {
return VBERROR_SUCCESS;
} else {
/* Show dev mode warning screen again */
VbDisplayScreen(ctx,
- cparams,
- VB_SCREEN_DEVELOPER_WARNING,
- 0);
+ VB_SCREEN_DEVELOPER_WARNING, 0);
}
}
break;
@@ -398,7 +388,7 @@ VbError_t vb2_developer_ui(struct vb2_context *ctx, VbCommonParams *cparams)
VbError_t VbBootDeveloper(struct vb2_context *ctx, VbCommonParams *cparams)
{
VbError_t retval = vb2_developer_ui(ctx, cparams);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
return retval;
}
@@ -436,7 +426,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
*/
vb2_nv_commit(ctx);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_OS_BROKEN, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_OS_BROKEN, 0);
VB2_DEBUG("VbBootRecovery() waiting for manual recovery\n");
while (1) {
key = VbExKeyboardRead();
@@ -465,7 +455,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
if (VBERROR_SUCCESS == retval)
break; /* Found a recovery kernel */
- VbDisplayScreen(ctx, cparams, VBERROR_NO_DISK_FOUND == retval ?
+ VbDisplayScreen(ctx, VBERROR_NO_DISK_FOUND == retval ?
VB_SCREEN_RECOVERY_INSERT :
VB_SCREEN_RECOVERY_NO_GOOD,
0);
@@ -504,9 +494,8 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
}
/* Ask the user to confirm entering dev-mode */
- VbDisplayScreen(ctx, cparams,
- VB_SCREEN_RECOVERY_TO_DEV,
- 0);
+ VbDisplayScreen(ctx,
+ VB_SCREEN_RECOVERY_TO_DEV, 0);
/* SPACE means no... */
uint32_t vbc_flags =
VB_CONFIRM_SPACE_MEANS_NO |
@@ -550,6 +539,6 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
VbError_t VbBootRecovery(struct vb2_context *ctx, VbCommonParams *cparams)
{
VbError_t retval = recovery_ui(ctx, cparams);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
return retval;
}
diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c
index b7f942c2..dc5e0841 100644
--- a/firmware/lib/vboot_ui_menu.c
+++ b/firmware/lib/vboot_ui_menu.c
@@ -252,7 +252,7 @@ VbError_t vb2_draw_current_screen(struct vb2_context *ctx,
screen = VB_MENU_TO_SCREEN_MAP[current_menu];
else
return VBERROR_UNKNOWN;
- return VbDisplayMenu(ctx, cparams, screen, 0,
+ return VbDisplayMenu(ctx, screen, 0,
current_menu_idx, disabled_idx_mask);
}
@@ -538,17 +538,16 @@ VbError_t vb2_set_disabled_idx_mask(uint32_t flags) {
* will not wrap, meaning that we block on the 0 or max index when
* we hit the ends of the menu.
*
- * @param cparams common params
* @param key VOL_KEY_UP = increase index selection
* VOL_KEY_DOWN = decrease index selection.
* Every other key has no effect now.
*/
-void vb2_update_selection(VbCommonParams *cparams, uint32_t key) {
+void vb2_update_selection(uint32_t key) {
int idx;
uint32_t menu_size;
if (current_menu == VB_MENU_LANGUAGES) {
- VbGetLocalizationCount(cparams, &menu_size);
+ VbExGetLocalizationCount(&menu_size);
} else {
vb2_get_current_menu_size(current_menu,
NULL, &menu_size);
@@ -706,8 +705,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams)
* Clear the screen to show we get the Ctrl+U
* key press.
*/
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK,
- 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
if (VBERROR_SUCCESS ==
VbTryUsbMenu(ctx, cparams)) {
return VBERROR_SUCCESS;
@@ -719,14 +717,14 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams)
break;
case VB_BUTTON_VOL_UP_SHORT_PRESS:
case VB_KEY_UP:
- vb2_update_selection(cparams, key);
+ vb2_update_selection(key);
vb2_draw_current_screen(ctx, cparams);
/* reset 30 second timer */
vb2_audio_start(ctx);
break;
case VB_BUTTON_VOL_DOWN_SHORT_PRESS:
case VB_KEY_DOWN:
- vb2_update_selection(cparams, key);
+ vb2_update_selection(key);
vb2_draw_current_screen(ctx, cparams);
/* reset 30 second timer */
vb2_audio_start(ctx);
@@ -791,7 +789,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams)
* Ctrl+U key press.
*/
VbDisplayScreen(ctx,
- cparams, VB_SCREEN_BLANK, 0);
+ VB_SCREEN_BLANK, 0);
if (VBERROR_SUCCESS ==
VbTryUsbMenu(ctx, cparams)) {
return VBERROR_SUCCESS;
@@ -842,9 +840,7 @@ VbError_t vb2_developer_menu(struct vb2_context *ctx, VbCommonParams *cparams)
VB2_NV_DISABLE_DEV_REQUEST,
1);
VbDisplayScreen(ctx,
- cparams,
- VB_SCREEN_TO_NORM_CONFIRMED,
- 0);
+ VB_SCREEN_TO_NORM_CONFIRMED, 0);
current_menu = VB_MENU_TO_NORM_CONFIRMED;
VbExSleepMs(5000);
return VBERROR_REBOOT_REQUIRED;
@@ -883,7 +879,7 @@ fallout:
VbError_t VbBootDeveloperMenu(struct vb2_context *ctx, VbCommonParams *cparams)
{
VbError_t retval = vb2_developer_menu(ctx, cparams);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
return retval;
}
@@ -930,7 +926,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
*/
vb2_nv_commit(ctx);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_OS_BROKEN, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_OS_BROKEN, 0);
current_menu = VB_MENU_RECOVERY_BROKEN;
VB2_DEBUG("waiting for manual recovery\n");
while (1) {
@@ -977,9 +973,8 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
if (retval == VBERROR_NO_DISK_FOUND)
vb2_draw_current_screen(ctx, cparams);
else {
- VbDisplayScreen(ctx, cparams,
- VB_SCREEN_RECOVERY_NO_GOOD,
- 0);
+ VbDisplayScreen(ctx,
+ VB_SCREEN_RECOVERY_NO_GOOD, 0);
current_menu = VB_MENU_RECOVERY_NO_GOOD;
}
}
@@ -1010,7 +1005,7 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
break;
}
- vb2_update_selection(cparams, key);
+ vb2_update_selection(key);
vb2_draw_current_screen(ctx, cparams);
break;
case VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS:
@@ -1064,9 +1059,8 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
vb2_draw_current_screen(ctx,
cparams);
else {
- VbDisplayScreen(ctx, cparams,
- VB_SCREEN_RECOVERY_NO_GOOD,
- 0);
+ VbDisplayScreen(ctx,
+ VB_SCREEN_RECOVERY_NO_GOOD, 0);
current_menu = VB_MENU_RECOVERY_NO_GOOD;
}
}
@@ -1139,6 +1133,6 @@ static VbError_t recovery_ui(struct vb2_context *ctx, VbCommonParams *cparams)
VbError_t VbBootRecoveryMenu(struct vb2_context *ctx, VbCommonParams *cparams)
{
VbError_t retval = recovery_ui(ctx, cparams);
- VbDisplayScreen(ctx, cparams, VB_SCREEN_BLANK, 0);
+ VbDisplayScreen(ctx, VB_SCREEN_BLANK, 0);
return retval;
}
diff --git a/tests/ec_sync_tests.c b/tests/ec_sync_tests.c
index 8f09af0d..20406bcc 100644
--- a/tests/ec_sync_tests.c
+++ b/tests/ec_sync_tests.c
@@ -211,8 +211,7 @@ VbError_t VbExEcUpdateImage(int devidx, enum VbSelectFirmware_t select,
return update_retval;
}
-VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams,
- uint32_t screen, int force)
+VbError_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force)
{
if (screens_count < ARRAY_SIZE(screens_displayed))
screens_displayed[screens_count++] = screen;
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index abcf1951..64fca37f 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -190,8 +190,7 @@ uint32_t VbTryLoadKernel(struct vb2_context *ctx, VbCommonParams *cparams,
return vbtlk_retval + get_info_flags;
}
-VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams,
- uint32_t screen, int force)
+VbError_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force)
{
if (screens_count < ARRAY_SIZE(screens_displayed))
screens_displayed[screens_count++] = screen;
diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c
index 7fd9ea90..3857c68d 100644
--- a/tests/vboot_detach_menu_tests.c
+++ b/tests/vboot_detach_menu_tests.c
@@ -196,8 +196,7 @@ uint32_t VbTryLoadKernel(struct vb2_context *ctx, VbCommonParams *cparams,
return vbtlk_retval + get_info_flags;
}
-VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams,
- uint32_t screen, int force)
+VbError_t VbDisplayScreen(struct vb2_context *ctx, uint32_t screen, int force)
{
if (screens_count < ARRAY_SIZE(screens_displayed))
screens_displayed[screens_count++] = screen;
@@ -206,8 +205,7 @@ VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams,
return VBERROR_SUCCESS;
}
-VbError_t VbDisplayMenu(struct vb2_context *ctx,
- VbCommonParams *cparams, uint32_t screen, int force,
+VbError_t VbDisplayMenu(struct vb2_context *ctx, uint32_t screen, int force,
uint32_t selected_index, uint32_t disabled_idx_mask)
{
if (screens_count < ARRAY_SIZE(screens_displayed))
diff --git a/tests/vboot_display_tests.c b/tests/vboot_display_tests.c
index a0f9eade..e5e0d00f 100644
--- a/tests/vboot_display_tests.c
+++ b/tests/vboot_display_tests.c
@@ -29,10 +29,10 @@ static uint8_t shared_data[VB_SHARED_DATA_MIN_SIZE];
static VbSharedDataHeader *shared = (VbSharedDataHeader *)shared_data;
static char gbb_data[4096 + sizeof(GoogleBinaryBlockHeader)];
static GoogleBinaryBlockHeader *gbb = (GoogleBinaryBlockHeader *)gbb_data;
-static BmpBlockHeader *bhdr;
static char debug_info[4096];
static struct vb2_context ctx;
static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE];
+static uint32_t mock_localization_count;
/* Reset mock data (for use before each test) */
static void ResetMocks(void)
@@ -50,14 +50,7 @@ static void ResetMocks(void)
gbb->hwid_size = strlen(gbb_data + gbb->hwid_offset) + 1;
gbb_used = (gbb_used + gbb->hwid_size + 7) & ~7;
- gbb->bmpfv_offset = gbb_used;
- bhdr = (BmpBlockHeader *)(gbb_data + gbb->bmpfv_offset);
- gbb->bmpfv_size = sizeof(BmpBlockHeader);
- gbb_used = (gbb_used + gbb->bmpfv_size + 7) & ~7;
- memcpy(bhdr->signature, BMPBLOCK_SIGNATURE, BMPBLOCK_SIGNATURE_SIZE);
- bhdr->major_version = BMPBLOCK_MAJOR_VERSION;
- bhdr->minor_version = BMPBLOCK_MINOR_VERSION;
- bhdr->number_of_localizations = 3;
+ mock_localization_count = 3;
memset(&cparams, 0, sizeof(cparams));
cparams.shared_data_size = sizeof(shared_data);
@@ -93,6 +86,15 @@ static void ResetMocks(void)
/* Mocks */
+VbError_t VbExGetLocalizationCount(uint32_t *count) {
+
+ if (mock_localization_count == 0xffffffff)
+ return VBERROR_UNKNOWN;
+
+ *count = mock_localization_count;
+ return VBERROR_SUCCESS;
+}
+
VbError_t VbExDisplayDebugInfo(const char *info_str)
{
strncpy(debug_info, info_str, sizeof(debug_info));
@@ -147,31 +149,6 @@ static void DebugInfoTest(void)
VbApiKernelFree(&cparams);
}
-/* Test localization */
-static void LocalizationTest(void)
-{
- uint32_t count = 6;
-
- ResetMocks();
- cparams.gbb->bmpfv_size = 0;
- TEST_EQ(VbGetLocalizationCount(&cparams, &count),
- VBERROR_UNKNOWN, "VbGetLocalizationCount bad gbb");
- TEST_EQ(count, 0, " count");
- VbApiKernelFree(&cparams);
-
- ResetMocks();
- bhdr->signature[0] ^= 0x5a;
- TEST_EQ(VbGetLocalizationCount(&cparams, &count),
- VBERROR_UNKNOWN, "VbGetLocalizationCount bad bmpfv");
- VbApiKernelFree(&cparams);
-
- ResetMocks();
- TEST_EQ(VbGetLocalizationCount(&cparams, &count), 0,
- "VbGetLocalizationCount()");
- TEST_EQ(count, 3, " count");
- VbApiKernelFree(&cparams);
-}
-
/* Test display key checking */
static void DisplayKeyTest(void)
{
@@ -208,66 +185,17 @@ static void DisplayKeyTest(void)
/* Reset localization if localization count is invalid */
ResetMocks();
vb2_nv_set(&ctx, VB2_NV_LOCALIZATION_INDEX, 1);
- bhdr->signature[0] ^= 0x5a;
+ mock_localization_count = 0xffffffff;
VbCheckDisplayKey(&ctx, &cparams, VB_KEY_UP);
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_LOCALIZATION_INDEX), 0,
"DisplayKey invalid");
VbApiKernelFree(&cparams);
}
-static void FontTest(void)
-{
- FontArrayHeader h;
- FontArrayEntryHeader eh[3] = {
- {
- .ascii = 'A',
- .info.original_size = 10,
- },
- {
- .ascii = 'B',
- .info.original_size = 20,
- },
- {
- .ascii = 'C',
- .info.original_size = 30,
- },
- };
- FontArrayEntryHeader *eptr;
- uint8_t buf[sizeof(h) + sizeof(eh)];
- VbFont_t *fptr;
- void *bufferptr;
- uint32_t buffersize;
-
- /* Create font data */
- h.num_entries = ARRAY_SIZE(eh);
- memcpy(buf, &h, sizeof(h));
- eptr = (FontArrayEntryHeader *)(buf + sizeof(h));
- memcpy(eptr, eh, sizeof(eh));
-
- fptr = VbInternalizeFontData((FontArrayHeader *)buf);
- TEST_PTR_EQ(fptr, buf, "Internalize");
-
- TEST_PTR_EQ(VbFindFontGlyph(fptr, 'B', &bufferptr, &buffersize),
- &eptr[1].info, "Glyph found");
- TEST_EQ(buffersize, eptr[1].info.original_size, " size");
- TEST_PTR_EQ(VbFindFontGlyph(fptr, 'X', &bufferptr, &buffersize),
- &eptr[0].info, "Glyph not found");
- TEST_EQ(buffersize, eptr[0].info.original_size, " size");
-
- /* Test invalid rendering params */
- VbRenderTextAtPos(NULL, 0, 0, 0, fptr);
- VbRenderTextAtPos("ABC", 0, 0, 0, NULL);
-
- VbDoneWithFontForNow(fptr);
-
-}
-
int main(void)
{
DebugInfoTest();
- LocalizationTest();
DisplayKeyTest();
- FontTest();
return gTestSuccess ? 0 : 255;
}