| /** @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 - 2018, Intel Corporation. All rights reserved.<BR> |
| (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| @par Revision Reference: |
| These definitions are from UEFI 2.1 and 2.2. |
| |
| **/ |
| |
| #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__ |
| #define __UEFI_INTERNAL_FORMREPRESENTATION_H__ |
| |
| #include <Guid/HiiFormMapMethodGuid.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_ANIMATION_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_ANIMATIONS 0x0A |
| #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 |
| // |
| |
| /// |
| /// 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 |
| ///@} |
| |
| /// |
| /// The EFI_NARROW_GLYPH has a preferred dimension (w x h) of 8 x 19 pixels. |
| /// |
| typedef struct { |
| /// |
| /// The Unicode representation of the glyph. The term weight is the |
| /// technical term for a character code. |
| /// |
| CHAR16 UnicodeWeight; |
| /// |
| /// The data element containing the glyph definitions. |
| /// |
| UINT8 Attributes; |
| /// |
| /// The column major glyph representation of the character. Bits |
| /// with values of one indicate that the corresponding pixel is to be |
| /// on when normally displayed; those with zero are off. |
| /// |
| UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; |
| } EFI_NARROW_GLYPH; |
| |
| /// |
| /// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough |
| /// to accommodate logographic characters. |
| /// |
| typedef struct { |
| /// |
| /// The Unicode representation of the glyph. The term weight is the |
| /// technical term for a character code. |
| /// |
| CHAR16 UnicodeWeight; |
| /// |
| /// The data element containing the glyph definitions. |
| /// |
| UINT8 Attributes; |
| /// |
| /// The column major glyph representation of the character. Bits |
| /// with values of one indicate that the corresponding pixel is to be |
| /// on when normally displayed; those with zero are off. |
| /// |
| UINT8 GlyphCol1[EFI_GLYPH_HEIGHT]; |
| /// |
| /// The column major glyph representation of the character. Bits |
| /// with values of one indicate that the corresponding pixel is to be |
| /// on when normally displayed; those with zero are off. |
| /// |
| UINT8 GlyphCol2[EFI_GLYPH_HEIGHT]; |
| /// |
| /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the |
| /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must |
| /// be zero. |
| /// |
| 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, |
| /// 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_GLYPH_VARIABILITY 0x14 |
| #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_VARIABILITY_BLOCK { |
| EFI_HII_GLYPH_BLOCK Header; |
| EFI_HII_GLYPH_INFO Cell; |
| UINT8 GlyphPackInBits; |
| UINT8 BitmapData [1]; |
| } EFI_HII_GIBT_VARIABILITY_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_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| // EFI_DEVICE_PATH_PROTOCOL DevicePath[]; |
| } EFI_HII_DEVICE_PATH_PACKAGE_HDR; |
| |
| // |
| // 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 "x-UEFI" |
| #define UEFI_CONFIG_LANG_2 "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_IMAGE_PNG 0x19 |
| #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_PNG_BLOCK { |
| EFI_HII_IMAGE_BLOCK Header; |
| UINT32 Size; |
| UINT8 Data[1]; |
| } EFI_HII_IIBT_PNG_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 Form package is used to carry form-based encoding data. |
| /// |
| typedef struct _EFI_HII_FORM_PACKAGE_HDR { |
| EFI_HII_PACKAGE_HEADER Header; |
| // EFI_IFR_OP_HEADER OpCodeHeader; |
| // More op-codes follow |
| } EFI_HII_FORM_PACKAGE_HDR; |
| |
| typedef struct { |
| UINT8 Hour; |
| UINT8 Minute; |
| UINT8 Second; |
| } EFI_HII_TIME; |
| |
| typedef struct { |
| UINT16 Year; |
| UINT8 Month; |
| UINT8 Day; |
| } EFI_HII_DATE; |
| |
| typedef struct { |
| EFI_QUESTION_ID QuestionId; |
| EFI_FORM_ID FormId; |
| EFI_GUID FormSetGuid; |
| EFI_STRING_ID DevicePath; |
| } EFI_HII_REF; |
| |
| 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_STRING, EFI_IFR_TYPE_ACTION |
| EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF |
| // UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER |
| } 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_VAL_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_ANIMATION_OP 0x1F |
| #define EFI_IFR_TO_LOWER_OP 0x20 |
| #define EFI_IFR_TO_UPPER_OP 0x21 |
| #define EFI_IFR_MAP_OP 0x22 |
| #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_GET_OP 0x2B |
| #define EFI_IFR_SET_OP 0x2C |
| #define EFI_IFR_READ_OP 0x2D |
| #define EFI_IFR_WRITE_OP 0x2E |
| #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_FORM_MAP_OP 0x5D |
| #define EFI_IFR_CATENATE_OP 0x5E |
| #define EFI_IFR_GUID_OP 0x5F |
| #define EFI_IFR_SECURITY_OP 0x60 |
| #define EFI_IFR_MODAL_TAG_OP 0x61 |
| #define EFI_IFR_REFRESH_ID_OP 0x62 |
| #define EFI_IFR_WARNING_IF_OP 0x63 |
| #define EFI_IFR_MATCH2_OP 0x64 |
| |
| // |
| // 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_REST_STYLE 0x20 |
| #define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40 |
| #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; |
| UINT16 Size; |
| UINT8 Name[1]; |
| } 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; |
| UINT8 Flags; |
| // EFI_GUID ClassGuid[]; |
| } 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_MODAL_TAG { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MODAL_TAG; |
| |
| 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_DEFAULT_2 { |
| EFI_IFR_OP_HEADER Header; |
| UINT16 DefaultId; |
| UINT8 Type; |
| } EFI_IFR_DEFAULT_2; |
| |
| 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_REF5 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_QUESTION_HEADER Question; |
| } EFI_IFR_REF5; |
| |
| typedef struct _EFI_IFR_RESET_BUTTON { |
| EFI_IFR_OP_HEADER Header; |
| EFI_IFR_STATEMENT_HEADER Statement; |
| 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_WARNING_IF { |
| EFI_IFR_OP_HEADER Header; |
| EFI_STRING_ID Warning; |
| UINT8 TimeOut; |
| } EFI_IFR_WARNING_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_TYPE_UNDEFINED 0x09 |
| #define EFI_IFR_TYPE_ACTION 0x0A |
| #define EFI_IFR_TYPE_BUFFER 0x0B |
| #define EFI_IFR_TYPE_REF 0x0C |
| |
| #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_REFRESH_ID { |
| EFI_IFR_OP_HEADER Header; |
| EFI_GUID RefreshEventGroupId; |
| } EFI_IFR_REFRESH_ID; |
| |
| 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_VAL_LIST { |
| EFI_IFR_OP_HEADER Header; |
| EFI_QUESTION_ID QuestionId; |
| UINT16 ListLength; |
| UINT16 ValueList[1]; |
| } EFI_IFR_EQ_ID_VAL_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_MATCH2 { |
| EFI_IFR_OP_HEADER Header; |
| EFI_GUID SyntaxType; |
| } EFI_IFR_MATCH2; |
| |
| 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; |
| |
| typedef struct _EFI_IFR_SECURITY { |
| /// |
| /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP. |
| /// |
| EFI_IFR_OP_HEADER Header; |
| /// |
| /// Security permission level. |
| /// |
| EFI_GUID Permissions; |
| } EFI_IFR_SECURITY; |
| |
| typedef struct _EFI_IFR_FORM_MAP_METHOD { |
| /// |
| /// The string identifier which provides the human-readable name of |
| /// the configuration method for this standards map form. |
| /// |
| EFI_STRING_ID MethodTitle; |
| /// |
| /// Identifier which uniquely specifies the configuration methods |
| /// associated with this standards map form. |
| /// |
| EFI_GUID MethodIdentifier; |
| } EFI_IFR_FORM_MAP_METHOD; |
| |
| typedef struct _EFI_IFR_FORM_MAP { |
| /// |
| /// The sequence that defines the type of opcode as well as the length |
| /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP. |
| /// |
| EFI_IFR_OP_HEADER Header; |
| /// |
| /// The unique identifier for this particular form. |
| /// |
| EFI_FORM_ID FormId; |
| /// |
| /// One or more configuration method's name and unique identifier. |
| /// |
| // EFI_IFR_FORM_MAP_METHOD Methods[]; |
| } EFI_IFR_FORM_MAP; |
| |
| typedef struct _EFI_IFR_SET { |
| /// |
| /// The sequence that defines the type of opcode as well as the length |
| /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP. |
| /// |
| EFI_IFR_OP_HEADER Header; |
| /// |
| /// Specifies the identifier of a previously declared variable store to |
| /// use when storing the question's value. |
| /// |
| EFI_VARSTORE_ID VarStoreId; |
| union { |
| /// |
| /// A 16-bit Buffer Storage offset. |
| /// |
| EFI_STRING_ID VarName; |
| /// |
| /// A Name Value or EFI Variable name (VarName). |
| /// |
| UINT16 VarOffset; |
| } VarStoreInfo; |
| /// |
| /// Specifies the type used for storage. |
| /// |
| UINT8 VarStoreType; |
| } EFI_IFR_SET; |
| |
| typedef struct _EFI_IFR_GET { |
| /// |
| /// The sequence that defines the type of opcode as well as the length |
| /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP. |
| /// |
| EFI_IFR_OP_HEADER Header; |
| /// |
| /// Specifies the identifier of a previously declared variable store to |
| /// use when retrieving the value. |
| /// |
| EFI_VARSTORE_ID VarStoreId; |
| union { |
| /// |
| /// A 16-bit Buffer Storage offset. |
| /// |
| EFI_STRING_ID VarName; |
| /// |
| /// A Name Value or EFI Variable name (VarName). |
| /// |
| UINT16 VarOffset; |
| } VarStoreInfo; |
| /// |
| /// Specifies the type used for storage. |
| /// |
| UINT8 VarStoreType; |
| } EFI_IFR_GET; |
| |
| typedef struct _EFI_IFR_READ { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_READ; |
| |
| typedef struct _EFI_IFR_WRITE { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_WRITE; |
| |
| typedef struct _EFI_IFR_MAP { |
| EFI_IFR_OP_HEADER Header; |
| } EFI_IFR_MAP; |
| // |
| // Definitions for Keyboard Package |
| // Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL |
| // |
| |
| /// |
| /// Each enumeration values maps a physical key on a keyboard. |
| /// |
| 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 { |
| /// |
| /// Used to describe a physical key on a keyboard. |
| /// |
| EFI_KEY Key; |
| /// |
| /// Unicode character code for the Key. |
| /// |
| CHAR16 Unicode; |
| /// |
| /// Unicode character code for the key with the shift key being held down. |
| /// |
| CHAR16 ShiftedUnicode; |
| /// |
| /// Unicode character code for the key with the Alt-GR being held down. |
| /// |
| CHAR16 AltGrUnicode; |
| /// |
| /// Unicode character code for the key with the Alt-GR and shift keys being held down. |
| /// |
| CHAR16 ShiftedAltGrUnicode; |
| /// |
| /// Modifier keys are defined to allow for special functionality that is not necessarily |
| /// accomplished by a printable character. Many of these modifier keys are flags to toggle |
| /// certain state bits on and off inside of a keyboard driver. |
| /// |
| 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 an "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 |
| |
| /// |
| /// Animation IFR opcode |
| /// |
| typedef struct _EFI_IFR_ANIMATION { |
| /// |
| /// Standard opcode header, where Header.OpCode is |
| /// EFI_IFR_ANIMATION_OP. |
| /// |
| EFI_IFR_OP_HEADER Header; |
| /// |
| /// Animation identifier in the HII database. |
| /// |
| EFI_ANIMATION_ID Id; |
| } EFI_IFR_ANIMATION; |
| |
| /// |
| /// HII animation package header. |
| /// |
| typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR { |
| /// |
| /// Standard package header, where Header.Type = EFI_HII_PACKAGE_ANIMATIONS. |
| /// |
| EFI_HII_PACKAGE_HEADER Header; |
| /// |
| /// Offset, relative to this header, of the animation information. If |
| /// this is zero, then there are no animation sequences in the package. |
| /// |
| UINT32 AnimationInfoOffset; |
| } EFI_HII_ANIMATION_PACKAGE_HDR; |
| |
| /// |
| /// Animation information is encoded as a series of blocks, |
| /// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK. |
| /// |
| typedef struct _EFI_HII_ANIMATION_BLOCK { |
| UINT8 BlockType; |
| //UINT8 BlockBody[]; |
| } EFI_HII_ANIMATION_BLOCK; |
| |
| /// |
| /// Animation block types. |
| /// |
| #define EFI_HII_AIBT_END 0x00 |
| #define EFI_HII_AIBT_OVERLAY_IMAGES 0x10 |
| #define EFI_HII_AIBT_CLEAR_IMAGES 0x11 |
| #define EFI_HII_AIBT_RESTORE_SCRN 0x12 |
| #define EFI_HII_AIBT_OVERLAY_IMAGES_LOOP 0x18 |
| #define EFI_HII_AIBT_CLEAR_IMAGES_LOOP 0x19 |
| #define EFI_HII_AIBT_RESTORE_SCRN_LOOP 0x1A |
| #define EFI_HII_AIBT_DUPLICATE 0x20 |
| #define EFI_HII_AIBT_SKIP2 0x21 |
| #define EFI_HII_AIBT_SKIP1 0x22 |
| #define EFI_HII_AIBT_EXT1 0x30 |
| #define EFI_HII_AIBT_EXT2 0x31 |
| #define EFI_HII_AIBT_EXT4 0x32 |
| |
| /// |
| /// Extended block headers used for variable sized animation records |
| /// which need an explicit length. |
| /// |
| |
| typedef struct _EFI_HII_AIBT_EXT1_BLOCK { |
| /// |
| /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1. |
| /// |
| EFI_HII_ANIMATION_BLOCK Header; |
| /// |
| /// The block type. |
| /// |
| UINT8 BlockType2; |
| /// |
| /// Size of the animation block, in bytes, including the animation block header. |
| /// |
| UINT8 Length; |
| } EFI_HII_AIBT_EXT1_BLOCK; |
| |
| typedef struct _EFI_HII_AIBT_EXT2_BLOCK { |
| /// |
| /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2. |
| /// |
| EFI_HII_ANIMATION_BLOCK Header; |
| /// |
| /// The block type |
| /// |
| UINT8 BlockType2; |
| /// |
| /// Size of the animation block, in bytes, including the animation block header. |
| /// |
| UINT16 Length; |
| } EFI_HII_AIBT_EXT2_BLOCK; |
| |
| typedef struct _EFI_HII_AIBT_EXT4_BLOCK { |
| /// |
| /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4. |
| /// |
| EFI_HII_ANIMATION_BLOCK Header; |
| /// |
| /// The block type |
| /// |
| UINT8 BlockType2; |
| /// |
| /// Size of the animation block, in bytes, including the animation block header. |
| /// |
| UINT32 Length; |
| } EFI_HII_AIBT_EXT4_BLOCK; |
| |
| typedef struct _EFI_HII_ANIMATION_CELL { |
| /// |
| /// The X offset from the upper left hand corner of the logical |
| /// window to position the indexed image. |
| /// |
| UINT16 OffsetX; |
| /// |
| /// The Y offset from the upper left hand corner of the logical |
| /// window to position the indexed image. |
| /// |
| UINT16 OffsetY; |
| /// |
| /// The image to display at the specified offset from the upper left |
| /// hand corner of the logical window. |
| /// |
| EFI_IMAGE_ID ImageId; |
| /// |
| /// The number of milliseconds to delay after displaying the indexed |
| /// image and before continuing on to the next linked image. If value |
| /// is zero, no delay. |
| /// |
| UINT16 Delay; |
| } EFI_HII_ANIMATION_CELL; |
| |
| /// |
| /// An animation block to describe an animation sequence that does not cycle, and |
| /// where one image is simply displayed over the previous image. |
| /// |
| typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK { |
| /// |
| /// This is image that is to be reference by the image protocols, if the |
| /// animation function is not supported or disabled. This image can |
| /// be one particular image from the animation sequence (if any one |
| /// of the animation frames has a complete image) or an alternate |
| /// image that can be displayed alone. If the value is zero, no image |
| /// is displayed. |
| /// |
| EFI_IMAGE_ID DftImageId; |
| /// |
| /// The overall width of the set of images (logical window width). |
| /// |
| UINT16 Width; |
| /// |
| /// The overall height of the set of images (logical window height). |
| /// |
| UINT16 Height; |
| /// |
| /// The number of EFI_HII_ANIMATION_CELL contained in the |
| /// animation sequence. |
| /// |
| UINT16 CellCount; |
| /// |
| /// An array of CellCount animation cells. |
| /// |
| EFI_HII_ANIMATION_CELL AnimationCell[1]; |
| } EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK; |
| |
| /// |
| /// An animation block to describe an animation sequence that does not cycle, |
| /// and where the logical window is cleared to the specified color before |
| /// the next image is displayed. |
| /// |
| typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK { |
| /// |
| /// This is image that is to be reference by the image protocols, if the |
| /// animation function is not supported or disabled. This image can |
| /// be one particular image from the animation sequence (if any one |
| /// of the animation frames has a complete image) or an alternate |
| /// image that can be displayed alone. If the value is zero, no image |
| /// is displayed. |
| /// |
| EFI_IMAGE_ID DftImageId; |
| /// |
| /// The overall width of the set of images (logical window width). |
| /// |
| UINT16 Width; |
| /// |
| /// The overall height of the set of images (logical window height). |
| /// |
| UINT16 Height; |
| /// |
| /// The number of EFI_HII_ANIMATION_CELL contained in the |
| /// animation sequence. |
| /// |
| UINT16 CellCount; |
| /// |
| /// The color to clear the logical window to before displaying the |
| /// indexed image. |
| /// |
| EFI_HII_RGB_PIXEL BackgndColor; |
| /// |
| /// An array of CellCount animation cells. |
| /// |
| EFI_HII_ANIMATION_CELL AnimationCell[1]; |
| } EFI_HII_AIBT_CLEAR_IMAGES_BLOCK; |
| |
| /// |
| /// An animation block to describe an animation sequence that does not cycle, |
| /// and where the screen is restored to the original state before the next |
| /// image is displayed. |
| /// |
| typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK { |
| /// |
| /// This is image that is to be reference by the image protocols, if the |
| /// animation function is not supported or disabled. This image can |
| /// be one particular image from the animation sequence (if any one |
| /// of the animation frames has a complete image) or an alternate |
| /// image that can be displayed alone. If the value is zero, no image |
| /// is displayed. |
| /// |
| EFI_IMAGE_ID DftImageId; |
| /// |
| /// The overall width of the set of images (logical window width). |
| /// |
| UINT16 Width; |
| /// |
| /// The overall height of the set of images (logical window height). |
| /// |
| UINT16 Height; |
| /// |
| /// The number of EFI_HII_ANIMATION_CELL contained in the |
| /// animation sequence. |
| /// |
| UINT16 CellCount; |
| /// |
| /// An array of CellCount animation cells. |
| /// |
| EFI_HII_ANIMATION_CELL AnimationCell[1]; |
| } EFI_HII_AIBT_RESTORE_SCRN_BLOCK; |
| |
| /// |
| /// An animation block to describe an animation sequence that continuously cycles, |
| /// and where one image is simply displayed over the previous image. |
| /// |
| typedef EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK EFI_HII_AIBT_OVERLAY_IMAGES_LOOP_BLOCK; |
| |
| /// |
| /// An animation block to describe an animation sequence that continuously cycles, |
| /// and where the logical window is cleared to the specified color before |
| /// the next image is displayed. |
| /// |
| typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK; |
| |
| /// |
| /// An animation block to describe an animation sequence that continuously cycles, |
| /// and where the screen is restored to the original state before |
| /// the next image is displayed. |
| /// |
| typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK; |
| |
| /// |
| /// Assigns a new character value to a previously defined animation sequence. |
| /// |
| typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK { |
| /// |
| /// The previously defined animation ID with the exact same |
| /// animation information. |
| /// |
| EFI_ANIMATION_ID AnimationId; |
| } EFI_HII_AIBT_DUPLICATE_BLOCK; |
| |
| /// |
| /// Skips animation IDs. |
| /// |
| typedef struct _EFI_HII_AIBT_SKIP1_BLOCK { |
| /// |
| /// The unsigned 8-bit value to add to AnimationIdCurrent. |
| /// |
| UINT8 SkipCount; |
| } EFI_HII_AIBT_SKIP1_BLOCK; |
| |
| /// |
| /// Skips animation IDs. |
| /// |
| typedef struct _EFI_HII_AIBT_SKIP2_BLOCK { |
| /// |
| /// The unsigned 16-bit value to add to AnimationIdCurrent. |
| /// |
| UINT16 SkipCount; |
| } EFI_HII_AIBT_SKIP2_BLOCK; |
| |
| #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 |
| |
| /// |
| /// IMAGE_TOKEN is not defined in UEFI specification. But it is placed |
| /// here for the easy access by C files and VFR source files. |
| /// |
| #define IMAGE_TOKEN(t) t |
| |
| #endif |