UefiInternalFormRepresentation.h

Go to the documentation of this file.
00001 /** @file
00002   This file defines the encoding for the VFR (Visual Form Representation) language.
00003   IFR is primarily consumed by the EFI presentation engine, and produced by EFI
00004   internal application and drivers as well as all add-in card option-ROM drivers
00005 
00006   Copyright (c) 2006 - 2008, Intel Corporation
00007   All rights reserved. This program and the accompanying materials
00008   are licensed and made available under the terms and conditions of the BSD License
00009   which accompanies this distribution.  The full text of the license may be found at
00010   http://opensource.org/licenses/bsd-license.php
00011 
00012   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
00013   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
00014 
00015   @par Revision Reference:
00016   These definitions are from UEFI2.1.
00017 
00018 **/
00019 
00020 #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
00021 #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
00022 
00023 ///
00024 /// The following types are currently defined:
00025 ///
00026 typedef VOID*   EFI_HII_HANDLE;
00027 typedef CHAR16* EFI_STRING;
00028 typedef UINT16  EFI_IMAGE_ID;
00029 typedef UINT16  EFI_QUESTION_ID;
00030 typedef UINT16  EFI_STRING_ID;
00031 typedef UINT16  EFI_FORM_ID;
00032 typedef UINT16  EFI_VARSTORE_ID;
00033 
00034 typedef UINT16  EFI_DEFAULT_ID;
00035 
00036 typedef UINT32  EFI_HII_FONT_STYLE;
00037 
00038 
00039 
00040 #pragma pack(1)
00041 
00042 //
00043 // Definitions for Package Lists and Package Headers
00044 // Section 27.3.1
00045 //
00046 
00047 ///
00048 /// The header found at the start of each package list.
00049 ///
00050 typedef struct {
00051   EFI_GUID               PackageListGuid;
00052   UINT32                 PackageLength;
00053 } EFI_HII_PACKAGE_LIST_HEADER;
00054 
00055 ///
00056 /// The header found at the start of each package.
00057 ///
00058 typedef struct {
00059   UINT32  Length:24;
00060   UINT32  Type:8;
00061   // UINT8  Data[...];
00062 } EFI_HII_PACKAGE_HEADER;
00063 
00064 //
00065 // Value of HII package type
00066 //
00067 #define EFI_HII_PACKAGE_TYPE_ALL             0x00
00068 #define EFI_HII_PACKAGE_TYPE_GUID            0x01
00069 #define EFI_HII_PACKAGE_FORMS                0x02
00070 #define EFI_HII_PACKAGE_STRINGS              0x04
00071 #define EFI_HII_PACKAGE_FONTS                0x05
00072 #define EFI_HII_PACKAGE_IMAGES               0x06
00073 #define EFI_HII_PACKAGE_SIMPLE_FONTS         0x07
00074 #define EFI_HII_PACKAGE_DEVICE_PATH          0x08
00075 #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT      0x09
00076 #define EFI_HII_PACKAGE_END                  0xDF
00077 #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN    0xE0
00078 #define EFI_HII_PACKAGE_TYPE_SYSTEM_END      0xFF
00079 
00080 //
00081 // Definitions for Simplified Font Package
00082 // Section 27.3.2
00083 //
00084 
00085 //
00086 // Contents of EFI_NARROW_GLYPH.Attributes
00087 //
00088 #define EFI_GLYPH_NON_SPACING                0x01
00089 #define EFI_GLYPH_WIDE                       0x02
00090 #define EFI_GLYPH_HEIGHT                     19
00091 #define EFI_GLYPH_WIDTH                      8
00092 
00093 typedef struct {
00094   CHAR16                 UnicodeWeight;
00095   UINT8                  Attributes;
00096   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
00097 } EFI_NARROW_GLYPH;
00098 
00099 typedef struct {
00100   CHAR16                 UnicodeWeight;
00101   UINT8                  Attributes;
00102   UINT8                  GlyphCol1[EFI_GLYPH_HEIGHT];
00103   UINT8                  GlyphCol2[EFI_GLYPH_HEIGHT];
00104   UINT8                  Pad[3];
00105 } EFI_WIDE_GLYPH;
00106 
00107 ///
00108 /// A simplified font package consists of a font header
00109 /// followed by a series of glyph structures.
00110 ///
00111 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR {
00112   EFI_HII_PACKAGE_HEADER Header;
00113   UINT16                 NumberOfNarrowGlyphs;
00114   UINT16                 NumberOfWideGlyphs;
00115   // EFI_NARROW_GLYPH       NarrowGlyphs[];
00116   // EFI_WIDE_GLYPH         WideGlyphs[];
00117 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR;
00118 
00119 //
00120 // Definitions for Font Package
00121 // Section 27.3.3
00122 //
00123 
00124 //
00125 // Value for font style
00126 //
00127 #define EFI_HII_FONT_STYLE_NORMAL            0x00000000
00128 #define EFI_HII_FONT_STYLE_BOLD              0x00000001
00129 #define EFI_HII_FONT_STYLE_ITALIC            0x00000002
00130 #define EFI_HII_FONT_STYLE_EMBOSS            0x00010000
00131 #define EFI_HII_FONT_STYLE_OUTLINE           0x00020000
00132 #define EFI_HII_FONT_STYLE_SHADOW            0x00040000
00133 #define EFI_HII_FONT_STYLE_UNDERLINE         0x00080000
00134 #define EFI_HII_FONT_STYLE_DBL_UNDER         0x00100000
00135 
00136 typedef struct _EFI_HII_GLYPH_INFO {
00137   UINT16                 Width;
00138   UINT16                 Height;
00139   INT16                  OffsetX;
00140   INT16                  OffsetY;
00141   INT16                  AdvanceX;
00142 } EFI_HII_GLYPH_INFO;
00143 
00144 ///
00145 /// The fixed header consists of a standard record header and
00146 /// then the character values in this section, the flags
00147 /// (including the encoding method) and the offsets of the glyph
00148 /// information, the glyph bitmaps and the character map.
00149 ///
00150 typedef struct _EFI_HII_FONT_PACKAGE_HDR {
00151   EFI_HII_PACKAGE_HEADER Header;
00152   UINT32                 HdrSize;
00153   UINT32                 GlyphBlockOffset;
00154   EFI_HII_GLYPH_INFO     Cell;
00155   EFI_HII_FONT_STYLE     FontStyle;
00156   CHAR16                 FontFamily[1];
00157 } EFI_HII_FONT_PACKAGE_HDR;
00158 
00159 //
00160 // Value of different glyph info block types
00161 //
00162 #define EFI_HII_GIBT_END                  0x00
00163 #define EFI_HII_GIBT_GLYPH                0x10
00164 #define EFI_HII_GIBT_GLYPHS               0x11
00165 #define EFI_HII_GIBT_GLYPH_DEFAULT        0x12
00166 #define EFI_HII_GIBT_GLYPHS_DEFAULT       0x13
00167 #define EFI_HII_GIBT_DUPLICATE            0x20
00168 #define EFI_HII_GIBT_SKIP2                0x21
00169 #define EFI_HII_GIBT_SKIP1                0x22
00170 #define EFI_HII_GIBT_DEFAULTS             0x23
00171 #define EFI_HII_GIBT_EXT1                 0x30
00172 #define EFI_HII_GIBT_EXT2                 0x31
00173 #define EFI_HII_GIBT_EXT4                 0x32
00174 
00175 typedef struct _EFI_HII_GLYPH_BLOCK {
00176   UINT8                  BlockType;
00177 } EFI_HII_GLYPH_BLOCK;
00178 
00179 //
00180 // Definition of different glyph info block types
00181 //
00182 
00183 typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK {
00184   EFI_HII_GLYPH_BLOCK    Header;
00185   EFI_HII_GLYPH_INFO     Cell;
00186 } EFI_HII_GIBT_DEFAULTS_BLOCK;
00187 
00188 typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK {
00189   EFI_HII_GLYPH_BLOCK    Header;
00190   CHAR16                 CharValue;
00191 } EFI_HII_GIBT_DUPLICATE_BLOCK;
00192 
00193 typedef struct _EFI_GLYPH_GIBT_END_BLOCK {
00194   EFI_HII_GLYPH_BLOCK    Header;
00195 } EFI_GLYPH_GIBT_END_BLOCK;
00196 
00197 typedef struct _EFI_HII_GIBT_EXT1_BLOCK {
00198   EFI_HII_GLYPH_BLOCK    Header;
00199   UINT8                  BlockType2;
00200   UINT8                  Length;
00201 } EFI_HII_GIBT_EXT1_BLOCK;
00202 
00203 typedef struct _EFI_HII_GIBT_EXT2_BLOCK {
00204   EFI_HII_GLYPH_BLOCK    Header;
00205   UINT8                  BlockType2;
00206   UINT16                 Length;
00207 } EFI_HII_GIBT_EXT2_BLOCK;
00208 
00209 typedef struct _EFI_HII_GIBT_EXT4_BLOCK {
00210   EFI_HII_GLYPH_BLOCK    Header;
00211   UINT8                  BlockType2;
00212   UINT32                 Length;
00213 } EFI_HII_GIBT_EXT4_BLOCK;
00214 
00215 typedef struct _EFI_HII_GIBT_GLYPH_BLOCK {
00216   EFI_HII_GLYPH_BLOCK    Header;
00217   EFI_HII_GLYPH_INFO     Cell;
00218   UINT8                  BitmapData[1];
00219 } EFI_HII_GIBT_GLYPH_BLOCK;
00220 
00221 typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK {
00222   EFI_HII_GLYPH_BLOCK    Header;
00223   EFI_HII_GLYPH_INFO     Cell;
00224   UINT16                 Count;
00225   UINT8                  BitmapData[1];
00226 } EFI_HII_GIBT_GLYPHS_BLOCK;
00227 
00228 typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK {
00229   EFI_HII_GLYPH_BLOCK    Header;
00230   UINT8                  BitmapData[1];
00231 } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK;
00232 
00233 typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK {
00234   EFI_HII_GLYPH_BLOCK    Header;
00235   UINT16                 Count;
00236   UINT8                  BitmapData[1];
00237 } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK;
00238 
00239 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK {
00240   EFI_HII_GLYPH_BLOCK    Header;
00241   UINT8                  SkipCount;
00242 } EFI_HII_GIBT_SKIP1_BLOCK;
00243 
00244 typedef struct _EFI_HII_GIBT_SKIP2_BLOCK {
00245   EFI_HII_GLYPH_BLOCK    Header;
00246   UINT16                 SkipCount;
00247 } EFI_HII_GIBT_SKIP2_BLOCK;
00248 
00249 //
00250 // Definitions for Device Path Package
00251 // Section 27.3.4
00252 //
00253 
00254 ///
00255 /// The device path package is used to carry a device path
00256 /// associated with the package list.
00257 ///
00258 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE {
00259   EFI_HII_PACKAGE_HEADER   Header;
00260   // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
00261 } EFI_HII_DEVICE_PATH_PACKAGE;
00262 
00263 //
00264 // Definitions for GUID Package
00265 // Section 27.3.5
00266 //
00267 
00268 ///
00269 /// The GUID package is used to carry data where the format is defined by a GUID.
00270 ///
00271 typedef struct _EFI_HII_GUID_PACKAGE_HDR {
00272   EFI_HII_PACKAGE_HEADER  Header;
00273   EFI_GUID                Guid;
00274   // Data per GUID definition may follow
00275 } EFI_HII_GUID_PACKAGE_HDR;
00276 
00277 //
00278 // Definitions for String Package
00279 // Section 27.3.6
00280 //
00281 
00282 #define UEFI_CONFIG_LANG  L"x-UEFI"
00283 #define UEFI_CONFIG_LANG2 L"x-i-UEFI"
00284 
00285 ///
00286 /// The fixed header consists of a standard record header and then the string identifiers
00287 /// contained in this section and the offsets of the string and language information.
00288 ///
00289 typedef struct _EFI_HII_STRING_PACKAGE_HDR {
00290   EFI_HII_PACKAGE_HEADER  Header;
00291   UINT32                  HdrSize;
00292   UINT32                  StringInfoOffset;
00293   CHAR16                  LanguageWindow[16];
00294   EFI_STRING_ID           LanguageName;
00295   CHAR8                   Language[1];
00296 } EFI_HII_STRING_PACKAGE_HDR;
00297 
00298 typedef struct {
00299   UINT8                   BlockType;
00300 } EFI_HII_STRING_BLOCK;
00301 
00302 //
00303 // Value of different string information block types
00304 //
00305 #define EFI_HII_SIBT_END                     0x00
00306 #define EFI_HII_SIBT_STRING_SCSU             0x10
00307 #define EFI_HII_SIBT_STRING_SCSU_FONT        0x11
00308 #define EFI_HII_SIBT_STRINGS_SCSU            0x12
00309 #define EFI_HII_SIBT_STRINGS_SCSU_FONT       0x13
00310 #define EFI_HII_SIBT_STRING_UCS2             0x14
00311 #define EFI_HII_SIBT_STRING_UCS2_FONT        0x15
00312 #define EFI_HII_SIBT_STRINGS_UCS2            0x16
00313 #define EFI_HII_SIBT_STRINGS_UCS2_FONT       0x17
00314 #define EFI_HII_SIBT_DUPLICATE               0x20
00315 #define EFI_HII_SIBT_SKIP2                   0x21
00316 #define EFI_HII_SIBT_SKIP1                   0x22
00317 #define EFI_HII_SIBT_EXT1                    0x30
00318 #define EFI_HII_SIBT_EXT2                    0x31
00319 #define EFI_HII_SIBT_EXT4                    0x32
00320 #define EFI_HII_SIBT_FONT                    0x40
00321 
00322 //
00323 // Definition of different string information block types
00324 //
00325 
00326 typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK {
00327   EFI_HII_STRING_BLOCK    Header;
00328   EFI_STRING_ID           StringId;
00329 } EFI_HII_SIBT_DUPLICATE_BLOCK;
00330 
00331 typedef struct _EFI_HII_SIBT_END_BLOCK {
00332   EFI_HII_STRING_BLOCK    Header;
00333 } EFI_HII_SIBT_END_BLOCK;
00334 
00335 typedef struct _EFI_HII_SIBT_EXT1_BLOCK {
00336   EFI_HII_STRING_BLOCK    Header;
00337   UINT8                   BlockType2;
00338   UINT8                   Length;
00339 } EFI_HII_SIBT_EXT1_BLOCK;
00340 
00341 typedef struct _EFI_HII_SIBT_EXT2_BLOCK {
00342   EFI_HII_STRING_BLOCK    Header;
00343   UINT8                   BlockType2;
00344   UINT16                  Length;
00345 } EFI_HII_SIBT_EXT2_BLOCK;
00346 
00347 typedef struct _EFI_HII_SIBT_EXT4_BLOCK {
00348   EFI_HII_STRING_BLOCK    Header;
00349   UINT8                   BlockType2;
00350   UINT32                  Length;
00351 } EFI_HII_SIBT_EXT4_BLOCK;
00352 
00353 typedef struct _EFI_HII_SIBT_FONT_BLOCK {
00354   EFI_HII_SIBT_EXT2_BLOCK Header;
00355   UINT8                   FontId;
00356   UINT16                  FontSize;
00357   EFI_HII_FONT_STYLE      FontStyle;
00358   CHAR16                  FontName[1];
00359 } EFI_HII_SIBT_FONT_BLOCK;
00360 
00361 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK {
00362   EFI_HII_STRING_BLOCK    Header;
00363   UINT8                   SkipCount;
00364 } EFI_HII_SIBT_SKIP1_BLOCK;
00365 
00366 typedef struct _EFI_HII_SIBT_SKIP2_BLOCK {
00367   EFI_HII_STRING_BLOCK    Header;
00368   UINT16                  SkipCount;
00369 } EFI_HII_SIBT_SKIP2_BLOCK;
00370 
00371 typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK {
00372   EFI_HII_STRING_BLOCK    Header;
00373   UINT8                   StringText[1];
00374 } EFI_HII_SIBT_STRING_SCSU_BLOCK;
00375 
00376 typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK {
00377   EFI_HII_STRING_BLOCK    Header;
00378   UINT8                   FontIdentifier;
00379   UINT8                   StringText[1];
00380 } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK;
00381 
00382 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK {
00383   EFI_HII_STRING_BLOCK    Header;
00384   UINT16                  StringCount;
00385   UINT8                   StringText[1];
00386 } EFI_HII_SIBT_STRINGS_SCSU_BLOCK;
00387 
00388 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK {
00389   EFI_HII_STRING_BLOCK    Header;
00390   UINT8                   FontIdentifier;
00391   UINT16                  StringCount;
00392   UINT8                   StringText[1];
00393 } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK;
00394 
00395 typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK {
00396   EFI_HII_STRING_BLOCK    Header;
00397   CHAR16                  StringText[1];
00398 } EFI_HII_SIBT_STRING_UCS2_BLOCK;
00399 
00400 typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK {
00401   EFI_HII_STRING_BLOCK    Header;
00402   UINT8                   FontIdentifier;
00403   CHAR16                  StringText[1];
00404 } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK;
00405 
00406 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK {
00407   EFI_HII_STRING_BLOCK    Header;
00408   UINT16                  StringCount;
00409   CHAR16                  StringText[1];
00410 } EFI_HII_SIBT_STRINGS_UCS2_BLOCK;
00411 
00412 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK {
00413   EFI_HII_STRING_BLOCK    Header;
00414   UINT8                   FontIdentifier;
00415   UINT16                  StringCount;
00416   CHAR16                  StringText[1];
00417 } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK;
00418 
00419 //
00420 // Definitions for Image Package
00421 // Section 27.3.7
00422 //
00423 
00424 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR {
00425   EFI_HII_PACKAGE_HEADER  Header;
00426   UINT32                  ImageInfoOffset;
00427   UINT32                  PaletteInfoOffset;
00428 } EFI_HII_IMAGE_PACKAGE_HDR;
00429 
00430 typedef struct _EFI_HII_IMAGE_BLOCK {
00431   UINT8                   BlockType;
00432 } EFI_HII_IMAGE_BLOCK;
00433 
00434 //
00435 // Value of different image information block types
00436 //
00437 #define EFI_HII_IIBT_END               0x00
00438 #define EFI_HII_IIBT_IMAGE_1BIT        0x10
00439 #define EFI_HII_IIBT_IMAGE_1BIT_TRANS  0x11
00440 #define EFI_HII_IIBT_IMAGE_4BIT        0x12
00441 #define EFI_HII_IIBT_IMAGE_4BIT_TRANS  0x13
00442 #define EFI_HII_IIBT_IMAGE_8BIT        0x14
00443 #define EFI_HII_IIBT_IMAGE_8BIT_TRANS  0x15
00444 #define EFI_HII_IIBT_IMAGE_24BIT       0x16
00445 #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
00446 #define EFI_HII_IIBT_IMAGE_JPEG        0x18
00447 #define EFI_HII_IIBT_DUPLICATE         0x20
00448 #define EFI_HII_IIBT_SKIP2             0x21
00449 #define EFI_HII_IIBT_SKIP1             0x22
00450 #define EFI_HII_IIBT_EXT1              0x30
00451 #define EFI_HII_IIBT_EXT2              0x31
00452 #define EFI_HII_IIBT_EXT4              0x32
00453 
00454 //
00455 // Definition of different image information block types
00456 //
00457 
00458 typedef struct _EFI_HII_IIBT_END_BLOCK {
00459   EFI_HII_IMAGE_BLOCK          Header;
00460 } EFI_HII_IIBT_END_BLOCK;
00461 
00462 typedef struct _EFI_HII_IIBT_EXT1_BLOCK {
00463   EFI_HII_IMAGE_BLOCK          Header;
00464   UINT8                        BlockType2;
00465   UINT8                        Length;
00466 } EFI_HII_IIBT_EXT1_BLOCK;
00467 
00468 typedef struct _EFI_HII_IIBT_EXT2_BLOCK {
00469   EFI_HII_IMAGE_BLOCK          Header;
00470   UINT8                        BlockType2;
00471   UINT16                       Length;
00472 } EFI_HII_IIBT_EXT2_BLOCK;
00473 
00474 typedef struct _EFI_HII_IIBT_EXT4_BLOCK {
00475   EFI_HII_IMAGE_BLOCK          Header;
00476   UINT8                        BlockType2;
00477   UINT32                       Length;
00478 } EFI_HII_IIBT_EXT4_BLOCK;
00479 
00480 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE {
00481   UINT16                       Width;
00482   UINT16                       Height;
00483   UINT8                        Data[1];
00484 } EFI_HII_IIBT_IMAGE_1BIT_BASE;
00485 
00486 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK {
00487   EFI_HII_IMAGE_BLOCK          Header;
00488   UINT8                        PaletteIndex;
00489   EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
00490 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK;
00491 
00492 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK {
00493   EFI_HII_IMAGE_BLOCK          Header;
00494   UINT8                        PaletteIndex;
00495   EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap;
00496 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK;
00497 
00498 typedef struct _EFI_HII_RGB_PIXEL {
00499   UINT8                        b;
00500   UINT8                        g;
00501   UINT8                        r;
00502 } EFI_HII_RGB_PIXEL;
00503 
00504 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE {
00505   UINT16                       Width;
00506   UINT16                       Height;
00507   EFI_HII_RGB_PIXEL            Bitmap[1];
00508 } EFI_HII_IIBT_IMAGE_24BIT_BASE;
00509 
00510 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK {
00511   EFI_HII_IMAGE_BLOCK           Header;
00512   EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
00513 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK;
00514 
00515 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK {
00516   EFI_HII_IMAGE_BLOCK           Header;
00517   EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap;
00518 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK;
00519 
00520 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE {
00521   UINT16                       Width;
00522   UINT16                       Height;
00523   UINT8                        Data[1];
00524 } EFI_HII_IIBT_IMAGE_4BIT_BASE;
00525 
00526 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK {
00527   EFI_HII_IMAGE_BLOCK          Header;
00528   UINT8                        PaletteIndex;
00529   EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
00530 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK;
00531 
00532 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK {
00533   EFI_HII_IMAGE_BLOCK          Header;
00534   UINT8                        PaletteIndex;
00535   EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap;
00536 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK;
00537 
00538 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE {
00539   UINT16                       Width;
00540   UINT16                       Height;
00541   UINT8                        Data[1];
00542 } EFI_HII_IIBT_IMAGE_8BIT_BASE;
00543 
00544 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK {
00545   EFI_HII_IMAGE_BLOCK          Header;
00546   UINT8                        PaletteIndex;
00547   EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
00548 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK;
00549 
00550 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK {
00551   EFI_HII_IMAGE_BLOCK          Header;
00552   UINT8                        PaletteIndex;
00553   EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap;
00554 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK;
00555 
00556 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK {
00557   EFI_HII_IMAGE_BLOCK          Header;
00558   EFI_IMAGE_ID                 ImageId;
00559 } EFI_HII_IIBT_DUPLICATE_BLOCK;
00560 
00561 typedef struct _EFI_HII_IIBT_JPEG_BLOCK {
00562   EFI_HII_IMAGE_BLOCK          Header;
00563   UINT32                       Size;
00564   UINT8                        Data[1];
00565 } EFI_HII_IIBT_JPEG_BLOCK;
00566 
00567 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK {
00568   EFI_HII_IMAGE_BLOCK          Header;
00569   UINT8                        SkipCount;
00570 } EFI_HII_IIBT_SKIP1_BLOCK;
00571 
00572 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK {
00573   EFI_HII_IMAGE_BLOCK          Header;
00574   UINT16                       SkipCount;
00575 } EFI_HII_IIBT_SKIP2_BLOCK;
00576 
00577 //
00578 // Definitions for Palette Information
00579 //
00580 
00581 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER {
00582   UINT16                       PaletteCount;
00583 } EFI_HII_IMAGE_PALETTE_INFO_HEADER;
00584 
00585 typedef struct _EFI_HII_IMAGE_PALETTE_INFO {
00586   UINT16                       PaletteSize;
00587   EFI_HII_RGB_PIXEL            PaletteValue[1];
00588 } EFI_HII_IMAGE_PALETTE_INFO;
00589 
00590 //
00591 // Definitions for Forms Package
00592 // Section 27.3.8
00593 //
00594 
00595 ///
00596 /// The Forms package is used to carry forms-based encoding data.
00597 ///
00598 typedef struct _EFI_HII_FORM_PACKAGE {
00599   EFI_HII_PACKAGE_HEADER       Header;
00600   // EFI_IFR_OP_HEADER         OpCodeHeader;
00601   // More op-codes follow
00602 } EFI_HII_FORM_PACKAGE;
00603 
00604 typedef struct {
00605   UINT8 Hour;
00606   UINT8 Minute;
00607   UINT8 Second;
00608 } EFI_HII_TIME;
00609 
00610 typedef struct {
00611   UINT16 Year;
00612   UINT8  Month;
00613   UINT8  Day;
00614 } EFI_HII_DATE;
00615 
00616 typedef union {
00617   UINT8           u8;
00618   UINT16          u16;
00619   UINT32          u32;
00620   UINT64          u64;
00621   BOOLEAN         b;
00622   EFI_HII_TIME    time;
00623   EFI_HII_DATE    date;
00624   EFI_STRING_ID   string;
00625 } EFI_IFR_TYPE_VALUE;
00626 
00627 //
00628 // IFR Opcodes
00629 //
00630 #define EFI_IFR_FORM_OP                0x01
00631 #define EFI_IFR_SUBTITLE_OP            0x02
00632 #define EFI_IFR_TEXT_OP                0x03
00633 #define EFI_IFR_IMAGE_OP               0x04
00634 #define EFI_IFR_ONE_OF_OP              0x05
00635 #define EFI_IFR_CHECKBOX_OP            0x06
00636 #define EFI_IFR_NUMERIC_OP             0x07
00637 #define EFI_IFR_PASSWORD_OP            0x08
00638 #define EFI_IFR_ONE_OF_OPTION_OP       0x09
00639 #define EFI_IFR_SUPPRESS_IF_OP         0x0A
00640 #define EFI_IFR_LOCKED_OP              0x0B
00641 #define EFI_IFR_ACTION_OP              0x0C
00642 #define EFI_IFR_RESET_BUTTON_OP        0x0D
00643 #define EFI_IFR_FORM_SET_OP            0x0E
00644 #define EFI_IFR_REF_OP                 0x0F
00645 #define EFI_IFR_NO_SUBMIT_IF_OP        0x10
00646 #define EFI_IFR_INCONSISTENT_IF_OP     0x11
00647 #define EFI_IFR_EQ_ID_VAL_OP           0x12
00648 #define EFI_IFR_EQ_ID_ID_OP            0x13
00649 #define EFI_IFR_EQ_ID_LIST_OP          0x14
00650 #define EFI_IFR_AND_OP                 0x15
00651 #define EFI_IFR_OR_OP                  0x16
00652 #define EFI_IFR_NOT_OP                 0x17
00653 #define EFI_IFR_RULE_OP                0x18
00654 #define EFI_IFR_GRAY_OUT_IF_OP         0x19
00655 #define EFI_IFR_DATE_OP                0x1A
00656 #define EFI_IFR_TIME_OP                0x1B
00657 #define EFI_IFR_STRING_OP              0x1C
00658 #define EFI_IFR_REFRESH_OP             0x1D
00659 #define EFI_IFR_DISABLE_IF_OP          0x1E
00660 #define EFI_IFR_TO_LOWER_OP            0x20
00661 #define EFI_IFR_TO_UPPER_OP            0x21
00662 #define EFI_IFR_ORDERED_LIST_OP        0x23
00663 #define EFI_IFR_VARSTORE_OP            0x24
00664 #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
00665 #define EFI_IFR_VARSTORE_EFI_OP        0x26
00666 #define EFI_IFR_VARSTORE_DEVICE_OP     0x27
00667 #define EFI_IFR_VERSION_OP             0x28
00668 #define EFI_IFR_END_OP                 0x29
00669 #define EFI_IFR_MATCH_OP               0x2A
00670 #define EFI_IFR_EQUAL_OP               0x2F
00671 #define EFI_IFR_NOT_EQUAL_OP           0x30
00672 #define EFI_IFR_GREATER_THAN_OP        0x31
00673 #define EFI_IFR_GREATER_EQUAL_OP       0x32
00674 #define EFI_IFR_LESS_THAN_OP           0x33
00675 #define EFI_IFR_LESS_EQUAL_OP          0x34
00676 #define EFI_IFR_BITWISE_AND_OP         0x35
00677 #define EFI_IFR_BITWISE_OR_OP          0x36
00678 #define EFI_IFR_BITWISE_NOT_OP         0x37
00679 #define EFI_IFR_SHIFT_LEFT_OP          0x38
00680 #define EFI_IFR_SHIFT_RIGHT_OP         0x39
00681 #define EFI_IFR_ADD_OP                 0x3A
00682 #define EFI_IFR_SUBTRACT_OP            0x3B
00683 #define EFI_IFR_MULTIPLY_OP            0x3C
00684 #define EFI_IFR_DIVIDE_OP              0x3D
00685 #define EFI_IFR_MODULO_OP              0x3E
00686 #define EFI_IFR_RULE_REF_OP            0x3F
00687 #define EFI_IFR_QUESTION_REF1_OP       0x40
00688 #define EFI_IFR_QUESTION_REF2_OP       0x41
00689 #define EFI_IFR_UINT8_OP               0x42
00690 #define EFI_IFR_UINT16_OP              0x43
00691 #define EFI_IFR_UINT32_OP              0x44
00692 #define EFI_IFR_UINT64_OP              0x45
00693 #define EFI_IFR_TRUE_OP                0x46
00694 #define EFI_IFR_FALSE_OP               0x47
00695 #define EFI_IFR_TO_UINT_OP             0x48
00696 #define EFI_IFR_TO_STRING_OP           0x49
00697 #define EFI_IFR_TO_BOOLEAN_OP          0x4A
00698 #define EFI_IFR_MID_OP                 0x4B
00699 #define EFI_IFR_FIND_OP                0x4C
00700 #define EFI_IFR_TOKEN_OP               0x4D
00701 #define EFI_IFR_STRING_REF1_OP         0x4E
00702 #define EFI_IFR_STRING_REF2_OP         0x4F
00703 #define EFI_IFR_CONDITIONAL_OP         0x50
00704 #define EFI_IFR_QUESTION_REF3_OP       0x51
00705 #define EFI_IFR_ZERO_OP                0x52
00706 #define EFI_IFR_ONE_OP                 0x53
00707 #define EFI_IFR_ONES_OP                0x54
00708 #define EFI_IFR_UNDEFINED_OP           0x55
00709 #define EFI_IFR_LENGTH_OP              0x56
00710 #define EFI_IFR_DUP_OP                 0x57
00711 #define EFI_IFR_THIS_OP                0x58
00712 #define EFI_IFR_SPAN_OP                0x59
00713 #define EFI_IFR_VALUE_OP               0x5A
00714 #define EFI_IFR_DEFAULT_OP             0x5B
00715 #define EFI_IFR_DEFAULTSTORE_OP        0x5C
00716 #define EFI_IFR_CATENATE_OP            0x5E
00717 #define EFI_IFR_GUID_OP                0x5F
00718 
00719 //
00720 // Definitions of IFR Standard Headers
00721 // Section 27.3.8.2
00722 //
00723 
00724 typedef struct _EFI_IFR_OP_HEADER {
00725   UINT8                    OpCode;
00726   UINT8                    Length:7;
00727   UINT8                    Scope:1;
00728 } EFI_IFR_OP_HEADER;
00729 
00730 typedef struct _EFI_IFR_STATEMENT_HEADER {
00731   EFI_STRING_ID            Prompt;
00732   EFI_STRING_ID            Help;
00733 } EFI_IFR_STATEMENT_HEADER;
00734 
00735 typedef struct _EFI_IFR_QUESTION_HEADER {
00736   EFI_IFR_STATEMENT_HEADER Header;
00737   EFI_QUESTION_ID          QuestionId;
00738   EFI_VARSTORE_ID          VarStoreId;
00739   union {
00740     EFI_STRING_ID          VarName;
00741     UINT16                 VarOffset;
00742   }                        VarStoreInfo;
00743   UINT8                    Flags;
00744 } EFI_IFR_QUESTION_HEADER;
00745 
00746 //
00747 // Flag values of EFI_IFR_QUESTION_HEADER
00748 //
00749 #define EFI_IFR_FLAG_READ_ONLY         0x01
00750 #define EFI_IFR_FLAG_CALLBACK          0x04
00751 #define EFI_IFR_FLAG_RESET_REQUIRED    0x10
00752 #define EFI_IFR_FLAG_OPTIONS_ONLY      0x80
00753 
00754 //
00755 // Definition for Opcode Reference
00756 // Section 27.3.8.3
00757 //
00758 typedef struct _EFI_IFR_DEFAULTSTORE {
00759   EFI_IFR_OP_HEADER        Header;
00760   EFI_STRING_ID            DefaultName;
00761   UINT16                   DefaultId;
00762 } EFI_IFR_DEFAULTSTORE;
00763 
00764 //
00765 // Default Identifier of default store
00766 //
00767 #define EFI_HII_DEFAULT_CLASS_STANDARD       0x0000
00768 #define EFI_HII_DEFAULT_CLASS_MANUFACTURING  0x0001
00769 #define EFI_HII_DEFAULT_CLASS_SAFE           0x0002
00770 #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
00771 #define EFI_HII_DEFAULT_CLASS_PLATFORM_END   0x7fff
00772 #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
00773 #define EFI_HII_DEFAULT_CLASS_HARDWARE_END   0xbfff
00774 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
00775 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END   0xffff
00776 
00777 typedef struct _EFI_IFR_VARSTORE {
00778   EFI_IFR_OP_HEADER        Header;
00779   EFI_GUID                 Guid;
00780   EFI_VARSTORE_ID          VarStoreId;
00781   UINT16                   Size;
00782   UINT8                    Name[1];
00783 } EFI_IFR_VARSTORE;
00784 
00785 typedef struct _EFI_IFR_VARSTORE_EFI {
00786   EFI_IFR_OP_HEADER        Header;
00787   EFI_VARSTORE_ID          VarStoreId;
00788   EFI_GUID                 Guid;
00789   UINT32                   Attributes;
00790 } EFI_IFR_VARSTORE_EFI;
00791 
00792 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE {
00793   EFI_IFR_OP_HEADER        Header;
00794   EFI_VARSTORE_ID          VarStoreId;
00795   EFI_GUID                 Guid;
00796 } EFI_IFR_VARSTORE_NAME_VALUE;
00797 
00798 typedef struct _EFI_IFR_FORM_SET {
00799   EFI_IFR_OP_HEADER        Header;
00800   EFI_GUID                 Guid;
00801   EFI_STRING_ID            FormSetTitle;
00802   EFI_STRING_ID            Help;
00803 } EFI_IFR_FORM_SET;
00804 
00805 typedef struct _EFI_IFR_END {
00806   EFI_IFR_OP_HEADER        Header;
00807 } EFI_IFR_END;
00808 
00809 typedef struct _EFI_IFR_FORM {
00810   EFI_IFR_OP_HEADER        Header;
00811   UINT16                   FormId;
00812   EFI_STRING_ID            FormTitle;
00813 } EFI_IFR_FORM;
00814 
00815 typedef struct _EFI_IFR_IMAGE {
00816   EFI_IFR_OP_HEADER        Header;
00817   EFI_IMAGE_ID             Id;
00818 } EFI_IFR_IMAGE;
00819 
00820 typedef struct _EFI_IFR_LOCKED {
00821   EFI_IFR_OP_HEADER        Header;
00822 } EFI_IFR_LOCKED;
00823 
00824 typedef struct _EFI_IFR_RULE {
00825   EFI_IFR_OP_HEADER        Header;
00826   UINT8                    RuleId;
00827 } EFI_IFR_RULE;
00828 
00829 typedef struct _EFI_IFR_DEFAULT {
00830   EFI_IFR_OP_HEADER        Header;
00831   UINT16                   DefaultId;
00832   UINT8                    Type;
00833   EFI_IFR_TYPE_VALUE       Value;
00834 } EFI_IFR_DEFAULT;
00835 
00836 typedef struct _EFI_IFR_VALUE {
00837   EFI_IFR_OP_HEADER        Header;
00838 } EFI_IFR_VALUE;
00839 
00840 typedef struct _EFI_IFR_SUBTITLE {
00841   EFI_IFR_OP_HEADER        Header;
00842   EFI_IFR_STATEMENT_HEADER Statement;
00843   UINT8                    Flags;
00844 } EFI_IFR_SUBTITLE;
00845 
00846 #define EFI_IFR_FLAGS_HORIZONTAL       0x01
00847 
00848 typedef struct _EFI_IFR_CHECKBOX {
00849   EFI_IFR_OP_HEADER        Header;
00850   EFI_IFR_QUESTION_HEADER  Question;
00851   UINT8                    Flags;
00852 } EFI_IFR_CHECKBOX;
00853 
00854 #define EFI_IFR_CHECKBOX_DEFAULT       0x01
00855 #define EFI_IFR_CHECKBOX_DEFAULT_MFG   0x02
00856 
00857 typedef struct _EFI_IFR_TEXT {
00858   EFI_IFR_OP_HEADER        Header;
00859   EFI_IFR_STATEMENT_HEADER Statement;
00860   EFI_STRING_ID            TextTwo;
00861 } EFI_IFR_TEXT;
00862 
00863 typedef struct _EFI_IFR_REF {
00864   EFI_IFR_OP_HEADER        Header;
00865   EFI_IFR_QUESTION_HEADER  Question;
00866   EFI_FORM_ID              FormId;
00867 } EFI_IFR_REF;
00868 
00869 typedef struct _EFI_IFR_REF2 {
00870   EFI_IFR_OP_HEADER        Header;
00871   EFI_IFR_QUESTION_HEADER  Question;
00872   EFI_FORM_ID              FormId;
00873   EFI_QUESTION_ID          QuestionId;
00874 } EFI_IFR_REF2;
00875 
00876 typedef struct _EFI_IFR_REF3 {
00877   EFI_IFR_OP_HEADER        Header;
00878   EFI_IFR_QUESTION_HEADER  Question;
00879   EFI_FORM_ID              FormId;
00880   EFI_QUESTION_ID          QuestionId;
00881   EFI_GUID                 FormSetId;
00882 } EFI_IFR_REF3;
00883 
00884 typedef struct _EFI_IFR_REF4 {
00885   EFI_IFR_OP_HEADER        Header;
00886   EFI_IFR_QUESTION_HEADER  Question;
00887   EFI_FORM_ID              FormId;
00888   EFI_QUESTION_ID          QuestionId;
00889   EFI_GUID                 FormSetId;
00890   EFI_STRING_ID            DevicePath;
00891 } EFI_IFR_REF4;
00892 
00893 typedef struct _EFI_IFR_RESET_BUTTON {
00894   EFI_IFR_OP_HEADER        Header;
00895   EFI_IFR_QUESTION_HEADER  Question;
00896   EFI_DEFAULT_ID           DefaultId;
00897 } EFI_IFR_RESET_BUTTON;
00898 
00899 typedef struct _EFI_IFR_ACTION {
00900   EFI_IFR_OP_HEADER        Header;
00901   EFI_IFR_QUESTION_HEADER  Question;
00902   EFI_STRING_ID            QuestionConfig;
00903 } EFI_IFR_ACTION;
00904 
00905 typedef struct _EFI_IFR_ACTION_1 {
00906   EFI_IFR_OP_HEADER        Header;
00907   EFI_IFR_QUESTION_HEADER  Question;
00908 } EFI_IFR_ACTION_1;
00909 
00910 typedef struct _EFI_IFR_DATE {
00911   EFI_IFR_OP_HEADER        Header;
00912   EFI_IFR_QUESTION_HEADER  Question;
00913   UINT8                    Flags;
00914 } EFI_IFR_DATE;
00915 
00916 //
00917 // Flags that describe the behavior of the question.
00918 //
00919 #define EFI_QF_DATE_YEAR_SUPPRESS      0x01
00920 #define EFI_QF_DATE_MONTH_SUPPRESS     0x02
00921 #define EFI_QF_DATE_DAY_SUPPRESS       0x04
00922 
00923 #define EFI_QF_DATE_STORAGE            0x30
00924 #define     QF_DATE_STORAGE_NORMAL     0x00
00925 #define     QF_DATE_STORAGE_TIME       0x10
00926 #define     QF_DATE_STORAGE_WAKEUP     0x20
00927 
00928 typedef union {
00929   struct {
00930     UINT8 MinValue;
00931     UINT8 MaxValue;
00932     UINT8 Step;
00933   } u8;
00934   struct {
00935     UINT16 MinValue;
00936     UINT16 MaxValue;
00937     UINT16 Step;
00938   } u16;
00939   struct {
00940     UINT32 MinValue;
00941     UINT32 MaxValue;
00942     UINT32 Step;
00943   } u32;
00944   struct {
00945     UINT64 MinValue;
00946     UINT64 MaxValue;
00947     UINT64 Step;
00948   } u64;
00949 } MINMAXSTEP_DATA;
00950 
00951 typedef struct _EFI_IFR_NUMERIC {
00952   EFI_IFR_OP_HEADER        Header;
00953   EFI_IFR_QUESTION_HEADER  Question;
00954   UINT8                    Flags;
00955   MINMAXSTEP_DATA          data;
00956 } EFI_IFR_NUMERIC;
00957 
00958 //
00959 // Flags related to the numeric question
00960 //
00961 #define EFI_IFR_NUMERIC_SIZE           0x03
00962 #define   EFI_IFR_NUMERIC_SIZE_1       0x00
00963 #define   EFI_IFR_NUMERIC_SIZE_2       0x01
00964 #define   EFI_IFR_NUMERIC_SIZE_4       0x02
00965 #define   EFI_IFR_NUMERIC_SIZE_8       0x03
00966 
00967 #define EFI_IFR_DISPLAY                0x30
00968 #define   EFI_IFR_DISPLAY_INT_DEC      0x00
00969 #define   EFI_IFR_DISPLAY_UINT_DEC     0x10
00970 #define   EFI_IFR_DISPLAY_UINT_HEX     0x20
00971 
00972 typedef struct _EFI_IFR_ONE_OF {
00973   EFI_IFR_OP_HEADER        Header;
00974   EFI_IFR_QUESTION_HEADER  Question;
00975   UINT8                    Flags;
00976   MINMAXSTEP_DATA          data;
00977 } EFI_IFR_ONE_OF;
00978 
00979 typedef struct _EFI_IFR_STRING {
00980   EFI_IFR_OP_HEADER        Header;
00981   EFI_IFR_QUESTION_HEADER  Question;
00982   UINT8                    MinSize;
00983   UINT8                    MaxSize;
00984   UINT8                    Flags;
00985 } EFI_IFR_STRING;
00986 
00987 #define EFI_IFR_STRING_MULTI_LINE      0x01
00988 
00989 typedef struct _EFI_IFR_PASSWORD {
00990   EFI_IFR_OP_HEADER        Header;
00991   EFI_IFR_QUESTION_HEADER  Question;
00992   UINT16                   MinSize;
00993   UINT16                   MaxSize;
00994 } EFI_IFR_PASSWORD;
00995 
00996 typedef struct _EFI_IFR_ORDERED_LIST {
00997   EFI_IFR_OP_HEADER        Header;
00998   EFI_IFR_QUESTION_HEADER  Question;
00999   UINT8                    MaxContainers;
01000   UINT8                    Flags;
01001 } EFI_IFR_ORDERED_LIST;
01002 
01003 #define EFI_IFR_UNIQUE_SET             0x01
01004 #define EFI_IFR_NO_EMPTY_SET           0x02
01005 
01006 typedef struct _EFI_IFR_TIME {
01007   EFI_IFR_OP_HEADER        Header;
01008   EFI_IFR_QUESTION_HEADER  Question;
01009   UINT8                    Flags;
01010 } EFI_IFR_TIME;
01011 
01012 //
01013 // A bit-mask that determines which unique settings are active for this opcode.
01014 //
01015 #define QF_TIME_HOUR_SUPPRESS          0x01
01016 #define QF_TIME_MINUTE_SUPPRESS        0x02
01017 #define QF_TIME_SECOND_SUPPRESS        0x04
01018 
01019 #define QF_TIME_STORAGE                0x30
01020 #define   QF_TIME_STORAGE_NORMAL       0x00
01021 #define   QF_TIME_STORAGE_TIME         0x10
01022 #define   QF_TIME_STORAGE_WAKEUP       0x20
01023 
01024 typedef struct _EFI_IFR_DISABLE_IF {
01025   EFI_IFR_OP_HEADER        Header;
01026 } EFI_IFR_DISABLE_IF;
01027 
01028 typedef struct _EFI_IFR_SUPPRESS_IF {
01029   EFI_IFR_OP_HEADER        Header;
01030 } EFI_IFR_SUPPRESS_IF;
01031 
01032 typedef struct _EFI_IFR_GRAY_OUT_IF {
01033   EFI_IFR_OP_HEADER        Header;
01034 } EFI_IFR_GRAY_OUT_IF;
01035 
01036 typedef struct _EFI_IFR_INCONSISTENT_IF {
01037   EFI_IFR_OP_HEADER        Header;
01038   EFI_STRING_ID            Error;
01039 } EFI_IFR_INCONSISTENT_IF;
01040 
01041 typedef struct _EFI_IFR_NO_SUBMIT_IF {
01042   EFI_IFR_OP_HEADER        Header;
01043   EFI_STRING_ID            Error;
01044 } EFI_IFR_NO_SUBMIT_IF;
01045 
01046 typedef struct _EFI_IFR_REFRESH {
01047   EFI_IFR_OP_HEADER        Header;
01048   UINT8                    RefreshInterval;
01049 } EFI_IFR_REFRESH;
01050 
01051 typedef struct _EFI_IFR_VARSTORE_DEVICE {
01052   EFI_IFR_OP_HEADER        Header;
01053   EFI_STRING_ID            DevicePath;
01054 } EFI_IFR_VARSTORE_DEVICE;
01055 
01056 typedef struct _EFI_IFR_ONE_OF_OPTION {
01057   EFI_IFR_OP_HEADER        Header;
01058   EFI_STRING_ID            Option;
01059   UINT8                    Flags;
01060   UINT8                    Type;
01061   EFI_IFR_TYPE_VALUE       Value;
01062 } EFI_IFR_ONE_OF_OPTION;
01063 
01064 //
01065 // Types of the option's value.
01066 //
01067 #define EFI_IFR_TYPE_NUM_SIZE_8        0x00
01068 #define EFI_IFR_TYPE_NUM_SIZE_16       0x01
01069 #define EFI_IFR_TYPE_NUM_SIZE_32       0x02
01070 #define EFI_IFR_TYPE_NUM_SIZE_64       0x03
01071 #define EFI_IFR_TYPE_BOOLEAN           0x04
01072 #define EFI_IFR_TYPE_TIME              0x05
01073 #define EFI_IFR_TYPE_DATE              0x06
01074 #define EFI_IFR_TYPE_STRING            0x07
01075 #define EFI_IFR_TYPE_OTHER             0x08
01076 
01077 #define EFI_IFR_OPTION_DEFAULT         0x10
01078 #define EFI_IFR_OPTION_DEFAULT_MFG     0x20
01079 
01080 typedef struct _EFI_IFR_GUID {
01081   EFI_IFR_OP_HEADER        Header;
01082   EFI_GUID                 Guid;
01083   //Optional Data Follows
01084 } EFI_IFR_GUID;
01085 
01086 typedef struct _EFI_IFR_DUP {
01087   EFI_IFR_OP_HEADER        Header;
01088 } EFI_IFR_DUP;
01089 
01090 typedef struct _EFI_IFR_EQ_ID_ID {
01091   EFI_IFR_OP_HEADER        Header;
01092   EFI_QUESTION_ID          QuestionId1;
01093   EFI_QUESTION_ID          QuestionId2;
01094 } EFI_IFR_EQ_ID_ID;
01095 
01096 typedef struct _EFI_IFR_EQ_ID_VAL {
01097   EFI_IFR_OP_HEADER        Header;
01098   EFI_QUESTION_ID          QuestionId;
01099   UINT16                   Value;
01100 } EFI_IFR_EQ_ID_VAL;
01101 
01102 typedef struct _EFI_IFR_EQ_ID_LIST {
01103   EFI_IFR_OP_HEADER        Header;
01104   EFI_QUESTION_ID          QuestionId;
01105   UINT16                   ListLength;
01106   UINT16                   ValueList[1];
01107 } EFI_IFR_EQ_ID_LIST;
01108 
01109 typedef struct _EFI_IFR_UINT8 {
01110   EFI_IFR_OP_HEADER        Header;
01111   UINT8 Value;
01112 } EFI_IFR_UINT8;
01113 
01114 typedef struct _EFI_IFR_UINT16 {
01115   EFI_IFR_OP_HEADER        Header;
01116   UINT16                   Value;
01117 } EFI_IFR_UINT16;
01118 
01119 typedef struct _EFI_IFR_UINT32 {
01120   EFI_IFR_OP_HEADER        Header;
01121   UINT32                   Value;
01122 } EFI_IFR_UINT32;
01123 
01124 typedef struct _EFI_IFR_UINT64 {
01125   EFI_IFR_OP_HEADER        Header;
01126   UINT64 Value;
01127 } EFI_IFR_UINT64;
01128 
01129 typedef struct _EFI_IFR_QUESTION_REF1 {
01130   EFI_IFR_OP_HEADER        Header;
01131   EFI_QUESTION_ID          QuestionId;
01132 } EFI_IFR_QUESTION_REF1;
01133 
01134 typedef struct _EFI_IFR_QUESTION_REF2 {
01135   EFI_IFR_OP_HEADER        Header;
01136 } EFI_IFR_QUESTION_REF2;
01137 
01138 typedef struct _EFI_IFR_QUESTION_REF3 {
01139   EFI_IFR_OP_HEADER        Header;
01140 } EFI_IFR_QUESTION_REF3;
01141 
01142 typedef struct _EFI_IFR_QUESTION_REF3_2 {
01143   EFI_IFR_OP_HEADER        Header;
01144   EFI_STRING_ID            DevicePath;
01145 } EFI_IFR_QUESTION_REF3_2;
01146 
01147 typedef struct _EFI_IFR_QUESTION_REF3_3 {
01148   EFI_IFR_OP_HEADER        Header;
01149   EFI_STRING_ID            DevicePath;
01150   EFI_GUID                 Guid;
01151 } EFI_IFR_QUESTION_REF3_3;
01152 
01153 typedef struct _EFI_IFR_RULE_REF {
01154   EFI_IFR_OP_HEADER        Header;
01155   UINT8                    RuleId;
01156 } EFI_IFR_RULE_REF;
01157 
01158 typedef struct _EFI_IFR_STRING_REF1 {
01159   EFI_IFR_OP_HEADER        Header;
01160   EFI_STRING_ID            StringId;
01161 } EFI_IFR_STRING_REF1;
01162 
01163 typedef struct _EFI_IFR_STRING_REF2 {
01164   EFI_IFR_OP_HEADER        Header;
01165 } EFI_IFR_STRING_REF2;
01166 
01167 typedef struct _EFI_IFR_THIS {
01168   EFI_IFR_OP_HEADER        Header;
01169 } EFI_IFR_THIS;
01170 
01171 typedef struct _EFI_IFR_TRUE {
01172   EFI_IFR_OP_HEADER        Header;
01173 } EFI_IFR_TRUE;
01174 
01175 typedef struct _EFI_IFR_FALSE {
01176   EFI_IFR_OP_HEADER        Header;
01177 } EFI_IFR_FALSE;
01178 
01179 typedef struct _EFI_IFR_ONE {
01180   EFI_IFR_OP_HEADER        Header;
01181 } EFI_IFR_ONE;
01182 
01183 typedef struct _EFI_IFR_ONES {
01184   EFI_IFR_OP_HEADER        Header;
01185 } EFI_IFR_ONES;
01186 
01187 typedef struct _EFI_IFR_ZERO {
01188   EFI_IFR_OP_HEADER        Header;
01189 } EFI_IFR_ZERO;
01190 
01191 typedef struct _EFI_IFR_UNDEFINED {
01192   EFI_IFR_OP_HEADER        Header;
01193 } EFI_IFR_UNDEFINED;
01194 
01195 typedef struct _EFI_IFR_VERSION {
01196   EFI_IFR_OP_HEADER        Header;
01197 } EFI_IFR_VERSION;
01198 
01199 typedef struct _EFI_IFR_LENGTH {
01200   EFI_IFR_OP_HEADER        Header;
01201 } EFI_IFR_LENGTH;
01202 
01203 typedef struct _EFI_IFR_NOT {
01204   EFI_IFR_OP_HEADER        Header;
01205 } EFI_IFR_NOT;
01206 
01207 typedef struct _EFI_IFR_BITWISE_NOT {
01208   EFI_IFR_OP_HEADER        Header;
01209 } EFI_IFR_BITWISE_NOT;
01210 
01211 typedef struct _EFI_IFR_TO_BOOLEAN {
01212   EFI_IFR_OP_HEADER        Header;
01213 } EFI_IFR_TO_BOOLEAN;
01214 
01215 //
01216 // For EFI_IFR_TO_STRING, when converting from
01217 // unsigned integers, these flags control the format:
01218 // 0 = unsigned decimal
01219 // 1 = signed decimal
01220 // 2 = hexadecimal (lower-case alpha)
01221 // 3 = hexadecimal (upper-case alpha)
01222 //
01223 #define EFI_IFR_STRING_UNSIGNED_DEC      0
01224 #define EFI_IFR_STRING_SIGNED_DEC        1
01225 #define EFI_IFR_STRING_LOWERCASE_HEX     2
01226 #define EFI_IFR_STRING_UPPERCASE_HEX     3
01227 //
01228 // When converting from a buffer, these flags control the format:
01229 // 0 = ASCII
01230 // 8 = Unicode
01231 //
01232 #define EFI_IFR_STRING_ASCII             0
01233 #define EFI_IFR_STRING_UNICODE           8
01234 
01235 typedef struct _EFI_IFR_TO_STRING {
01236   EFI_IFR_OP_HEADER        Header;
01237   UINT8                    Format;
01238 } EFI_IFR_TO_STRING;
01239 
01240 typedef struct _EFI_IFR_TO_UINT {
01241   EFI_IFR_OP_HEADER        Header;
01242 } EFI_IFR_TO_UINT;
01243 
01244 typedef struct _EFI_IFR_TO_UPPER {
01245   EFI_IFR_OP_HEADER        Header;
01246 } EFI_IFR_TO_UPPER;
01247 
01248 typedef struct _EFI_IFR_TO_LOWER {
01249   EFI_IFR_OP_HEADER        Header;
01250 } EFI_IFR_TO_LOWER;
01251 
01252 typedef struct _EFI_IFR_ADD {
01253   EFI_IFR_OP_HEADER        Header;
01254 } EFI_IFR_ADD;
01255 
01256 typedef struct _EFI_IFR_AND {
01257   EFI_IFR_OP_HEADER        Header;
01258 } EFI_IFR_AND;
01259 
01260 typedef struct _EFI_IFR_BITWISE_AND {
01261   EFI_IFR_OP_HEADER        Header;
01262 } EFI_IFR_BITWISE_AND;
01263 
01264 typedef struct _EFI_IFR_BITWISE_OR {
01265   EFI_IFR_OP_HEADER        Header;
01266 } EFI_IFR_BITWISE_OR;
01267 
01268 typedef struct _EFI_IFR_CATENATE {
01269   EFI_IFR_OP_HEADER        Header;
01270 } EFI_IFR_CATENATE;
01271 
01272 typedef struct _EFI_IFR_DIVIDE {
01273   EFI_IFR_OP_HEADER        Header;
01274 } EFI_IFR_DIVIDE;
01275 
01276 typedef struct _EFI_IFR_EQUAL {
01277   EFI_IFR_OP_HEADER        Header;
01278 } EFI_IFR_EQUAL;
01279 
01280 typedef struct _EFI_IFR_GREATER_EQUAL {
01281   EFI_IFR_OP_HEADER        Header;
01282 } EFI_IFR_GREATER_EQUAL;
01283 
01284 typedef struct _EFI_IFR_GREATER_THAN {
01285   EFI_IFR_OP_HEADER        Header;
01286 } EFI_IFR_GREATER_THAN;
01287 
01288 typedef struct _EFI_IFR_LESS_EQUAL {
01289   EFI_IFR_OP_HEADER        Header;
01290 } EFI_IFR_LESS_EQUAL;
01291 
01292 typedef struct _EFI_IFR_LESS_THAN {
01293   EFI_IFR_OP_HEADER        Header;
01294 } EFI_IFR_LESS_THAN;
01295 
01296 typedef struct _EFI_IFR_MATCH {
01297   EFI_IFR_OP_HEADER        Header;
01298 } EFI_IFR_MATCH;
01299 
01300 typedef struct _EFI_IFR_MULTIPLY {
01301   EFI_IFR_OP_HEADER        Header;
01302 } EFI_IFR_MULTIPLY;
01303 
01304 typedef struct _EFI_IFR_MODULO {
01305   EFI_IFR_OP_HEADER        Header;
01306 } EFI_IFR_MODULO;
01307 
01308 typedef struct _EFI_IFR_NOT_EQUAL {
01309   EFI_IFR_OP_HEADER        Header;
01310 } EFI_IFR_NOT_EQUAL;
01311 
01312 typedef struct _EFI_IFR_OR {
01313   EFI_IFR_OP_HEADER        Header;
01314 } EFI_IFR_OR;
01315 
01316 typedef struct _EFI_IFR_SHIFT_LEFT {
01317   EFI_IFR_OP_HEADER        Header;
01318 } EFI_IFR_SHIFT_LEFT;
01319 
01320 typedef struct _EFI_IFR_SHIFT_RIGHT {
01321   EFI_IFR_OP_HEADER        Header;
01322 } EFI_IFR_SHIFT_RIGHT;
01323 
01324 typedef struct _EFI_IFR_SUBTRACT {
01325   EFI_IFR_OP_HEADER        Header;
01326 } EFI_IFR_SUBTRACT;
01327 
01328 typedef struct _EFI_IFR_CONDITIONAL {
01329   EFI_IFR_OP_HEADER        Header;
01330 } EFI_IFR_CONDITIONAL;
01331 
01332 //
01333 // Flags governing the matching criteria of EFI_IFR_FIND
01334 //
01335 #define EFI_IFR_FF_CASE_SENSITIVE    0x00
01336 #define EFI_IFR_FF_CASE_INSENSITIVE  0x01
01337 
01338 typedef struct _EFI_IFR_FIND {
01339   EFI_IFR_OP_HEADER        Header;
01340   UINT8                    Format;
01341 } EFI_IFR_FIND;
01342 
01343 typedef struct _EFI_IFR_MID {
01344   EFI_IFR_OP_HEADER        Header;
01345 } EFI_IFR_MID;
01346 
01347 typedef struct _EFI_IFR_TOKEN {
01348   EFI_IFR_OP_HEADER        Header;
01349 } EFI_IFR_TOKEN;
01350 
01351 //
01352 // Flags specifying whether to find the first matching string
01353 // or the first non-matching string.
01354 //
01355 #define EFI_IFR_FLAGS_FIRST_MATCHING     0x00
01356 #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
01357 
01358 typedef struct _EFI_IFR_SPAN {
01359   EFI_IFR_OP_HEADER        Header;
01360   UINT8                    Flags;
01361 } EFI_IFR_SPAN;
01362 
01363 //
01364 // Definitions for Keyboard Package
01365 // Section 27.3.9
01366 // Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
01367 //
01368 
01369 typedef enum {
01370   EfiKeyLCtrl,
01371   EfiKeyA0,
01372   EfiKeyLAlt,
01373   EfiKeySpaceBar,
01374   EfiKeyA2,
01375   EfiKeyA3,
01376   EfiKeyA4,
01377   EfiKeyRCtrl,
01378   EfiKeyLeftArrow,
01379   EfiKeyDownArrow,
01380   EfiKeyRightArrow,
01381   EfiKeyZero,
01382   EfiKeyPeriod,
01383   EfiKeyEnter,
01384   EfiKeyLShift,
01385   EfiKeyB0,
01386   EfiKeyB1,
01387   EfiKeyB2,
01388   EfiKeyB3,
01389   EfiKeyB4,
01390   EfiKeyB5,
01391   EfiKeyB6,
01392   EfiKeyB7,
01393   EfiKeyB8,
01394   EfiKeyB9,
01395   EfiKeyB10,
01396   EfiKeyRShift,
01397   EfiKeyUpArrow,
01398   EfiKeyOne,
01399   EfiKeyTwo,
01400   EfiKeyThree,
01401   EfiKeyCapsLock,
01402   EfiKeyC1,
01403   EfiKeyC2,
01404   EfiKeyC3,
01405   EfiKeyC4,
01406   EfiKeyC5,
01407   EfiKeyC6,
01408   EfiKeyC7,
01409   EfiKeyC8,
01410   EfiKeyC9,
01411   EfiKeyC10,
01412   EfiKeyC11,
01413   EfiKeyC12,
01414   EfiKeyFour,
01415   EfiKeyFive,
01416   EfiKeySix,
01417   EfiKeyPlus,
01418   EfiKeyTab,
01419   EfiKeyD1,
01420   EfiKeyD2,
01421   EfiKeyD3,
01422   EfiKeyD4,
01423   EfiKeyD5,
01424   EfiKeyD6,
01425   EfiKeyD7,
01426   EfiKeyD8,
01427   EfiKeyD9,
01428   EfiKeyD10,
01429   EfiKeyD11,
01430   EfiKeyD12,
01431   EfiKeyD13,
01432   EfiKeyDel,
01433   EfiKeyEnd,
01434   EfiKeyPgDn,
01435   EfiKeySeven,
01436   EfiKeyEight,
01437   EfiKeyNine,
01438   EfiKeyE0,
01439   EfiKeyE1,
01440   EfiKeyE2,
01441   EfiKeyE3,
01442   EfiKeyE4,
01443   EfiKeyE5,
01444   EfiKeyE6,
01445   EfiKeyE7,
01446   EfiKeyE8,
01447   EfiKeyE9,
01448   EfiKeyE10,
01449   EfiKeyE11,
01450   EfiKeyE12,
01451   EfiKeyBackSpace,
01452   EfiKeyIns,
01453   EfiKeyHome,
01454   EfiKeyPgUp,
01455   EfiKeyNLck,
01456   EfiKeySlash,
01457   EfiKeyAsterisk,
01458   EfiKeyMinus,
01459   EfiKeyEsc,
01460   EfiKeyF1,
01461   EfiKeyF2,
01462   EfiKeyF3,
01463   EfiKeyF4,
01464   EfiKeyF5,
01465   EfiKeyF6,
01466   EfiKeyF7,
01467   EfiKeyF8,
01468   EfiKeyF9,
01469   EfiKeyF10,
01470   EfiKeyF11,
01471   EfiKeyF12,
01472   EfiKeyPrint,
01473   EfiKeySLck,
01474   EfiKeyPause
01475 } EFI_KEY;
01476 
01477 typedef struct {
01478   EFI_KEY                 Key;
01479   CHAR16                  Unicode;
01480   CHAR16                  ShiftedUnicode;
01481   CHAR16                  AltGrUnicode;
01482   CHAR16                  ShiftedAltGrUnicode;
01483   UINT16                  Modifier;
01484   UINT16                  AffectedAttribute;
01485 } EFI_KEY_DESCRIPTOR;
01486 
01487 ///
01488 /// A key which is affected by all the standard shift modifiers.
01489 /// Most keys would be expected to have this bit active.
01490 ///
01491 #define EFI_AFFECTED_BY_STANDARD_SHIFT       0x0001
01492 
01493 ///
01494 /// This key is affected by the caps lock so that if a keyboard driver
01495 /// would need to disambiguate between a key which had a "1" defined
01496 /// versus a "a" character.  Having this bit turned on would tell
01497 /// the keyboard driver to use the appropriate shifted state or not.
01498 ///
01499 #define EFI_AFFECTED_BY_CAPS_LOCK            0x0002
01500 
01501 ///
01502 /// Similar to the case of CAPS lock, if this bit is active, the key
01503 /// is affected by the num lock being turned on.
01504 ///
01505 #define EFI_AFFECTED_BY_NUM_LOCK             0x0004
01506 
01507 typedef struct {
01508   UINT16                  LayoutLength;
01509   EFI_GUID                Guid;
01510   UINT32                  LayoutDescriptorStringOffset;
01511   UINT8                   DescriptorCount;
01512   // EFI_KEY_DESCRIPTOR    Descriptors[];
01513 } EFI_HII_KEYBOARD_LAYOUT;
01514 
01515 typedef struct {
01516   EFI_HII_PACKAGE_HEADER  Header;
01517   UINT16                  LayoutCount;
01518   // EFI_HII_KEYBOARD_LAYOUT Layout[];
01519 } EFI_HII_KEYBOARD_PACKAGE_HDR;
01520 
01521 //
01522 // Modifier values
01523 //
01524 #define EFI_NULL_MODIFIER                0x0000
01525 #define EFI_LEFT_CONTROL_MODIFIER        0x0001
01526 #define EFI_RIGHT_CONTROL_MODIFIER       0x0002
01527 #define EFI_LEFT_ALT_MODIFIER            0x0003
01528 #define EFI_RIGHT_ALT_MODIFIER           0x0004
01529 #define EFI_ALT_GR_MODIFIER              0x0005
01530 #define EFI_INSERT_MODIFIER              0x0006
01531 #define EFI_DELETE_MODIFIER              0x0007
01532 #define EFI_PAGE_DOWN_MODIFIER           0x0008
01533 #define EFI_PAGE_UP_MODIFIER             0x0009
01534 #define EFI_HOME_MODIFIER                0x000A
01535 #define EFI_END_MODIFIER                 0x000B
01536 #define EFI_LEFT_SHIFT_MODIFIER          0x000C
01537 #define EFI_RIGHT_SHIFT_MODIFIER         0x000D
01538 #define EFI_CAPS_LOCK_MODIFIER           0x000E
01539 #define EFI_NUM_LOCK_MODIFIER            0x000F
01540 #define EFI_LEFT_ARROW_MODIFIER          0x0010
01541 #define EFI_RIGHT_ARROW_MODIFIER         0x0011
01542 #define EFI_DOWN_ARROW_MODIFIER          0x0012
01543 #define EFI_UP_ARROW_MODIFIER            0x0013
01544 #define EFI_NS_KEY_MODIFIER              0x0014
01545 #define EFI_NS_KEY_DEPENDENCY_MODIFIER   0x0015
01546 #define EFI_FUNCTION_KEY_ONE_MODIFIER    0x0016
01547 #define EFI_FUNCTION_KEY_TWO_MODIFIER    0x0017
01548 #define EFI_FUNCTION_KEY_THREE_MODIFIER  0x0018
01549 #define EFI_FUNCTION_KEY_FOUR_MODIFIER   0x0019
01550 #define EFI_FUNCTION_KEY_FIVE_MODIFIER   0x001A
01551 #define EFI_FUNCTION_KEY_SIX_MODIFIER    0x001B
01552 #define EFI_FUNCTION_KEY_SEVEN_MODIFIER  0x001C
01553 #define EFI_FUNCTION_KEY_EIGHT_MODIFIER  0x001D
01554 #define EFI_FUNCTION_KEY_NINE_MODIFIER   0x001E
01555 #define EFI_FUNCTION_KEY_TEN_MODIFIER    0x001F
01556 #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
01557 #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
01558 
01559 //
01560 // Keys that have multiple control functions based on modifier
01561 // settings are handled in the keyboard driver implementation.
01562 // For instance PRINT_KEY might have a modifier held down and
01563 // is still a nonprinting character, but might have an alternate
01564 // control function like SYSREQUEST
01565 //
01566 #define EFI_PRINT_MODIFIER               0x0022
01567 #define EFI_SYS_REQUEST_MODIFIER         0x0023
01568 #define EFI_SCROLL_LOCK_MODIFIER         0x0024
01569 #define EFI_PAUSE_MODIFIER               0x0025
01570 #define EFI_BREAK_MODIFIER               0x0026
01571 
01572 #define EFI_LEFT_LOGO_MODIFIER           0x0027
01573 #define EFI_RIGHT_LOGO_MODIFIER          0x0028
01574 #define EFI_MENU_MODIFIER                0x0029
01575 
01576 #pragma pack()
01577 
01578 
01579 
01580 ///
01581 /// References to string tokens must use this macro to enable scanning for
01582 /// token usages.
01583 ///
01584 ///
01585 /// STRING_TOKEN is not defined in UEFI specification. But it is placed
01586 /// here for the easy access by C files and VFR source files.
01587 ///
01588 #define STRING_TOKEN(t) t
01589 
01590 #endif

Generated on Tue Apr 6 20:01:07 2010 for gPXE by  doxygen 1.5.7.1