]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Uefi/UefiInternalFormRepresentation.h
MdePkg UefiHii: Add IMAGE_TOKEN macro to access image resource in C and VFR
[mirror_edk2.git] / MdePkg / Include / Uefi / UefiInternalFormRepresentation.h
index 80ae3f749021aebad865a7cc0bea93840ac6d911..ae5602f0f80279bb58d844b83a99f7bec630ed8a 100644 (file)
@@ -3,14 +3,15 @@
   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 - 2009, Intel Corporation                                                         \r
-  All rights reserved. This program and the accompanying materials                          \r
-  are licensed and made available under the terms and conditions of the BSD License         \r
-  which accompanies this distribution.  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
+Copyright (c) 2006 - 2016, 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
 \r
   @par Revision Reference:\r
   These definitions are from UEFI 2.1 and 2.2.\r
@@ -86,7 +87,7 @@ typedef struct {
 //\r
 \r
 ///\r
-/// Contents of EFI_NARROW_GLYPH.Attributes\r
+/// Contents of EFI_NARROW_GLYPH.Attributes.\r
 ///@{\r
 #define EFI_GLYPH_NON_SPACING                0x01\r
 #define EFI_GLYPH_WIDE                       0x02\r
@@ -187,7 +188,7 @@ typedef struct _EFI_HII_GLYPH_INFO {
 } EFI_HII_GLYPH_INFO;\r
 \r
 ///\r
-/// The fixed header consists of a standard record header and\r
+/// The fixed header consists of a standard record header,\r
 /// then the character values in this section, the flags\r
 /// (including the encoding method) and the offsets of the glyph\r
 /// information, the glyph bitmaps and the character map.\r
@@ -209,6 +210,7 @@ typedef struct _EFI_HII_FONT_PACKAGE_HDR {
 #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
@@ -281,6 +283,13 @@ typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
   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
@@ -324,8 +333,8 @@ typedef struct _EFI_HII_GUID_PACKAGE_HDR {
 // Section 27.3.6\r
 //\r
 \r
-#define UEFI_CONFIG_LANG  "x-UEFI"\r
-#define UEFI_CONFIG_LANG2 "x-i-UEFI"\r
+#define UEFI_CONFIG_LANG   "x-UEFI"\r
+#define UEFI_CONFIG_LANG_2 "x-i-UEFI"\r
 \r
 ///\r
 /// The fixed header consists of a standard record header and then the string identifiers\r
@@ -489,6 +498,7 @@ typedef struct _EFI_HII_IMAGE_BLOCK {
 #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
@@ -609,6 +619,12 @@ typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
   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
@@ -658,6 +674,13 @@ typedef struct {
   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
@@ -667,7 +690,8 @@ typedef union {
   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
@@ -692,7 +716,7 @@ typedef union {
 #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
@@ -715,8 +739,8 @@ typedef union {
 #define EFI_IFR_VERSION_OP             0x28\r
 #define EFI_IFR_END_OP                 0x29\r
 #define EFI_IFR_MATCH_OP               0x2A\r
-#define EFI_IFR_SET_OP                 0x2C\r
 #define EFI_IFR_GET_OP                 0x2B\r
+#define EFI_IFR_SET_OP                 0x2C\r
 #define EFI_IFR_READ_OP                0x2D\r
 #define EFI_IFR_WRITE_OP               0x2E\r
 #define EFI_IFR_EQUAL_OP               0x2F\r
@@ -769,6 +793,10 @@ typedef union {
 #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
@@ -800,10 +828,11 @@ typedef struct _EFI_IFR_QUESTION_HEADER {
 //\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
@@ -841,6 +870,8 @@ typedef struct _EFI_IFR_VARSTORE_EFI {
   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
@@ -873,6 +904,10 @@ typedef struct _EFI_IFR_IMAGE {
   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
@@ -889,6 +924,12 @@ typedef struct _EFI_IFR_DEFAULT {
   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
@@ -946,6 +987,11 @@ typedef struct _EFI_IFR_REF4 {
   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
@@ -1099,6 +1145,12 @@ typedef struct _EFI_IFR_NO_SUBMIT_IF {
   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
@@ -1132,6 +1184,7 @@ typedef struct _EFI_IFR_ONE_OF_OPTION {
 #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
@@ -1142,6 +1195,11 @@ typedef struct _EFI_IFR_GUID {
   //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
@@ -1274,10 +1332,10 @@ typedef struct _EFI_IFR_TO_BOOLEAN {
 ///\r
 /// For EFI_IFR_TO_STRING, when converting from\r
 /// unsigned integers, these flags control the format:\r
-/// 0 = unsigned decimal\r
-/// 1 = signed decimal\r
-/// 2 = hexadecimal (lower-case alpha)\r
-/// 3 = hexadecimal (upper-case alpha)\r
+/// 0 = unsigned decimal.\r
+/// 1 = signed decimal.\r
+/// 2 = hexadecimal (lower-case alpha).\r
+/// 3 = hexadecimal (upper-case alpha).\r
 ///@{\r
 #define EFI_IFR_STRING_UNSIGNED_DEC      0\r
 #define EFI_IFR_STRING_SIGNED_DEC        1\r
@@ -1287,8 +1345,8 @@ typedef struct _EFI_IFR_TO_BOOLEAN {
 \r
 ///\r
 /// When converting from a buffer, these flags control the format:\r
-/// 0 = ASCII\r
-/// 8 = Unicode\r
+/// 0 = ASCII.\r
+/// 8 = Unicode.\r
 ///@{\r
 #define EFI_IFR_STRING_ASCII             0\r
 #define EFI_IFR_STRING_UNICODE           8\r
@@ -1359,6 +1417,11 @@ typedef struct _EFI_IFR_MATCH {
   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
@@ -1459,7 +1522,7 @@ typedef struct _EFI_IFR_FORM_MAP {
   ///\r
   /// One or more configuration method's name and unique identifier.\r
   ///\r
-  EFI_IFR_FORM_MAP_METHOD  Methods[1];\r
+  // EFI_IFR_FORM_MAP_METHOD  Methods[];\r
 } EFI_IFR_FORM_MAP;\r
 \r
 typedef struct _EFI_IFR_SET {\r
@@ -1483,6 +1546,10 @@ typedef struct _EFI_IFR_SET {
     ///\r
     UINT16           VarOffset;\r
   }                  VarStoreInfo;\r
+  ///\r
+  /// Specifies the type used for storage. \r
+  ///\r
+  UINT8              VarStoreType;\r
 } EFI_IFR_SET;\r
 \r
 typedef struct _EFI_IFR_GET {\r
@@ -1774,7 +1841,7 @@ typedef struct _EFI_IFR_ANIMATION {
 } EFI_IFR_ANIMATION;\r
 \r
 ///\r
-/// HII animation package header\r
+/// HII animation package header.\r
 ///\r
 typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {\r
   ///\r
@@ -1790,7 +1857,7 @@ typedef struct _EFI_HII_ANIMATION_PACKAGE_HDR {
 \r
 ///\r
 /// Animation information is encoded as a series of blocks,\r
-/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK\r
+/// with each block prefixed by a single byte header EFI_HII_ANIMATION_BLOCK.\r
 ///\r
 typedef struct _EFI_HII_ANIMATION_BLOCK {\r
   UINT8  BlockType;\r
@@ -1798,7 +1865,7 @@ typedef struct _EFI_HII_ANIMATION_BLOCK {
 } EFI_HII_ANIMATION_BLOCK;\r
 \r
 ///\r
-/// Animation block types\r
+/// Animation block types.\r
 ///\r
 #define EFI_HII_AIBT_END                 0x00\r
 #define EFI_HII_AIBT_OVERLAY_IMAGES      0x10\r
@@ -1821,11 +1888,11 @@ typedef struct _EFI_HII_ANIMATION_BLOCK {
 \r
 typedef struct _EFI_HII_AIBT_EXT1_BLOCK  {\r
   ///\r
-  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT1.\r
   ///\r
   EFI_HII_ANIMATION_BLOCK  Header;\r
   ///\r
-  /// The block type\r
+  /// The block type.\r
   ///\r
   UINT8                    BlockType2;\r
   ///\r
@@ -1836,7 +1903,7 @@ typedef struct _EFI_HII_AIBT_EXT1_BLOCK  {
 \r
 typedef struct _EFI_HII_AIBT_EXT2_BLOCK {\r
   ///\r
-  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT2.\r
   ///\r
   EFI_HII_ANIMATION_BLOCK  Header;\r
   ///\r
@@ -1851,7 +1918,7 @@ typedef struct _EFI_HII_AIBT_EXT2_BLOCK {
 \r
 typedef struct _EFI_HII_AIBT_EXT4_BLOCK {\r
   ///\r
-  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4\r
+  /// Standard animation header, where Header.BlockType = EFI_HII_AIBT_EXT4.\r
   ///\r
   EFI_HII_ANIMATION_BLOCK  Header;\r
   ///\r
@@ -1892,7 +1959,7 @@ typedef struct _EFI_HII_ANIMATION_CELL {
 /// An animation block to describe an animation sequence that does not cycle, and\r
 /// where one image is simply displayed over the previous image.\r
 ///\r
-typedef struct _EFI_HII_AIBT_OVERLAY_IMAGES {\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
@@ -2059,4 +2126,10 @@ typedef struct _EFI_HII_AIBT_SKIP2_BLOCK {
 ///\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