| /** @file |
| This file defines the encoding for the VFR (Visual Form Representation) language. |
| IFR is primarily consumed by the EFI presentation engine, and produced by EFI |
| internal application and drivers as well as all add-in card option-ROM drivers |
| |
| Copyright (c) 2006 - 2008, Intel Corporation |
| All rights reserved. This program and the accompanying materials |
| are licensed and made available under the terms and conditions of the BSD License |
| which accompanies this distribution. The full text of the license may be found at |
| http://opensource.org/licenses/bsd-license.php |
| |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| @par Revision Reference: |
| These definitions are from UEFI2.1. |
| |
| **/ |
| |
| #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__ |
| #define __UEFI_INTERNAL_FORMREPRESENTATION_H__ |
| |
| /// |
| /// The following types are currently defined: |
| /// |
| typedef VOID* EFI_HII_HANDLE; |
| typedef CHAR16* EFI_STRING; |
| typedef UINT16 EFI_IMAGE_ID; |
| typedef UINT16 EFI_QUESTION_ID; |
| typedef UINT16 EFI_STRING_ID; |
| typedef UINT16 EFI_FORM_ID; |
| typedef UINT16 EFI_VARSTORE_ID; |
| |
| typedef UINT16 EFI_DEFAULT_ID; |
| |
| typedef UINT32 EFI_HII_FONT_STYLE; |
| |
| |
| |
| #pragma pack(1) |
| |
| // |
| // Definitions for Package Lists and Package Headers |
| // Section 27.3.1 |
| // |
| |
| /// |
| /// The header found at the start of each package list. |
| /// |
| typedef struct { |
| EFI_GUID PackageListGuid; |
| UINT32 PackageLength; |
| } EFI_HII_PACKAGE_LIST_HEADER; |
| |
| /// |
| /// The header found at the start of each package. |
| /// |
| typedef struct { |
| UINT32 Length:24; |
| UINT32 Type:8; |
| // UINT8 Data[...]; |
| } EFI_HII_PACKAGE_HEADER; |
| |
| // |
| // Value of HII package type |
| // |
| #define EFI_HII_PACKAGE_TYPE_ALL 0x00 |
| #define EFI_HII_PACKAGE_TYPE_GUID 0x01 |
| #define EFI_HII_PACKAGE_FORMS 0x02 |
| #define EFI_HII_PACKAGE_STRINGS 0x04 |
| #define EFI_HII_PACKAGE_FONTS 0x05 |
| #define EFI_HII_PACKAGE_IMAGES 0x06 |
| #define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07 |
| #define EFI_HII_PACKAGE_DEVICE_PATH 0x08 |
| #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09 |
| #define EFI_HII_PACKAGE_END 0xDF |
| #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0 |
| #define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF |
| |
| // |
| // Definitions for Simplified Font Package |
| // Section 27.3.2 |
| // |
| |
| // |
| // Contents of EFI_NARROW_GLYPH.Attributes |
| // |
| #define EFI_GLYPH_NON_SPACING 0x01 |
| #define EFI_GLYPH_WIDE 0x02 |
| #define EFI_GLYPH_HEIGHT 19 |
| #define EFI_GLYPH_WIDTH 8 |
| |
| typedef struct { |
| CHAR16 UnicodeWeight; |
| UINT8 Attributes; |
| UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; |
| } EFI_NARROW_GLYPH; |
| |
| typedef struct { |
| CHAR16 UnicodeWeight; |
| UINT8 Attributes; |
| UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; |
| UINT8 GlyphCol2[EFI_GLYPH_HEIGHT]; |
| UINT8 Pad[3]; |
| } EFI_WIDE_GLYPH; |
| |
| /// |
| /// A simplified font package consists of a font header |
| /// followed by a series of glyph structures. |
| /// |
| typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| UINT16 NumberOfNarrowGlyphs; |
| UINT16 NumberOfWideGlyphs; |
| // EFI_NARROW_GLYPH NarrowGlyphs[]; |
| // EFI_WIDE_GLYPH WideGlyphs[]; |
| } EFI_HII_SIMPLE_FONT_PACKAGE_HDR; |
| |
| // |
| // Definitions for Font Package |
| // Section 27.3.3 |
| // |
| |
| // |
| // Value for font style |
| // |
| #define EFI_HII_FONT_STYLE_NORMAL 0x00000000 |
| #define EFI_HII_FONT_STYLE_BOLD 0x00000001 |
| #define EFI_HII_FONT_STYLE_ITALIC 0x00000002 |
| #define EFI_HII_FONT_STYLE_EMBOSS 0x00010000 |
| #define EFI_HII_FONT_STYLE_OUTLINE 0x00020000 |
| #define EFI_HII_FONT_STYLE_SHADOW 0x00040000 |
| #define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000 |
| #define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000 |
| |
| typedef struct _EFI_HII_GLYPH_INFO { |
| UINT16 Width; |
| UINT16 Height; |
| INT16 OffsetX; |
| INT16 OffsetY; |
| INT16 AdvanceX; |
| } EFI_HII_GLYPH_INFO; |
| |
| /// |
| /// The fixed header consists of a standard record header and |
| /// then the character values in this section, the flags |
| /// (including the encoding method) and the offsets of the glyph |
| /// information, the glyph bitmaps and the character map. |
| /// |
| typedef struct _EFI_HII_FONT_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| UINT32 HdrSize; |
| UINT32 GlyphBlockOffset; |
| EFI_HII_GLYPH_INFO Cell; |
| EFI_HII_FONT_STYLE FontStyle; |
| CHAR16 FontFamily[1]; |
| } EFI_HII_FONT_PACKAGE_HDR; |
| |
| // |
| // Value of different glyph info block types |
| // |
| #define EFI_HII_GIBT_END 0x00 |
| #define EFI_HII_GIBT_GLYPH 0x10 |
| #define EFI_HII_GIBT_GLYPHS 0x11 |
| #define EFI_HII_GIBT_GLYPH_DEFAULT 0x12 |
| #define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13 |
| #define EFI_HII_GIBT_DUPLICATE 0x20 |
| #define EFI_HII_GIBT_SKIP2 0x21 |
| #define EFI_HII_GIBT_SKIP1 0x22 |
| #define EFI_HII_GIBT_DEFAULTS 0x23 |
| #define EFI_HII_GIBT_EXT1 0x30 |
| #define EFI_HII_GIBT_EXT2 0x31 |
| #define EFI_HII_GIBT_EXT4 0x32 |
| |
| typedef struct _EFI_HII_GLYPH_BLOCK { |
| UINT8 BlockType; |
| } EFI_HII_GLYPH_BLOCK; |
| |
| // |
| // Definition of different glyph info block types |
| // |
| |
| typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| EFI_HII_GLYPH_INFO Cell; |
| } EFI_HII_GIBT_DEFAULTS_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| CHAR16 CharValue; |
| } EFI_HII_GIBT_DUPLICATE_BLOCK; |
| |
| typedef struct _EFI_GLYPH_GIBT_END_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| } EFI_GLYPH_GIBT_END_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_EXT1_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT8 BlockType2; |
| UINT8 Length; |
| } EFI_HII_GIBT_EXT1_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_EXT2_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT8 BlockType2; |
| UINT16 Length; |
| } EFI_HII_GIBT_EXT2_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_EXT4_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT8 BlockType2; |
| UINT32 Length; |
| } EFI_HII_GIBT_EXT4_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_GLYPH_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| EFI_HII_GLYPH_INFO Cell; |
| UINT8 BitmapData[1]; |
| } EFI_HII_GIBT_GLYPH_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| EFI_HII_GLYPH_INFO Cell; |
| UINT16 Count; |
| UINT8 BitmapData[1]; |
| } EFI_HII_GIBT_GLYPHS_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT8 BitmapData[1]; |
| } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT16 Count; |
| UINT8 BitmapData[1]; |
| } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_SKIP1_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT8 SkipCount; |
| } EFI_HII_GIBT_SKIP1_BLOCK; |
| |
| typedef struct _EFI_HII_GIBT_SKIP2_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| UINT16 SkipCount; |
| } EFI_HII_GIBT_SKIP2_BLOCK; |
| |
| // |
| // Definitions for Device Path Package |
| // Section 27.3.4 |
| // |
| |
| /// |
| /// The device path package is used to carry a device path |
| /// associated with the package list. |
| /// |
| typedef struct _EFI_HII_DEVICE_PATH_PACKAGE { |
| EFI_HII_PACKAGE_HEADER Header; |
| // EFI_DEVICE_PATH_PROTOCOL DevicePath[]; |
| } EFI_HII_DEVICE_PATH_PACKAGE; |
| |
| // |
| // Definitions for GUID Package |
| // Section 27.3.5 |
| // |
| |
| /// |
| /// The GUID package is used to carry data where the format is defined by a GUID. |
| /// |
| typedef struct _EFI_HII_GUID_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| EFI_GUID Guid; |
| // Data per GUID definition may follow |
| } EFI_HII_GUID_PACKAGE_HDR; |
| |
| // |
| // Definitions for String Package |
| // Section 27.3.6 |
| // |
| |
| #define UEFI_CONFIG_LANG L"x-UEFI" |
| #define UEFI_CONFIG_LANG2 L"x-i-UEFI" |
| |
| /// |
| /// The fixed header consists of a standard record header and then the string identifiers |
| /// contained in this section and the offsets of the string and language information. |
| /// |
| typedef struct _EFI_HII_STRING_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| UINT32 HdrSize; |
| UINT32 StringInfoOffset; |
| CHAR16 LanguageWindow[16]; |
| EFI_STRING_ID LanguageName; |
| CHAR8 Language[1]; |
| } EFI_HII_STRING_PACKAGE_HDR; |
| |
| typedef struct { |
| UINT8 BlockType; |
| } EFI_HII_STRING_BLOCK; |
| |
| // |
| // Value of different string information block types |
| // |
| #define EFI_HII_SIBT_END 0x00 |
| #define EFI_HII_SIBT_STRING_SCSU 0x10 |
| #define EFI_HII_SIBT_STRING_SCSU_FONT 0x11 |
| #define EFI_HII_SIBT_STRINGS_SCSU 0x12 |
| #define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13 |
| #define EFI_HII_SIBT_STRING_UCS2 0x14 |
| #define EFI_HII_SIBT_STRING_UCS2_FONT 0x15 |
| #define EFI_HII_SIBT_STRINGS_UCS2 0x16 |
| #define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17 |
| #define EFI_HII_SIBT_DUPLICATE 0x20 |
| #define EFI_HII_SIBT_SKIP2 0x21 |
| #define EFI_HII_SIBT_SKIP1 0x22 |
| #define EFI_HII_SIBT_EXT1 0x30 |
| #define EFI_HII_SIBT_EXT2 0x31 |
| #define EFI_HII_SIBT_EXT4 0x32 |
| #define EFI_HII_SIBT_FONT 0x40 |
| |
| // |
| // Definition of different string information block types |
| // |
| |
| typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| EFI_STRING_ID StringId; |
| } EFI_HII_SIBT_DUPLICATE_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_END_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| } EFI_HII_SIBT_END_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_EXT1_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 BlockType2; |
| UINT8 Length; |
| } EFI_HII_SIBT_EXT1_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_EXT2_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 BlockType2; |
| UINT16 Length; |
| } EFI_HII_SIBT_EXT2_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_EXT4_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 BlockType2; |
| UINT32 Length; |
| } EFI_HII_SIBT_EXT4_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_FONT_BLOCK { |
| EFI_HII_SIBT_EXT2_BLOCK Header; |
| UINT8 FontId; |
| UINT16 FontSize; |
| EFI_HII_FONT_STYLE FontStyle; |
| CHAR16 FontName[1]; |
| } EFI_HII_SIBT_FONT_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_SKIP1_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 SkipCount; |
| } EFI_HII_SIBT_SKIP1_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_SKIP2_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT16 SkipCount; |
| } EFI_HII_SIBT_SKIP2_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 StringText[1]; |
| } EFI_HII_SIBT_STRING_SCSU_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 FontIdentifier; |
| UINT8 StringText[1]; |
| } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT16 StringCount; |
| UINT8 StringText[1]; |
| } EFI_HII_SIBT_STRINGS_SCSU_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 FontIdentifier; |
| UINT16 StringCount; |
| UINT8 StringText[1]; |
| } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| CHAR16 StringText[1]; |
| } EFI_HII_SIBT_STRING_UCS2_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 FontIdentifier; |
| CHAR16 StringText[1]; |
| } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT16 StringCount; |
| CHAR16 StringText[1]; |
| } EFI_HII_SIBT_STRINGS_UCS2_BLOCK; |
| |
| typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK { |
| EFI_HII_STRING_BLOCK Header; |
| UINT8 FontIdentifier; |
| UINT16 StringCount; |
| CHAR16 StringText[1]; |
| } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK; |
| |
| // |
| // Definitions for Image Package |
| // Section 27.3.7 |
| // |
| |
| typedef struct _EFI_HII_IMAGE_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| UINT32 ImageInfoOffset; |
| UINT32 PaletteInfoOffset; |
| } EFI_HII_IMAGE_PACKAGE_HDR; |
| |
| typedef struct _EFI_HII_IMAGE_BLOCK { |
| UINT8 BlockType; |
| } EFI_HII_IMAGE_BLOCK; |
| |
| // |
| // Value of different image information block types |
| // |
| #define EFI_HII_IIBT_END 0x00 |
| #define EFI_HII_IIBT_IMAGE_1BIT 0x10 |
| #define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11 |
| #define EFI_HII_IIBT_IMAGE_4BIT 0x12 |
| #define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13 |
| #define EFI_HII_IIBT_IMAGE_8BIT 0x14 |
| #define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15 |
| #define EFI_HII_IIBT_IMAGE_24BIT 0x16 |
| #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17 |
| #define EFI_HII_IIBT_IMAGE_JPEG 0x18 |
| #define EFI_HII_IIBT_DUPLICATE 0x20 |
| #define EFI_HII_IIBT_SKIP2 0x21 |
| #define EFI_HII_IIBT_SKIP1 0x22 |
| #define EFI_HII_IIBT_EXT1 0x30 |
| #define EFI_HII_IIBT_EXT2 0x31 |
| #define EFI_HII_IIBT_EXT4 0x32 |
| |
| // |
| // Definition of different image information block types |
| // |
| |
| typedef struct _EFI_HII_IIBT_END_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| } EFI_HII_IIBT_END_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_EXT1_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 BlockType2; |
| UINT8 Length; |
| } EFI_HII_IIBT_EXT1_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_EXT2_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 BlockType2; |
| UINT16 Length; |
| } EFI_HII_IIBT_EXT2_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_EXT4_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 BlockType2; |
| UINT32 Length; |
| } EFI_HII_IIBT_EXT4_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE { |
| UINT16 Width; |
| UINT16 Height; |
| UINT8 Data[1]; |
| } EFI_HII_IIBT_IMAGE_1BIT_BASE; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_1BIT_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK; |
| |
| typedef struct _EFI_HII_RGB_PIXEL { |
| UINT8 b; |
| UINT8 g; |
| UINT8 r; |
| } EFI_HII_RGB_PIXEL; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE { |
| UINT16 Width; |
| UINT16 Height; |
| EFI_HII_RGB_PIXEL Bitmap[1]; |
| } EFI_HII_IIBT_IMAGE_24BIT_BASE; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_24BIT_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE { |
| UINT16 Width; |
| UINT16 Height; |
| UINT8 Data[1]; |
| } EFI_HII_IIBT_IMAGE_4BIT_BASE; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_4BIT_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE { |
| UINT16 Width; |
| UINT16 Height; |
| UINT8 Data[1]; |
| } EFI_HII_IIBT_IMAGE_8BIT_BASE; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_8BIT_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 PaletteIndex; |
| EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap; |
| } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| EFI_IMAGE_ID ImageId; |
| } EFI_HII_IIBT_DUPLICATE_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_JPEG_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT32 Size; |
| UINT8 Data[1]; |
| } EFI_HII_IIBT_JPEG_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_SKIP1_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT8 SkipCount; |
| } EFI_HII_IIBT_SKIP1_BLOCK; |
| |
| typedef struct _EFI_HII_IIBT_SKIP2_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT16 SkipCount; |
| } EFI_HII_IIBT_SKIP2_BLOCK; |
| |
| // |
| // Definitions for Palette Information |
| // |
| |
| typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER { |
| UINT16 PaletteCount; |
| } EFI_HII_IMAGE_PALETTE_INFO_HEADER; |
| |
| typedef struct _EFI_HII_IMAGE_PALETTE_INFO { |
| UINT16 PaletteSize; |
| EFI_HII_RGB_PIXEL PaletteValue[1]; |
| } EFI_HII_IMAGE_PALETTE_INFO; |
| |
| // |
| // Definitions for Forms Package |
| // Section 27.3.8 |
| // |
| |
| /// |
| /// The Forms package is used to carry forms-based encoding data. |
| /// |
| typedef struct _EFI_HII_FORM_PACKAGE { |
| EFI_HII_PACKAGE_HEADER Header; |
| // EFI_IFR_OP_HEADER OpCodeHeader; |
| // More op-codes follow |
| } EFI_HII_FORM_PACKAGE; |
| |
| typedef struct { |
| UINT8 Hour; |
| UINT8 Minute; |
| UINT8 Second; |
| } EFI_HII_TIME; |
| |
| typedef struct { |
| UINT16 Year; |
| UINT8 Month; |
| UINT8 Day; |
| } EFI_HII_DATE; |
| |
| typedef union { |
| UINT8 u8; |
| UINT16 u16; |
| UINT32 u32; |
| UINT64 u64; |
| BOOLEAN b; |
| EFI_HII_TIME time; |
| EFI_HII_DATE date; |
| EFI_STRING_ID string; |
| } EFI_IFR_TYPE_VALUE; |
| |
| // |
| // IFR Opcodes |
| // |
| #define EFI_IFR_FORM_OP 0x01 |
| #define EFI_IFR_SUBTITLE_OP 0x02 |
| #define EFI_IFR_TEXT_OP 0x03 |
| #define EFI_IFR_IMAGE_OP 0x04 |
| #define EFI_IFR_ONE_OF_OP 0x05 |
| #define EFI_IFR_CHECKBOX_OP 0x06 |
| #define EFI_IFR_NUMERIC_OP 0x07 |
| #define EFI_IFR_PASSWORD_OP 0x08 |
| #define EFI_IFR_ONE_OF_OPTION_OP 0x09 |
| #define EFI_IFR_SUPPRESS_IF_OP 0x0A |
| #define EFI_IFR_LOCKED_OP 0x0B |
| #define EFI_IFR_ACTION_OP 0x0C |
| #define EFI_IFR_RESET_BUTTON_OP 0x0D |
| #define EFI_IFR_FORM_SET_OP 0x0E |
| #define EFI_IFR_REF_OP 0x0F |
| #define EFI_IFR_NO_SUBMIT_IF_OP 0x10 |
| #define EFI_IFR_INCONSISTENT_IF_OP 0x11 |
| #define EFI_IFR_EQ_ID_VAL_OP 0x12 |
| #define EFI_IFR_EQ_ID_ID_OP 0x13 |
| #define EFI_IFR_EQ_ID_LIST_OP 0x14 |
| #define EFI_IFR_AND_OP 0x15 |
| #define EFI_IFR_OR_OP 0x16 |
| #define EFI_IFR_NOT_OP 0x17 |
| #define EFI_IFR_RULE_OP 0x18 |
| #define EFI_IFR_GRAY_OUT_IF_OP 0x19 |
| #define EFI_IFR_DATE_OP 0x1A |
| #define EFI_IFR_TIME_OP 0x1B |
| #define EFI_IFR_STRING_OP 0x1C |
| #define EFI_IFR_REFRESH_OP 0x1D |
| #define EFI_IFR_DISABLE_IF_OP 0x1E |
| #define EFI_IFR_TO_LOWER_OP 0x20 |
| #define EFI_IFR_TO_UPPER_OP 0x21 |
| #define EFI_IFR_ORDERED_LIST_OP 0x23 |
| #define EFI_IFR_VARSTORE_OP 0x24 |
| #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25 |
| #define EFI_IFR_VARSTORE_EFI_OP 0x26 |
| #define EFI_IFR_VARSTORE_DEVICE_OP 0x27 |
| #define EFI_IFR_VERSION_OP 0x28 |
| #define EFI_IFR_END_OP 0x29 |
| #define EFI_IFR_MATCH_OP 0x2A |
| #define EFI_IFR_EQUAL_OP 0x2F |
| #define EFI_IFR_NOT_EQUAL_OP 0x30 |
| #define EFI_IFR_GREATER_THAN_OP 0x31 |
| #define EFI_IFR_GREATER_EQUAL_OP 0x32 |
| #define EFI_IFR_LESS_THAN_OP 0x33 |
| #define EFI_IFR_LESS_EQUAL_OP 0x34 |
| #define EFI_IFR_BITWISE_AND_OP 0x35 |
| #define EFI_IFR_BITWISE_OR_OP 0x36 |
| #define EFI_IFR_BITWISE_NOT_OP 0x37 |
| #define EFI_IFR_SHIFT_LEFT_OP 0x38 |
| #define EFI_IFR_SHIFT_RIGHT_OP 0x39 |
| #define EFI_IFR_ADD_OP 0x3A |
| #define EFI_IFR_SUBTRACT_OP 0x3B |
| #define EFI_IFR_MULTIPLY_OP 0x3C |
| #define EFI_IFR_DIVIDE_OP 0x3D |
| #define EFI_IFR_MODULO_OP 0x3E |
| #define EFI_IFR_RULE_REF_OP 0x3F |
| #define EFI_IFR_QUESTION_REF1_OP 0x40 |
| #define EFI_IFR_QUESTION_REF2_OP 0x41 |
| #define EFI_IFR_UINT8_OP 0x42 |
| #define EFI_IFR_UINT16_OP 0x43 |
| #define EFI_IFR_UINT32_OP 0x44 |
| #define EFI_IFR_UINT64_OP 0x45 |
| #define EFI_IFR_TRUE_OP 0x46 |
| #define EFI_IFR_FALSE_OP 0x47 |
| #define EFI_IFR_TO_UINT_OP 0x48 |
| #define EFI_IFR_TO_STRING_OP 0x49 |
| #define EFI_IFR_TO_BOOLEAN_OP 0x4A |
| #define EFI_IFR_MID_OP 0x4B |
| #define EFI_IFR_FIND_OP 0x4C |
| #define EFI_IFR_TOKEN_OP 0x4D |
| #define EFI_IFR_STRING_REF1_OP 0x4E |
| #define EFI_IFR_STRING_REF2_OP 0x4F |
| #define EFI_IFR_CONDITIONAL_OP 0x50 |
| #define EFI_IFR_QUESTION_REF3_OP 0x51 |
| #define EFI_IFR_ZERO_OP 0x52 |
| #define EFI_IFR_ONE_OP 0x53 |
| #define EFI_IFR_ONES_OP 0x54 |
| #define EFI_IFR_UNDEFINED_OP 0x55 |
| #define EFI_IFR_LENGTH_OP 0x56 |
| #define EFI_IFR_DUP_OP 0x57 |
| #define EFI_IFR_THIS_OP 0x58 |
| #define EFI_IFR_SPAN_OP 0x59 |
| #define EFI_IFR_VALUE_OP 0x5A |
| #define EFI_IFR_DEFAULT_OP 0x5B |
| #define EFI_IFR_DEFAULTSTORE_OP 0x5C |
| #define EFI_IFR_CATENATE_OP 0x5E |
| #define EFI_IFR_GUID_OP 0x5F |
| |
| // |
| // Definitions of IFR Standard Headers |
| // Section 27.3.8.2 |
| // |
| |
| typedef struct _EFI_IFR_OP_HEADER { |
| UINT8 OpCode; |
| UINT8 Length:7; |
| UINT8 Scope:1; |
| } EFI_IFR_OP_HEADER; |
| |
| typedef struct _EFI_IFR_STATEMENT_HEADER { |
| EFI_STRING_ID Prompt; |
| EFI_STRING_ID Help; |
| } EFI_IFR_STATEMENT_HEADER; |
| |
| typedef struct _EFI_IFR_QUESTION_HEADER { |
| EFI_IFR_STATEMENT_HEADER Header; |
| EFI_QUESTION_ID QuestionId; |
| EFI_VARSTORE_ID VarStoreId; |
| union { |
| EFI_STRING_ID VarName; |
| UINT16 VarOffset; |
| } VarStoreInfo; |
| UINT8 Flags; |
| } EFI_IFR_QUESTION_HEADER; |
| |
| // |
| // Flag values of EFI_IFR_QUESTION_HEADER |
| // |
| #define EFI_IFR_FLAG_READ_ONLY 0x01 |
| #define EFI_IFR_FLAG_CALLBACK 0x04 |
| #define EFI_IFR_FLAG_RESET_REQUIRED 0x10 |
| #define EFI_IFR_FLAG_OPTIONS_ONLY 0x80 |
| |
| // |
| // Definition for Opcode Reference |
| // Section 27.3.8.3 |
| // |
| typedef struct _EFI_IFR_DEFAULTSTORE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID DefaultName; |
| UINT16 DefaultId; |
| } EFI_IFR_DEFAULTSTORE; |
| |
| // |
| // Default Identifier of default store |
| // |
| #define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000 |
| #define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001 |
| #define EFI_HII_DEFAULT_CLASS_SAFE 0x0002 |
| #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000 |
| #define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff |
| #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000 |
| #define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff |
| #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000 |
| #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff |
| |
| typedef struct _EFI_IFR_VARSTORE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_GUID Guid; |
| EFI_VARSTORE_ID VarStoreId; |
| UINT16 Size; |
| UINT8 Name[1]; |
| } EFI_IFR_VARSTORE; |
| |
| typedef struct _EFI_IFR_VARSTORE_EFI { |
| EFI_IFR_OP_HEADER Header; |
| EFI_VARSTORE_ID VarStoreId; |
| EFI_GUID Guid; |
| UINT32 Attributes; |
| } EFI_IFR_VARSTORE_EFI; |
| |
| typedef struct _EFI_IFR_VARSTORE_NAME_VALUE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_VARSTORE_ID VarStoreId; |
| EFI_GUID Guid; |
| } EFI_IFR_VARSTORE_NAME_VALUE; |
| |
| typedef struct _EFI_IFR_FORM_SET { |
| EFI_IFR_OP_HEADER Header; |
| EFI_GUID Guid; |
| EFI_STRING_ID FormSetTitle; |
| EFI_STRING_ID Help; |
| } EFI_IFR_FORM_SET; |
| |
| typedef struct _EFI_IFR_END { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_END; |
| |
| typedef struct _EFI_IFR_FORM { |
| EFI_IFR_OP_HEADER Header; |
| UINT16 FormId; |
| EFI_STRING_ID FormTitle; |
| } EFI_IFR_FORM; |
| |
| typedef struct _EFI_IFR_IMAGE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IMAGE_ID Id; |
| } EFI_IFR_IMAGE; |
| |
| typedef struct _EFI_IFR_LOCKED { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_LOCKED; |
| |
| typedef struct _EFI_IFR_RULE { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 RuleId; |
| } EFI_IFR_RULE; |
| |
| typedef struct _EFI_IFR_DEFAULT { |
| EFI_IFR_OP_HEADER Header; |
| UINT16 DefaultId; |
| UINT8 Type; |
| EFI_IFR_TYPE_VALUE Value; |
| } EFI_IFR_DEFAULT; |
| |
| typedef struct _EFI_IFR_VALUE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_VALUE; |
| |
| typedef struct _EFI_IFR_SUBTITLE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_STATEMENT_HEADER Statement; |
| UINT8 Flags; |
| } EFI_IFR_SUBTITLE; |
| |
| #define EFI_IFR_FLAGS_HORIZONTAL 0x01 |
| |
| typedef struct _EFI_IFR_CHECKBOX { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 Flags; |
| } EFI_IFR_CHECKBOX; |
| |
| #define EFI_IFR_CHECKBOX_DEFAULT 0x01 |
| #define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02 |
| |
| typedef struct _EFI_IFR_TEXT { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_STATEMENT_HEADER Statement; |
| EFI_STRING_ID TextTwo; |
| } EFI_IFR_TEXT; |
| |
| typedef struct _EFI_IFR_REF { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_FORM_ID FormId; |
| } EFI_IFR_REF; |
| |
| typedef struct _EFI_IFR_REF2 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_FORM_ID FormId; |
| EFI_QUESTION_ID QuestionId; |
| } EFI_IFR_REF2; |
| |
| typedef struct _EFI_IFR_REF3 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_FORM_ID FormId; |
| EFI_QUESTION_ID QuestionId; |
| EFI_GUID FormSetId; |
| } EFI_IFR_REF3; |
| |
| typedef struct _EFI_IFR_REF4 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_FORM_ID FormId; |
| EFI_QUESTION_ID QuestionId; |
| EFI_GUID FormSetId; |
| EFI_STRING_ID DevicePath; |
| } EFI_IFR_REF4; |
| |
| typedef struct _EFI_IFR_RESET_BUTTON { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_DEFAULT_ID DefaultId; |
| } EFI_IFR_RESET_BUTTON; |
| |
| typedef struct _EFI_IFR_ACTION { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| EFI_STRING_ID QuestionConfig; |
| } EFI_IFR_ACTION; |
| |
| typedef struct _EFI_IFR_ACTION_1 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| } EFI_IFR_ACTION_1; |
| |
| typedef struct _EFI_IFR_DATE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 Flags; |
| } EFI_IFR_DATE; |
| |
| // |
| // Flags that describe the behavior of the question. |
| // |
| #define EFI_QF_DATE_YEAR_SUPPRESS 0x01 |
| #define EFI_QF_DATE_MONTH_SUPPRESS 0x02 |
| #define EFI_QF_DATE_DAY_SUPPRESS 0x04 |
| |
| #define EFI_QF_DATE_STORAGE 0x30 |
| #define QF_DATE_STORAGE_NORMAL 0x00 |
| #define QF_DATE_STORAGE_TIME 0x10 |
| #define QF_DATE_STORAGE_WAKEUP 0x20 |
| |
| typedef union { |
| struct { |
| UINT8 MinValue; |
| UINT8 MaxValue; |
| UINT8 Step; |
| } u8; |
| struct { |
| UINT16 MinValue; |
| UINT16 MaxValue; |
| UINT16 Step; |
| } u16; |
| struct { |
| UINT32 MinValue; |
| UINT32 MaxValue; |
| UINT32 Step; |
| } u32; |
| struct { |
| UINT64 MinValue; |
| UINT64 MaxValue; |
| UINT64 Step; |
| } u64; |
| } MINMAXSTEP_DATA; |
| |
| typedef struct _EFI_IFR_NUMERIC { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 Flags; |
| MINMAXSTEP_DATA data; |
| } EFI_IFR_NUMERIC; |
| |
| // |
| // Flags related to the numeric question |
| // |
| #define EFI_IFR_NUMERIC_SIZE 0x03 |
| #define EFI_IFR_NUMERIC_SIZE_1 0x00 |
| #define EFI_IFR_NUMERIC_SIZE_2 0x01 |
| #define EFI_IFR_NUMERIC_SIZE_4 0x02 |
| #define EFI_IFR_NUMERIC_SIZE_8 0x03 |
| |
| #define EFI_IFR_DISPLAY 0x30 |
| #define EFI_IFR_DISPLAY_INT_DEC 0x00 |
| #define EFI_IFR_DISPLAY_UINT_DEC 0x10 |
| #define EFI_IFR_DISPLAY_UINT_HEX 0x20 |
| |
| typedef struct _EFI_IFR_ONE_OF { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 Flags; |
| MINMAXSTEP_DATA data; |
| } EFI_IFR_ONE_OF; |
| |
| typedef struct _EFI_IFR_STRING { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 MinSize; |
| UINT8 MaxSize; |
| UINT8 Flags; |
| } EFI_IFR_STRING; |
| |
| #define EFI_IFR_STRING_MULTI_LINE 0x01 |
| |
| typedef struct _EFI_IFR_PASSWORD { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT16 MinSize; |
| UINT16 MaxSize; |
| } EFI_IFR_PASSWORD; |
| |
| typedef struct _EFI_IFR_ORDERED_LIST { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 MaxContainers; |
| UINT8 Flags; |
| } EFI_IFR_ORDERED_LIST; |
| |
| #define EFI_IFR_UNIQUE_SET 0x01 |
| #define EFI_IFR_NO_EMPTY_SET 0x02 |
| |
| typedef struct _EFI_IFR_TIME { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| UINT8 Flags; |
| } EFI_IFR_TIME; |
| |
| // |
| // A bit-mask that determines which unique settings are active for this opcode. |
| // |
| #define QF_TIME_HOUR_SUPPRESS 0x01 |
| #define QF_TIME_MINUTE_SUPPRESS 0x02 |
| #define QF_TIME_SECOND_SUPPRESS 0x04 |
| |
| #define QF_TIME_STORAGE 0x30 |
| #define QF_TIME_STORAGE_NORMAL 0x00 |
| #define QF_TIME_STORAGE_TIME 0x10 |
| #define QF_TIME_STORAGE_WAKEUP 0x20 |
| |
| typedef struct _EFI_IFR_DISABLE_IF { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_DISABLE_IF; |
| |
| typedef struct _EFI_IFR_SUPPRESS_IF { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_SUPPRESS_IF; |
| |
| typedef struct _EFI_IFR_GRAY_OUT_IF { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_GRAY_OUT_IF; |
| |
| typedef struct _EFI_IFR_INCONSISTENT_IF { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID Error; |
| } EFI_IFR_INCONSISTENT_IF; |
| |
| typedef struct _EFI_IFR_NO_SUBMIT_IF { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID Error; |
| } EFI_IFR_NO_SUBMIT_IF; |
| |
| typedef struct _EFI_IFR_REFRESH { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 RefreshInterval; |
| } EFI_IFR_REFRESH; |
| |
| typedef struct _EFI_IFR_VARSTORE_DEVICE { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID DevicePath; |
| } EFI_IFR_VARSTORE_DEVICE; |
| |
| typedef struct _EFI_IFR_ONE_OF_OPTION { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID Option; |
| UINT8 Flags; |
| UINT8 Type; |
| EFI_IFR_TYPE_VALUE Value; |
| } EFI_IFR_ONE_OF_OPTION; |
| |
| // |
| // Types of the option's value. |
| // |
| #define EFI_IFR_TYPE_NUM_SIZE_8 0x00 |
| #define EFI_IFR_TYPE_NUM_SIZE_16 0x01 |
| #define EFI_IFR_TYPE_NUM_SIZE_32 0x02 |
| #define EFI_IFR_TYPE_NUM_SIZE_64 0x03 |
| #define EFI_IFR_TYPE_BOOLEAN 0x04 |
| #define EFI_IFR_TYPE_TIME 0x05 |
| #define EFI_IFR_TYPE_DATE 0x06 |
| #define EFI_IFR_TYPE_STRING 0x07 |
| #define EFI_IFR_TYPE_OTHER 0x08 |
| |
| #define EFI_IFR_OPTION_DEFAULT 0x10 |
| #define EFI_IFR_OPTION_DEFAULT_MFG 0x20 |
| |
| typedef struct _EFI_IFR_GUID { |
| EFI_IFR_OP_HEADER Header; |
| EFI_GUID Guid; |
| //Optional Data Follows |
| } EFI_IFR_GUID; |
| |
| typedef struct _EFI_IFR_DUP { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_DUP; |
| |
| typedef struct _EFI_IFR_EQ_ID_ID { |
| EFI_IFR_OP_HEADER Header; |
| EFI_QUESTION_ID QuestionId1; |
| EFI_QUESTION_ID QuestionId2; |
| } EFI_IFR_EQ_ID_ID; |
| |
| typedef struct _EFI_IFR_EQ_ID_VAL { |
| EFI_IFR_OP_HEADER Header; |
| EFI_QUESTION_ID QuestionId; |
| UINT16 Value; |
| } EFI_IFR_EQ_ID_VAL; |
| |
| typedef struct _EFI_IFR_EQ_ID_LIST { |
| EFI_IFR_OP_HEADER Header; |
| EFI_QUESTION_ID QuestionId; |
| UINT16 ListLength; |
| UINT16 ValueList[1]; |
| } EFI_IFR_EQ_ID_LIST; |
| |
| typedef struct _EFI_IFR_UINT8 { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 Value; |
| } EFI_IFR_UINT8; |
| |
| typedef struct _EFI_IFR_UINT16 { |
| EFI_IFR_OP_HEADER Header; |
| UINT16 Value; |
| } EFI_IFR_UINT16; |
| |
| typedef struct _EFI_IFR_UINT32 { |
| EFI_IFR_OP_HEADER Header; |
| UINT32 Value; |
| } EFI_IFR_UINT32; |
| |
| typedef struct _EFI_IFR_UINT64 { |
| EFI_IFR_OP_HEADER Header; |
| UINT64 Value; |
| } EFI_IFR_UINT64; |
| |
| typedef struct _EFI_IFR_QUESTION_REF1 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_QUESTION_ID QuestionId; |
| } EFI_IFR_QUESTION_REF1; |
| |
| typedef struct _EFI_IFR_QUESTION_REF2 { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_QUESTION_REF2; |
| |
| typedef struct _EFI_IFR_QUESTION_REF3 { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_QUESTION_REF3; |
| |
| typedef struct _EFI_IFR_QUESTION_REF3_2 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID DevicePath; |
| } EFI_IFR_QUESTION_REF3_2; |
| |
| typedef struct _EFI_IFR_QUESTION_REF3_3 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID DevicePath; |
| EFI_GUID Guid; |
| } EFI_IFR_QUESTION_REF3_3; |
| |
| typedef struct _EFI_IFR_RULE_REF { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 RuleId; |
| } EFI_IFR_RULE_REF; |
| |
| typedef struct _EFI_IFR_STRING_REF1 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID StringId; |
| } EFI_IFR_STRING_REF1; |
| |
| typedef struct _EFI_IFR_STRING_REF2 { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_STRING_REF2; |
| |
| typedef struct _EFI_IFR_THIS { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_THIS; |
| |
| typedef struct _EFI_IFR_TRUE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TRUE; |
| |
| typedef struct _EFI_IFR_FALSE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_FALSE; |
| |
| typedef struct _EFI_IFR_ONE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_ONE; |
| |
| typedef struct _EFI_IFR_ONES { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_ONES; |
| |
| typedef struct _EFI_IFR_ZERO { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_ZERO; |
| |
| typedef struct _EFI_IFR_UNDEFINED { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_UNDEFINED; |
| |
| typedef struct _EFI_IFR_VERSION { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_VERSION; |
| |
| typedef struct _EFI_IFR_LENGTH { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_LENGTH; |
| |
| typedef struct _EFI_IFR_NOT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_NOT; |
| |
| typedef struct _EFI_IFR_BITWISE_NOT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_BITWISE_NOT; |
| |
| typedef struct _EFI_IFR_TO_BOOLEAN { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TO_BOOLEAN; |
| |
| // |
| // For EFI_IFR_TO_STRING, when converting from |
| // unsigned integers, these flags control the format: |
| // 0 = unsigned decimal |
| // 1 = signed decimal |
| // 2 = hexadecimal (lower-case alpha) |
| // 3 = hexadecimal (upper-case alpha) |
| // |
| #define EFI_IFR_STRING_UNSIGNED_DEC 0 |
| #define EFI_IFR_STRING_SIGNED_DEC 1 |
| #define EFI_IFR_STRING_LOWERCASE_HEX 2 |
| #define EFI_IFR_STRING_UPPERCASE_HEX 3 |
| // |
| // When converting from a buffer, these flags control the format: |
| // 0 = ASCII |
| // 8 = Unicode |
| // |
| #define EFI_IFR_STRING_ASCII 0 |
| #define EFI_IFR_STRING_UNICODE 8 |
| |
| typedef struct _EFI_IFR_TO_STRING { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 Format; |
| } EFI_IFR_TO_STRING; |
| |
| typedef struct _EFI_IFR_TO_UINT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TO_UINT; |
| |
| typedef struct _EFI_IFR_TO_UPPER { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TO_UPPER; |
| |
| typedef struct _EFI_IFR_TO_LOWER { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TO_LOWER; |
| |
| typedef struct _EFI_IFR_ADD { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_ADD; |
| |
| typedef struct _EFI_IFR_AND { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_AND; |
| |
| typedef struct _EFI_IFR_BITWISE_AND { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_BITWISE_AND; |
| |
| typedef struct _EFI_IFR_BITWISE_OR { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_BITWISE_OR; |
| |
| typedef struct _EFI_IFR_CATENATE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_CATENATE; |
| |
| typedef struct _EFI_IFR_DIVIDE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_DIVIDE; |
| |
| typedef struct _EFI_IFR_EQUAL { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_EQUAL; |
| |
| typedef struct _EFI_IFR_GREATER_EQUAL { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_GREATER_EQUAL; |
| |
| typedef struct _EFI_IFR_GREATER_THAN { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_GREATER_THAN; |
| |
| typedef struct _EFI_IFR_LESS_EQUAL { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_LESS_EQUAL; |
| |
| typedef struct _EFI_IFR_LESS_THAN { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_LESS_THAN; |
| |
| typedef struct _EFI_IFR_MATCH { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MATCH; |
| |
| typedef struct _EFI_IFR_MULTIPLY { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MULTIPLY; |
| |
| typedef struct _EFI_IFR_MODULO { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MODULO; |
| |
| typedef struct _EFI_IFR_NOT_EQUAL { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_NOT_EQUAL; |
| |
| typedef struct _EFI_IFR_OR { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_OR; |
| |
| typedef struct _EFI_IFR_SHIFT_LEFT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_SHIFT_LEFT; |
| |
| typedef struct _EFI_IFR_SHIFT_RIGHT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_SHIFT_RIGHT; |
| |
| typedef struct _EFI_IFR_SUBTRACT { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_SUBTRACT; |
| |
| typedef struct _EFI_IFR_CONDITIONAL { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_CONDITIONAL; |
| |
| // |
| // Flags governing the matching criteria of EFI_IFR_FIND |
| // |
| #define EFI_IFR_FF_CASE_SENSITIVE 0x00 |
| #define EFI_IFR_FF_CASE_INSENSITIVE 0x01 |
| |
| typedef struct _EFI_IFR_FIND { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 Format; |
| } EFI_IFR_FIND; |
| |
| typedef struct _EFI_IFR_MID { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MID; |
| |
| typedef struct _EFI_IFR_TOKEN { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_TOKEN; |
| |
| // |
| // Flags specifying whether to find the first matching string |
| // or the first non-matching string. |
| // |
| #define EFI_IFR_FLAGS_FIRST_MATCHING 0x00 |
| #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01 |
| |
| typedef struct _EFI_IFR_SPAN { |
| EFI_IFR_OP_HEADER Header; |
| UINT8 Flags; |
| } EFI_IFR_SPAN; |
| |
| // |
| // Definitions for Keyboard Package |
| // Section 27.3.9 |
| // Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL |
| // |
| |
| typedef enum { |
| EfiKeyLCtrl, |
| EfiKeyA0, |
| EfiKeyLAlt, |
| EfiKeySpaceBar, |
| EfiKeyA2, |
| EfiKeyA3, |
| EfiKeyA4, |
| EfiKeyRCtrl, |
| EfiKeyLeftArrow, |
| EfiKeyDownArrow, |
| EfiKeyRightArrow, |
| EfiKeyZero, |
| EfiKeyPeriod, |
| EfiKeyEnter, |
| EfiKeyLShift, |
| EfiKeyB0, |
| EfiKeyB1, |
| EfiKeyB2, |
| EfiKeyB3, |
| EfiKeyB4, |
| EfiKeyB5, |
| EfiKeyB6, |
| EfiKeyB7, |
| EfiKeyB8, |
| EfiKeyB9, |
| EfiKeyB10, |
| EfiKeyRShift, |
| EfiKeyUpArrow, |
| EfiKeyOne, |
| EfiKeyTwo, |
| EfiKeyThree, |
| EfiKeyCapsLock, |
| EfiKeyC1, |
| EfiKeyC2, |
| EfiKeyC3, |
| EfiKeyC4, |
| EfiKeyC5, |
| EfiKeyC6, |
| EfiKeyC7, |
| EfiKeyC8, |
| EfiKeyC9, |
| EfiKeyC10, |
| EfiKeyC11, |
| EfiKeyC12, |
| EfiKeyFour, |
| EfiKeyFive, |
| EfiKeySix, |
| EfiKeyPlus, |
| EfiKeyTab, |
| EfiKeyD1, |
| EfiKeyD2, |
| EfiKeyD3, |
| EfiKeyD4, |
| EfiKeyD5, |
| EfiKeyD6, |
| EfiKeyD7, |
| EfiKeyD8, |
| EfiKeyD9, |
| EfiKeyD10, |
| EfiKeyD11, |
| EfiKeyD12, |
| EfiKeyD13, |
| EfiKeyDel, |
| EfiKeyEnd, |
| EfiKeyPgDn, |
| EfiKeySeven, |
| EfiKeyEight, |
| EfiKeyNine, |
| EfiKeyE0, |
| EfiKeyE1, |
| EfiKeyE2, |
| EfiKeyE3, |
| EfiKeyE4, |
| EfiKeyE5, |
| EfiKeyE6, |
| EfiKeyE7, |
| EfiKeyE8, |
| EfiKeyE9, |
| EfiKeyE10, |
| EfiKeyE11, |
| EfiKeyE12, |
| EfiKeyBackSpace, |
| EfiKeyIns, |
| EfiKeyHome, |
| EfiKeyPgUp, |
| EfiKeyNLck, |
| EfiKeySlash, |
| EfiKeyAsterisk, |
| EfiKeyMinus, |
| EfiKeyEsc, |
| EfiKeyF1, |
| EfiKeyF2, |
| EfiKeyF3, |
| EfiKeyF4, |
| EfiKeyF5, |
| EfiKeyF6, |
| EfiKeyF7, |
| EfiKeyF8, |
| EfiKeyF9, |
| EfiKeyF10, |
| EfiKeyF11, |
| EfiKeyF12, |
| EfiKeyPrint, |
| EfiKeySLck, |
| EfiKeyPause |
| } EFI_KEY; |
| |
| typedef struct { |
| EFI_KEY Key; |
| CHAR16 Unicode; |
| CHAR16 ShiftedUnicode; |
| CHAR16 AltGrUnicode; |
| CHAR16 ShiftedAltGrUnicode; |
| UINT16 Modifier; |
| UINT16 AffectedAttribute; |
| } EFI_KEY_DESCRIPTOR; |
| |
| /// |
| /// A key which is affected by all the standard shift modifiers. |
| /// Most keys would be expected to have this bit active. |
| /// |
| #define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001 |
| |
| /// |
| /// This key is affected by the caps lock so that if a keyboard driver |
| /// would need to disambiguate between a key which had a "1" defined |
| /// versus a "a" character. Having this bit turned on would tell |
| /// the keyboard driver to use the appropriate shifted state or not. |
| /// |
| #define EFI_AFFECTED_BY_CAPS_LOCK 0x0002 |
| |
| /// |
| /// Similar to the case of CAPS lock, if this bit is active, the key |
| /// is affected by the num lock being turned on. |
| /// |
| #define EFI_AFFECTED_BY_NUM_LOCK 0x0004 |
| |
| typedef struct { |
| UINT16 LayoutLength; |
| EFI_GUID Guid; |
| UINT32 LayoutDescriptorStringOffset; |
| UINT8 DescriptorCount; |
| // EFI_KEY_DESCRIPTOR Descriptors[]; |
| } EFI_HII_KEYBOARD_LAYOUT; |
| |
| typedef struct { |
| EFI_HII_PACKAGE_HEADER Header; |
| UINT16 LayoutCount; |
| // EFI_HII_KEYBOARD_LAYOUT Layout[]; |
| } EFI_HII_KEYBOARD_PACKAGE_HDR; |
| |
| // |
| // Modifier values |
| // |
| #define EFI_NULL_MODIFIER 0x0000 |
| #define EFI_LEFT_CONTROL_MODIFIER 0x0001 |
| #define EFI_RIGHT_CONTROL_MODIFIER 0x0002 |
| #define EFI_LEFT_ALT_MODIFIER 0x0003 |
| #define EFI_RIGHT_ALT_MODIFIER 0x0004 |
| #define EFI_ALT_GR_MODIFIER 0x0005 |
| #define EFI_INSERT_MODIFIER 0x0006 |
| #define EFI_DELETE_MODIFIER 0x0007 |
| #define EFI_PAGE_DOWN_MODIFIER 0x0008 |
| #define EFI_PAGE_UP_MODIFIER 0x0009 |
| #define EFI_HOME_MODIFIER 0x000A |
| #define EFI_END_MODIFIER 0x000B |
| #define EFI_LEFT_SHIFT_MODIFIER 0x000C |
| #define EFI_RIGHT_SHIFT_MODIFIER 0x000D |
| #define EFI_CAPS_LOCK_MODIFIER 0x000E |
| #define EFI_NUM_LOCK_MODIFIER 0x000F |
| #define EFI_LEFT_ARROW_MODIFIER 0x0010 |
| #define EFI_RIGHT_ARROW_MODIFIER 0x0011 |
| #define EFI_DOWN_ARROW_MODIFIER 0x0012 |
| #define EFI_UP_ARROW_MODIFIER 0x0013 |
| #define EFI_NS_KEY_MODIFIER 0x0014 |
| #define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015 |
| #define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016 |
| #define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017 |
| #define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018 |
| #define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019 |
| #define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A |
| #define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B |
| #define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C |
| #define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D |
| #define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E |
| #define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F |
| #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020 |
| #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021 |
| |
| // |
| // Keys that have multiple control functions based on modifier |
| // settings are handled in the keyboard driver implementation. |
| // For instance PRINT_KEY might have a modifier held down and |
| // is still a nonprinting character, but might have an alternate |
| // control function like SYSREQUEST |
| // |
| #define EFI_PRINT_MODIFIER 0x0022 |
| #define EFI_SYS_REQUEST_MODIFIER 0x0023 |
| #define EFI_SCROLL_LOCK_MODIFIER 0x0024 |
| #define EFI_PAUSE_MODIFIER 0x0025 |
| #define EFI_BREAK_MODIFIER 0x0026 |
| |
| #define EFI_LEFT_LOGO_MODIFIER 0x0027 |
| #define EFI_RIGHT_LOGO_MODIFIER 0x0028 |
| #define EFI_MENU_MODIFIER 0x0029 |
| |
| #pragma pack() |
| |
| |
| |
| /// |
| /// References to string tokens must use this macro to enable scanning for |
| /// token usages. |
| /// |
| /// |
| /// STRING_TOKEN is not defined in UEFI specification. But it is placed |
| /// here for the easy access by C files and VFR source files. |
| /// |
| #define STRING_TOKEN(t) t |
| |
| #endif |