Home | History | Annotate | Download | only in Common
      1 /** @file
      2   EDK II specific HII relative definition.
      3 
      4   Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>
      5 
      6   This program and the accompanying materials are licensed and made available
      7   under the terms and conditions of the BSD License which accompanies this
      8   distribution.  The full text of the license may be found at
      9     http://opensource.org/licenses/bsd-license.php
     10 
     11   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     12   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     13 
     14 **/
     15 
     16 #ifndef _MDEMODULE_HII_H
     17 #define _MDEMODULE_HII_H
     18 
     19 #define NARROW_CHAR         0xFFF0
     20 #define WIDE_CHAR           0xFFF1
     21 #define NON_BREAKING_CHAR   0xFFF2
     22 
     23 ///
     24 /// State defined for password statemachine .
     25 ///
     26 #define BROWSER_STATE_VALIDATE_PASSWORD  0
     27 #define BROWSER_STATE_SET_PASSWORD       1
     28 
     29 ///
     30 /// GUIDed opcodes defined for EDKII implementation.
     31 ///
     32 #define EFI_IFR_TIANO_GUID \
     33   { 0xf0b1735, 0x87a0, 0x4193, {0xb2, 0x66, 0x53, 0x8c, 0x38, 0xaf, 0x48, 0xce} }
     34 
     35 #pragma pack(1)
     36 
     37 ///
     38 /// EDKII implementation extension opcodes, new extension can be added here later.
     39 ///
     40 #define EFI_IFR_EXTEND_OP_LABEL       0x0
     41 #define EFI_IFR_EXTEND_OP_BANNER      0x1
     42 #define EFI_IFR_EXTEND_OP_TIMEOUT     0x2
     43 #define EFI_IFR_EXTEND_OP_CLASS       0x3
     44 #define EFI_IFR_EXTEND_OP_SUBCLASS    0x4
     45 
     46 ///
     47 /// Label opcode.
     48 ///
     49 typedef struct _EFI_IFR_GUID_LABEL {
     50   EFI_IFR_OP_HEADER   Header;
     51   ///
     52   /// EFI_IFR_TIANO_GUID.
     53   ///
     54   EFI_GUID            Guid;
     55   ///
     56   /// EFI_IFR_EXTEND_OP_LABEL.
     57   ///
     58   UINT8               ExtendOpCode;
     59   ///
     60   /// Label Number.
     61   ///
     62   UINT16              Number;
     63 } EFI_IFR_GUID_LABEL;
     64 
     65 #define EFI_IFR_BANNER_ALIGN_LEFT     0
     66 #define EFI_IFR_BANNER_ALIGN_CENTER   1
     67 #define EFI_IFR_BANNER_ALIGN_RIGHT    2
     68 
     69 ///
     70 /// Banner opcode.
     71 ///
     72 typedef struct _EFI_IFR_GUID_BANNER {
     73   EFI_IFR_OP_HEADER   Header;
     74   ///
     75   /// EFI_IFR_TIANO_GUID.
     76   ///
     77   EFI_GUID            Guid;
     78   ///
     79   /// EFI_IFR_EXTEND_OP_BANNER
     80   ///
     81   UINT8               ExtendOpCode;
     82   EFI_STRING_ID       Title;        ///< The string token for the banner title.
     83   UINT16              LineNumber;   ///< 1-based line number.
     84   UINT8               Alignment;    ///< left, center, or right-aligned.
     85 } EFI_IFR_GUID_BANNER;
     86 
     87 ///
     88 /// Timeout opcode.
     89 ///
     90 typedef struct _EFI_IFR_GUID_TIMEOUT {
     91   EFI_IFR_OP_HEADER   Header;
     92   ///
     93   /// EFI_IFR_TIANO_GUID.
     94   ///
     95   EFI_GUID            Guid;
     96   ///
     97   /// EFI_IFR_EXTEND_OP_TIMEOUT.
     98   ///
     99   UINT8               ExtendOpCode;
    100   UINT16              TimeOut;       ///< TimeOut Value.
    101 } EFI_IFR_GUID_TIMEOUT;
    102 
    103 #define EFI_NON_DEVICE_CLASS              0x00
    104 #define EFI_DISK_DEVICE_CLASS             0x01
    105 #define EFI_VIDEO_DEVICE_CLASS            0x02
    106 #define EFI_NETWORK_DEVICE_CLASS          0x04
    107 #define EFI_INPUT_DEVICE_CLASS            0x08
    108 #define EFI_ON_BOARD_DEVICE_CLASS         0x10
    109 #define EFI_OTHER_DEVICE_CLASS            0x20
    110 
    111 ///
    112 /// Device Class opcode.
    113 ///
    114 typedef struct _EFI_IFR_GUID_CLASS {
    115   EFI_IFR_OP_HEADER   Header;
    116   ///
    117   /// EFI_IFR_TIANO_GUID.
    118   ///
    119   EFI_GUID            Guid;
    120   ///
    121   /// EFI_IFR_EXTEND_OP_CLASS.
    122   ///
    123   UINT8               ExtendOpCode;
    124   UINT16              Class;           ///< Device Class from the above.
    125 } EFI_IFR_GUID_CLASS;
    126 
    127 #define EFI_SETUP_APPLICATION_SUBCLASS    0x00
    128 #define EFI_GENERAL_APPLICATION_SUBCLASS  0x01
    129 #define EFI_FRONT_PAGE_SUBCLASS           0x02
    130 #define EFI_SINGLE_USE_SUBCLASS           0x03
    131 
    132 ///
    133 /// SubClass opcode
    134 ///
    135 typedef struct _EFI_IFR_GUID_SUBCLASS {
    136   EFI_IFR_OP_HEADER   Header;
    137   ///
    138   /// EFI_IFR_TIANO_GUID.
    139   ///
    140   EFI_GUID            Guid;
    141   ///
    142   /// EFI_IFR_EXTEND_OP_SUBCLASS.
    143   ///
    144   UINT8               ExtendOpCode;
    145   UINT16              SubClass;      ///< Sub Class type from the above.
    146 } EFI_IFR_GUID_SUBCLASS;
    147 
    148 ///
    149 /// GUIDed opcodes support for framework vfr.
    150 ///
    151 #define EFI_IFR_FRAMEWORK_GUID \
    152   { 0x31ca5d1a, 0xd511, 0x4931, { 0xb7, 0x82, 0xae, 0x6b, 0x2b, 0x17, 0x8c, 0xd7 } }
    153 
    154 ///
    155 /// Two extended opcodes are added, and new extensions can be added here later.
    156 /// One is for framework OneOf question Option Key value;
    157 /// another is for framework vareqval.
    158 ///
    159 #define EFI_IFR_EXTEND_OP_OPTIONKEY   0x0
    160 #define EFI_IFR_EXTEND_OP_VAREQNAME   0x1
    161 
    162 ///
    163 /// Store the framework vfr option key value.
    164 ///
    165 typedef struct _EFI_IFR_GUID_OPTIONKEY {
    166   EFI_IFR_OP_HEADER   Header;
    167   ///
    168   /// EFI_IFR_FRAMEWORK_GUID.
    169   ///
    170   EFI_GUID            Guid;
    171   ///
    172   /// EFI_IFR_EXTEND_OP_OPTIONKEY.
    173   ///
    174   UINT8               ExtendOpCode;
    175   ///
    176   /// OneOf Questiond ID binded by OneOf Option.
    177   ///
    178   EFI_QUESTION_ID     QuestionId;
    179   ///
    180   /// The OneOf Option Value.
    181   ///
    182   EFI_IFR_TYPE_VALUE  OptionValue;
    183   ///
    184   /// The Framework OneOf Option Key Value.
    185   ///
    186   UINT16              KeyValue;
    187 } EFI_IFR_GUID_OPTIONKEY;
    188 
    189 ///
    190 /// Store the framework vfr vareqval name number.
    191 ///
    192 typedef struct _EFI_IFR_GUID_VAREQNAME {
    193   EFI_IFR_OP_HEADER   Header;
    194   ///
    195   /// EFI_IFR_FRAMEWORK_GUID.
    196   ///
    197   EFI_GUID            Guid;
    198   ///
    199   /// EFI_IFR_EXTEND_OP_VAREQNAME.
    200   ///
    201   UINT8               ExtendOpCode;
    202   ///
    203   /// Question ID of the Numeric Opcode created.
    204   ///
    205   EFI_QUESTION_ID     QuestionId;
    206   ///
    207   /// For vareqval (0x100), NameId is 0x100.
    208   /// This value will convert to a Unicode String following this rule;
    209   ///            sprintf(StringBuffer, "%d", NameId) .
    210   /// The the Unicode String will be used as a EFI Variable Name.
    211   ///
    212   UINT16              NameId;
    213 } EFI_IFR_GUID_VAREQNAME;
    214 
    215 #pragma pack()
    216 
    217 extern EFI_GUID gEfiIfrTianoGuid;
    218 extern EFI_GUID gEfiIfrFrameworkGuid;
    219 
    220 #endif
    221 
    222