IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
internal application and drivers as well as all add-in card option-ROM drivers\r
\r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved<BR>\r
-This program and the accompanying materials are licensed and made available under \r
-the terms and conditions of the BSD License that accompanies this distribution. \r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>\r
+This program and the accompanying materials are licensed and made available under\r
+the terms and conditions of the BSD License that accompanies this distribution.\r
The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php. \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+http://opensource.org/licenses/bsd-license.php.\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
@par Revision Reference:\r
These definitions are from UEFI 2.1 and 2.2.\r
\r
//\r
// Value of HII package type\r
-// \r
+//\r
#define EFI_HII_PACKAGE_TYPE_ALL 0x00\r
#define EFI_HII_PACKAGE_TYPE_GUID 0x01\r
#define EFI_HII_PACKAGE_FORMS 0x02\r
///\r
typedef struct {\r
///\r
- /// The Unicode representation of the glyph. The term weight is the \r
+ /// The Unicode representation of the glyph. The term weight is the\r
/// technical term for a character code.\r
///\r
CHAR16 UnicodeWeight;\r
///\r
UINT8 Attributes;\r
///\r
- /// The column major glyph representation of the character. Bits \r
+ /// The column major glyph representation of the character. Bits\r
/// with values of one indicate that the corresponding pixel is to be\r
/// on when normally displayed; those with zero are off.\r
///\r
} EFI_NARROW_GLYPH;\r
\r
///\r
-/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough \r
+/// The EFI_WIDE_GLYPH has a preferred dimension (w x h) of 16 x 19 pixels, which is large enough\r
/// to accommodate logographic characters.\r
///\r
typedef struct {\r
///\r
- /// The Unicode representation of the glyph. The term weight is the \r
+ /// The Unicode representation of the glyph. The term weight is the\r
/// technical term for a character code.\r
///\r
CHAR16 UnicodeWeight;\r
///\r
UINT8 Attributes;\r
///\r
- /// The column major glyph representation of the character. Bits \r
- /// with values of one indicate that the corresponding pixel is to be \r
+ /// The column major glyph representation of the character. Bits\r
+ /// with values of one indicate that the corresponding pixel is to be\r
/// on when normally displayed; those with zero are off.\r
///\r
UINT8 GlyphCol1[EFI_GLYPH_HEIGHT];\r
///\r
- /// The column major glyph representation of the character. Bits \r
- /// with values of one indicate that the corresponding pixel is to be \r
+ /// The column major glyph representation of the character. Bits\r
+ /// with values of one indicate that the corresponding pixel is to be\r
/// on when normally displayed; those with zero are off.\r
///\r
UINT8 GlyphCol2[EFI_GLYPH_HEIGHT];\r
///\r
- /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the \r
- /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must \r
+ /// Ensures that sizeof (EFI_WIDE_GLYPH) is twice the\r
+ /// sizeof (EFI_NARROW_GLYPH). The contents of Pad must\r
/// be zero.\r
///\r
UINT8 Pad[3];\r
#define EFI_HII_GIBT_GLYPHS 0x11\r
#define EFI_HII_GIBT_GLYPH_DEFAULT 0x12\r
#define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13\r
+#define EFI_HII_GIBT_GLYPH_VARIABILITY 0x14\r
#define EFI_HII_GIBT_DUPLICATE 0x20\r
#define EFI_HII_GIBT_SKIP2 0x21\r
#define EFI_HII_GIBT_SKIP1 0x22\r
typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
EFI_HII_GLYPH_INFO Cell;\r
- UINT16 Count; \r
+ UINT16 Count;\r
UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPHS_BLOCK;\r
\r
UINT8 BitmapData[1];\r
} EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;\r
\r
+typedef struct _EFI_HII_GIBT_VARIABILITY_BLOCK {\r
+ EFI_HII_GLYPH_BLOCK Header;\r
+ EFI_HII_GLYPH_INFO Cell;\r
+ UINT8 GlyphPackInBits;\r
+ UINT8 BitmapData [1];\r
+} EFI_HII_GIBT_VARIABILITY_BLOCK;\r
+\r
typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {\r
EFI_HII_GLYPH_BLOCK Header;\r
UINT8 SkipCount;\r
#define EFI_HII_IIBT_IMAGE_24BIT 0x16\r
#define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17\r
#define EFI_HII_IIBT_IMAGE_JPEG 0x18\r
+#define EFI_HII_IIBT_IMAGE_PNG 0x19\r
#define EFI_HII_IIBT_DUPLICATE 0x20\r
#define EFI_HII_IIBT_SKIP2 0x21\r
#define EFI_HII_IIBT_SKIP1 0x22\r
UINT8 Data[1];\r
} EFI_HII_IIBT_JPEG_BLOCK;\r
\r
+typedef struct _EFI_HII_IIBT_PNG_BLOCK {\r
+ EFI_HII_IMAGE_BLOCK Header;\r
+ UINT32 Size;\r
+ UINT8 Data[1];\r
+} EFI_HII_IIBT_PNG_BLOCK;\r
+\r
typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {\r
EFI_HII_IMAGE_BLOCK Header;\r
UINT8 SkipCount;\r
UINT8 Day;\r
} EFI_HII_DATE;\r
\r
+typedef struct {\r
+ EFI_QUESTION_ID QuestionId;\r
+ EFI_FORM_ID FormId;\r
+ EFI_GUID FormSetGuid;\r
+ EFI_STRING_ID DevicePath;\r
+} EFI_HII_REF;\r
+\r
typedef union {\r
UINT8 u8;\r
UINT16 u16;\r
EFI_HII_TIME time;\r
EFI_HII_DATE date;\r
EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION\r
- // UINT8 buffer[]; ///< EFI_IFR_TYPE_ORDERED_LIST\r
+ EFI_HII_REF ref; ///< EFI_IFR_TYPE_REF\r
+ // UINT8 buffer[]; ///< EFI_IFR_TYPE_BUFFER\r
} EFI_IFR_TYPE_VALUE;\r
\r
//\r
#define EFI_IFR_INCONSISTENT_IF_OP 0x11\r
#define EFI_IFR_EQ_ID_VAL_OP 0x12\r
#define EFI_IFR_EQ_ID_ID_OP 0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP 0x14\r
+#define EFI_IFR_EQ_ID_VAL_LIST_OP 0x14\r
#define EFI_IFR_AND_OP 0x15\r
#define EFI_IFR_OR_OP 0x16\r
#define EFI_IFR_NOT_OP 0x17\r
#define EFI_IFR_CATENATE_OP 0x5E\r
#define EFI_IFR_GUID_OP 0x5F\r
#define EFI_IFR_SECURITY_OP 0x60\r
+#define EFI_IFR_MODAL_TAG_OP 0x61\r
+#define EFI_IFR_REFRESH_ID_OP 0x62\r
+#define EFI_IFR_WARNING_IF_OP 0x63\r
+#define EFI_IFR_MATCH2_OP 0x64\r
\r
//\r
// Definitions of IFR Standard Headers\r
//\r
// Flag values of EFI_IFR_QUESTION_HEADER\r
//\r
-#define EFI_IFR_FLAG_READ_ONLY 0x01\r
-#define EFI_IFR_FLAG_CALLBACK 0x04\r
-#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
-#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80\r
+#define EFI_IFR_FLAG_READ_ONLY 0x01\r
+#define EFI_IFR_FLAG_CALLBACK 0x04\r
+#define EFI_IFR_FLAG_RESET_REQUIRED 0x10\r
+#define EFI_IFR_FLAG_RECONNECT_REQUIRED 0x40\r
+#define EFI_IFR_FLAG_OPTIONS_ONLY 0x80\r
\r
//\r
// Definition for Opcode Reference\r
} EFI_IFR_DEFAULTSTORE;\r
\r
//\r
-// Default Identifier of default store \r
+// Default Identifier of default store\r
//\r
#define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000\r
#define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001\r
EFI_VARSTORE_ID VarStoreId;\r
EFI_GUID Guid;\r
UINT32 Attributes;\r
+ UINT16 Size;\r
+ UINT8 Name[1];\r
} EFI_IFR_VARSTORE_EFI;\r
\r
typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {\r
EFI_IMAGE_ID Id;\r
} EFI_IFR_IMAGE;\r
\r
+typedef struct _EFI_IFR_MODAL_TAG {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_MODAL_TAG;\r
+\r
typedef struct _EFI_IFR_LOCKED {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_LOCKED;\r
EFI_IFR_TYPE_VALUE Value;\r
} EFI_IFR_DEFAULT;\r
\r
+typedef struct _EFI_IFR_DEFAULT_2 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ UINT16 DefaultId;\r
+ UINT8 Type;\r
+} EFI_IFR_DEFAULT_2;\r
+\r
typedef struct _EFI_IFR_VALUE {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_VALUE;\r
EFI_STRING_ID DevicePath;\r
} EFI_IFR_REF4;\r
\r
+typedef struct _EFI_IFR_REF5 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_IFR_QUESTION_HEADER Question;\r
+} EFI_IFR_REF5;\r
+\r
typedef struct _EFI_IFR_RESET_BUTTON {\r
EFI_IFR_OP_HEADER Header;\r
EFI_IFR_STATEMENT_HEADER Statement;\r
EFI_STRING_ID Error;\r
} EFI_IFR_NO_SUBMIT_IF;\r
\r
+typedef struct _EFI_IFR_WARNING_IF {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_STRING_ID Warning;\r
+ UINT8 TimeOut;\r
+} EFI_IFR_WARNING_IF;\r
+\r
typedef struct _EFI_IFR_REFRESH {\r
EFI_IFR_OP_HEADER Header;\r
UINT8 RefreshInterval;\r
#define EFI_IFR_TYPE_UNDEFINED 0x09\r
#define EFI_IFR_TYPE_ACTION 0x0A\r
#define EFI_IFR_TYPE_BUFFER 0x0B\r
+#define EFI_IFR_TYPE_REF 0x0C\r
\r
#define EFI_IFR_OPTION_DEFAULT 0x10\r
#define EFI_IFR_OPTION_DEFAULT_MFG 0x20\r
//Optional Data Follows\r
} EFI_IFR_GUID;\r
\r
+typedef struct _EFI_IFR_REFRESH_ID {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_GUID RefreshEventGroupId;\r
+} EFI_IFR_REFRESH_ID;\r
+\r
typedef struct _EFI_IFR_DUP {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_DUP;\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_MATCH;\r
\r
+typedef struct _EFI_IFR_MATCH2 {\r
+ EFI_IFR_OP_HEADER Header;\r
+ EFI_GUID SyntaxType;\r
+} EFI_IFR_MATCH2;\r
+\r
typedef struct _EFI_IFR_MULTIPLY {\r
EFI_IFR_OP_HEADER Header;\r
} EFI_IFR_MULTIPLY;\r
\r
typedef struct _EFI_IFR_FORM_MAP_METHOD {\r
///\r
- /// The string identifier which provides the human-readable name of \r
+ /// The string identifier which provides the human-readable name of\r
/// the configuration method for this standards map form.\r
///\r
EFI_STRING_ID MethodTitle;\r
///\r
- /// Identifier which uniquely specifies the configuration methods \r
+ /// Identifier which uniquely specifies the configuration methods\r
/// associated with this standards map form.\r
///\r
EFI_GUID MethodIdentifier;\r
\r
typedef struct _EFI_IFR_FORM_MAP {\r
///\r
- /// The sequence that defines the type of opcode as well as the length \r
- /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP. \r
+ /// The sequence that defines the type of opcode as well as the length\r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP.\r
///\r
EFI_IFR_OP_HEADER Header;\r
///\r
\r
typedef struct _EFI_IFR_SET {\r
///\r
- /// The sequence that defines the type of opcode as well as the length \r
- /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP. \r
+ /// The sequence that defines the type of opcode as well as the length\r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP.\r
///\r
EFI_IFR_OP_HEADER Header;\r
///\r
- /// Specifies the identifier of a previously declared variable store to \r
- /// use when storing the question's value. \r
+ /// Specifies the identifier of a previously declared variable store to\r
+ /// use when storing the question's value.\r
///\r
EFI_VARSTORE_ID VarStoreId;\r
union {\r
UINT16 VarOffset;\r
} VarStoreInfo;\r
///\r
- /// Specifies the type used for storage. \r
+ /// Specifies the type used for storage.\r
///\r
UINT8 VarStoreType;\r
} EFI_IFR_SET;\r
\r
typedef struct _EFI_IFR_GET {\r
///\r
- /// The sequence that defines the type of opcode as well as the length \r
- /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP. \r
+ /// The sequence that defines the type of opcode as well as the length\r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP.\r
///\r
EFI_IFR_OP_HEADER Header;\r
///\r
- /// Specifies the identifier of a previously declared variable store to \r
- /// use when retrieving the value. \r
+ /// Specifies the identifier of a previously declared variable store to\r
+ /// use when retrieving the value.\r
///\r
EFI_VARSTORE_ID VarStoreId;\r
union {\r
UINT16 VarOffset;\r
} VarStoreInfo;\r
///\r
- /// Specifies the type used for storage. \r
+ /// Specifies the type used for storage.\r
///\r
UINT8 VarStoreType;\r
} EFI_IFR_GET;\r
///\r
/// Each enumeration values maps a physical key on a keyboard.\r
///\r
-typedef enum { \r
+typedef enum {\r
EfiKeyLCtrl,\r
- EfiKeyA0, \r
+ EfiKeyA0,\r
EfiKeyLAlt,\r
EfiKeySpaceBar,\r
EfiKeyA2,\r
///\r
CHAR16 ShiftedAltGrUnicode;\r
///\r
- /// Modifier keys are defined to allow for special functionality that is not necessarily \r
- /// accomplished by a printable character. Many of these modifier keys are flags to toggle \r
+ /// Modifier keys are defined to allow for special functionality that is not necessarily\r
+ /// accomplished by a printable character. Many of these modifier keys are flags to toggle\r
/// certain state bits on and off inside of a keyboard driver.\r
///\r
UINT16 Modifier;\r
} EFI_KEY_DESCRIPTOR;\r
\r
///\r
-/// A key which is affected by all the standard shift modifiers. \r
+/// A key which is affected by all the standard shift modifiers.\r
/// Most keys would be expected to have this bit active.\r
///\r
#define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001\r
///\r
typedef struct _EFI_IFR_ANIMATION {\r
///\r
- /// Standard opcode header, where Header.OpCode is \r
+ /// Standard opcode header, where Header.OpCode is\r
/// EFI_IFR_ANIMATION_OP.\r
///\r
EFI_IFR_OP_HEADER Header;\r
///\r
EFI_HII_PACKAGE_HEADER Header;\r
///\r
- /// Offset, relative to this header, of the animation information. If \r
+ /// Offset, relative to this header, of the animation information. If\r
/// this is zero, then there are no animation sequences in the package.\r
///\r
UINT32 AnimationInfoOffset;\r
\r
typedef struct _EFI_HII_ANIMATION_CELL {\r
///\r
- /// The X offset from the upper left hand corner of the logical \r
+ /// The X offset from the upper left hand corner of the logical\r
/// window to position the indexed image.\r
///\r
UINT16 OffsetX;\r
///\r
- /// The Y offset from the upper left hand corner of the logical \r
+ /// The Y offset from the upper left hand corner of the logical\r
/// window to position the indexed image.\r
///\r
UINT16 OffsetY;\r
///\r
- /// The image to display at the specified offset from the upper left \r
+ /// The image to display at the specified offset from the upper left\r
/// hand corner of the logical window.\r
///\r
EFI_IMAGE_ID ImageId;\r
///\r
- /// The number of milliseconds to delay after displaying the indexed \r
- /// image and before continuing on to the next linked image. If value \r
+ /// The number of milliseconds to delay after displaying the indexed\r
+ /// image and before continuing on to the next linked image. If value\r
/// is zero, no delay.\r
///\r
UINT16 Delay;\r
///\r
typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES_BLOCK {\r
///\r
- /// This is image that is to be reference by the image protocols, if the \r
- /// animation function is not supported or disabled. This image can \r
- /// be one particular image from the animation sequence (if any one \r
- /// of the animation frames has a complete image) or an alternate \r
- /// image that can be displayed alone. If the value is zero, no image \r
+ /// This is image that is to be reference by the image protocols, if the\r
+ /// animation function is not supported or disabled. This image can\r
+ /// be one particular image from the animation sequence (if any one\r
+ /// of the animation frames has a complete image) or an alternate\r
+ /// image that can be displayed alone. If the value is zero, no image\r
/// is displayed.\r
///\r
EFI_IMAGE_ID DftImageId;\r
///\r
UINT16 Height;\r
///\r
- /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the\r
/// animation sequence.\r
///\r
UINT16 CellCount;\r
\r
///\r
/// An animation block to describe an animation sequence that does not cycle,\r
-/// and where the logical window is cleared to the specified color before \r
+/// and where the logical window is cleared to the specified color before\r
/// the next image is displayed.\r
///\r
typedef struct _EFI_HII_AIBT_CLEAR_IMAGES_BLOCK {\r
///\r
- /// This is image that is to be reference by the image protocols, if the \r
- /// animation function is not supported or disabled. This image can \r
- /// be one particular image from the animation sequence (if any one \r
- /// of the animation frames has a complete image) or an alternate \r
- /// image that can be displayed alone. If the value is zero, no image \r
+ /// This is image that is to be reference by the image protocols, if the\r
+ /// animation function is not supported or disabled. This image can\r
+ /// be one particular image from the animation sequence (if any one\r
+ /// of the animation frames has a complete image) or an alternate\r
+ /// image that can be displayed alone. If the value is zero, no image\r
/// is displayed.\r
///\r
EFI_IMAGE_ID DftImageId;\r
///\r
UINT16 Height;\r
///\r
- /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the\r
/// animation sequence.\r
///\r
UINT16 CellCount;\r
///\r
- /// The color to clear the logical window to before displaying the \r
+ /// The color to clear the logical window to before displaying the\r
/// indexed image.\r
///\r
EFI_HII_RGB_PIXEL BackgndColor;\r
\r
///\r
/// An animation block to describe an animation sequence that does not cycle,\r
-/// and where the screen is restored to the original state before the next \r
+/// and where the screen is restored to the original state before the next\r
/// image is displayed.\r
///\r
typedef struct _EFI_HII_AIBT_RESTORE_SCRN_BLOCK {\r
///\r
- /// This is image that is to be reference by the image protocols, if the \r
- /// animation function is not supported or disabled. This image can \r
- /// be one particular image from the animation sequence (if any one \r
- /// of the animation frames has a complete image) or an alternate \r
- /// image that can be displayed alone. If the value is zero, no image \r
+ /// This is image that is to be reference by the image protocols, if the\r
+ /// animation function is not supported or disabled. This image can\r
+ /// be one particular image from the animation sequence (if any one\r
+ /// of the animation frames has a complete image) or an alternate\r
+ /// image that can be displayed alone. If the value is zero, no image\r
/// is displayed.\r
///\r
EFI_IMAGE_ID DftImageId;\r
///\r
UINT16 Height;\r
///\r
- /// The number of EFI_HII_ANIMATION_CELL contained in the \r
+ /// The number of EFI_HII_ANIMATION_CELL contained in the\r
/// animation sequence.\r
///\r
UINT16 CellCount;\r
\r
///\r
/// An animation block to describe an animation sequence that continuously cycles,\r
-/// and where the logical window is cleared to the specified color before \r
+/// and where the logical window is cleared to the specified color before\r
/// the next image is displayed.\r
///\r
typedef EFI_HII_AIBT_CLEAR_IMAGES_BLOCK EFI_HII_AIBT_CLEAR_IMAGES_LOOP_BLOCK;\r
\r
///\r
/// An animation block to describe an animation sequence that continuously cycles,\r
-/// and where the screen is restored to the original state before \r
+/// and where the screen is restored to the original state before\r
/// the next image is displayed.\r
///\r
typedef EFI_HII_AIBT_RESTORE_SCRN_BLOCK EFI_HII_AIBT_RESTORE_SCRN_LOOP_BLOCK;\r
///\r
typedef struct _EFI_HII_AIBT_DUPLICATE_BLOCK {\r
///\r
- /// The previously defined animation ID with the exact same \r
+ /// The previously defined animation ID with the exact same\r
/// animation information.\r
///\r
EFI_ANIMATION_ID AnimationId;\r
/// token usages.\r
///\r
///\r
-/// STRING_TOKEN is not defined in UEFI specification. But it is placed \r
+/// STRING_TOKEN is not defined in UEFI specification. But it is placed\r
/// here for the easy access by C files and VFR source files.\r
///\r
#define STRING_TOKEN(t) t\r
\r
+///\r
+/// IMAGE_TOKEN is not defined in UEFI specification. But it is placed\r
+/// here for the easy access by C files and VFR source files.\r
+///\r
+#define IMAGE_TOKEN(t) t\r
+\r
#endif\r