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