]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
add #pragma pack(1) for some structures.
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiDatabase.h
CommitLineData
4259256b 1/**@file\r
2\r
3 This file contains global defines and prototype definitions\r
a3318eaf 4 for the Framework HII to Uefi HII Thunk Module.\r
4259256b 5 \r
6Copyright (c) 2006 - 2008, Intel Corporation\r
7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php\r
11\r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef _HIIDATABASE_H\r
18#define _HIIDATABASE_H\r
19\r
20\r
21#include <FrameworkDxe.h>\r
22\r
23#include <Guid/GlobalVariable.h>\r
24#include <Protocol/FrameworkFormCallback.h>\r
25#include <Protocol/FrameworkHii.h>\r
137c54ac 26#include <Protocol/FrameworkFormBrowser.h>\r
4259256b 27\r
28//\r
29// UEFI HII Protocols\r
30//\r
31#include <Protocol/HiiFont.h>\r
32#include <Protocol/HiiImage.h>\r
33#include <Protocol/HiiString.h>\r
34#include <Protocol/HiiDatabase.h>\r
35#include <Protocol/HiiConfigRouting.h>\r
36#include <Protocol/HiiConfigAccess.h>\r
37\r
38\r
39#include <Library/BaseLib.h>\r
40#include <Library/DebugLib.h>\r
41#include <Library/UefiDriverEntryPoint.h>\r
42#include <Library/MemoryAllocationLib.h>\r
43#include <Library/BaseMemoryLib.h>\r
44#include <Library/UefiBootServicesTableLib.h>\r
45#include <Library/UefiRuntimeServicesTableLib.h>\r
4259256b 46#include <Library/HiiLib.h>\r
ebbd2793 47#include <Library/ExtendedHiiLib.h>\r
4259256b 48\r
99a83b4c 49#include <Library/IfrSupportLib.h>\r
50#include <Library/ExtendedIfrSupportLib.h>\r
51\r
59336178 52#include <MdeModuleHii.h>\r
53\r
a3318eaf 54\r
55//\r
56// VARSTORE ID of 0 for Buffer Storage Type Storage is reserved in UEFI IFR form. But VARSTORE ID\r
57// 0 in Framework IFR is the default VarStore ID for storage without explicit declaration. So we have\r
58// to reseved 0x0001 in UEFI VARSTORE ID to represetn default storage id in Framework IFR.\r
59// Framework VFR has to be ported or pre-processed to change the default VARSTORE to a VARSTORE\r
60// with ID equal to 0x0001.\r
61//\r
62#define RESERVED_VARSTORE_ID 0x0001\r
63\r
64\r
99a83b4c 65#pragma pack (push, 1)\r
4259256b 66typedef struct {\r
67 UINT32 BinaryLength;\r
68 EFI_HII_PACKAGE_HEADER PackageHeader;\r
69} TIANO_AUTOGEN_PACKAGES_HEADER;\r
99a83b4c 70#pragma pack (pop)\r
4259256b 71\r
0368663f 72#define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)\r
73#define HII_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')\r
4259256b 74typedef struct {\r
75 UINTN Signature;\r
76 EFI_HANDLE Handle;\r
77 EFI_HII_PROTOCOL Hii;\r
4259256b 78\r
79 //\r
0368663f 80 // The head of link list for all HII_THUNK_CONTEXT.\r
4259256b 81 //\r
0368663f 82 LIST_ENTRY ThunkContextListHead;\r
ea58467b 83\r
ea58467b 84 EFI_HANDLE RemovePackNotifyHandle;\r
85 EFI_HANDLE AddPackNotifyHandle;\r
0368663f 86} HII_THUNK_PRIVATE_DATA;\r
87\r
4259256b 88\r
89\r
0368663f 90#define ONE_OF_OPTION_MAP_ENTRY_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP_ENTRY, Link, ONE_OF_OPTION_MAP_ENTRY_SIGNATURE)\r
91#define ONE_OF_OPTION_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'M', 'E')\r
4259256b 92typedef struct {\r
a3318eaf 93 UINT32 Signature;\r
94 LIST_ENTRY Link;\r
0368663f 95\r
a3318eaf 96 UINT16 FwKey;\r
97 EFI_IFR_TYPE_VALUE Value;\r
0368663f 98 \r
99} ONE_OF_OPTION_MAP_ENTRY;\r
100\r
101\r
102\r
103#define ONE_OF_OPTION_MAP_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP, Link, ONE_OF_OPTION_MAP_SIGNATURE)\r
104#define ONE_OF_OPTION_MAP_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'O', 'M')\r
105typedef struct {\r
a3318eaf 106 UINT32 Signature;\r
107 LIST_ENTRY Link; \r
0368663f 108\r
a3318eaf 109 UINT8 ValueType; //EFI_IFR_TYPE_NUM_* \r
0368663f 110\r
a3318eaf 111 EFI_QUESTION_ID QuestionId;\r
0368663f 112\r
a3318eaf 113 LIST_ENTRY OneOfOptionMapEntryListHead; //ONE_OF_OPTION_MAP_ENTRY\r
0368663f 114} ONE_OF_OPTION_MAP;\r
115\r
116\r
117\r
118#define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)\r
119#define QUESTION_ID_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'E')\r
120typedef struct {\r
121 UINT32 Signature;\r
122 LIST_ENTRY Link;\r
123 UINT16 FwQId;\r
124 EFI_QUESTION_ID UefiQid;\r
125} QUESTION_ID_MAP_ENTRY;\r
126\r
127\r
128\r
129#define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)\r
130#define QUESTION_ID_MAP_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'P')\r
131typedef struct {\r
132 UINT32 Signature;\r
133 LIST_ENTRY Link;\r
134 UINT16 VarStoreId;\r
135 UINTN VarSize;\r
136 LIST_ENTRY MapEntryListHead;\r
137} QUESTION_ID_MAP;\r
138\r
139\r
140\r
141#define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)\r
142#define HII_THUNK_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')\r
143typedef struct {\r
144 LIST_ENTRY Link;\r
4259256b 145 UINT32 Signature;\r
0368663f 146 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;\r
4259256b 147 EFI_HII_HANDLE UefiHiiHandle;\r
63dd6a96 148 EFI_HANDLE UefiHiiDriverHandle;\r
4259256b 149\r
0368663f 150 UINTN IfrPackageCount;\r
151 UINTN StringPackageCount;\r
152\r
d4775f2a 153 BOOLEAN ByFrameworkHiiNewPack;\r
154\r
4259256b 155 //\r
156 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.\r
157 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
158 // in both HII Database implementation and all modules that registering packages:\r
0368663f 159 // If a Package List has only IFR package and no String Package, the IFR package will reference \r
160 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
161 // TagGuid is the used to record this GuidId.\r
4259256b 162 EFI_GUID TagGuid;\r
0368663f 163\r
164 LIST_ENTRY QuestionIdMapListHead; //QUESTION_ID_MAP\r
165\r
166 LIST_ENTRY OneOfOptionMapListHead; //ONE_OF_OPTION_MAP\r
167\r
168 UINT8 *NvMapOverride;\r
169\r
170 UINT16 FormSetClass;\r
171 UINT16 FormSetSubClass;\r
172 STRING_REF FormSetTitle;\r
173 STRING_REF FormSetHelp;\r
ebbd2793 174 \r
0368663f 175} HII_THUNK_CONTEXT;\r
176\r
4259256b 177\r
0368663f 178\r
179#define BUFFER_STORAGE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')\r
180#define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)\r
ebbd2793 181typedef struct {\r
0368663f 182 LIST_ENTRY Link;\r
ebbd2793 183 UINT32 Signature;\r
184 EFI_GUID Guid;\r
185 CHAR16 *Name;\r
186 UINTN Size;\r
187 UINT16 VarStoreId;\r
0368663f 188} BUFFER_STORAGE_ENTRY;\r
189\r
ebbd2793 190\r
0368663f 191\r
192#define CONFIG_ACCESS_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')\r
193#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)\r
ebbd2793 194typedef struct {\r
195 UINT32 Signature;\r
196 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
0368663f 197 //\r
198 // Framework's callback\r
199 //\r
200 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;\r
201\r
202 LIST_ENTRY BufferStorageListHead;\r
203\r
204 HII_THUNK_CONTEXT *ThunkContext;\r
205} CONFIG_ACCESS_PRIVATE;\r
206\r
207\r
ebbd2793 208\r
137c54ac 209#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')\r
0368663f 210#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)\r
137c54ac 211typedef struct {\r
212 UINTN Signature;\r
213 EFI_HANDLE Handle;\r
0368663f 214 HII_THUNK_PRIVATE_DATA *ThunkPrivate;\r
137c54ac 215 EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
216} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
217\r
218\r
4259256b 219//\r
220// Extern Variables\r
221//\r
59336178 222extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
59336178 223extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
224extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
133a9dfb 225extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;\r
59336178 226extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
0368663f 227extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;\r
4259256b 228\r
0368663f 229extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;\r
230\r
231extern BOOLEAN mInFrameworkUpdatePakcage;\r
ea58467b 232\r
233\r
4259256b 234EFI_STATUS\r
235EFIAPI\r
236HiiNewPack (\r
a3318eaf 237 IN EFI_HII_PROTOCOL *This,\r
238 IN EFI_HII_PACKAGES *PackageList,\r
239 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 240 );\r
4259256b 241\r
242EFI_STATUS\r
243EFIAPI\r
244HiiRemovePack (\r
a3318eaf 245 IN EFI_HII_PROTOCOL *This,\r
4259256b 246 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 247 );\r
4259256b 248\r
249EFI_STATUS\r
250EFIAPI\r
251HiiFindHandles (\r
a3318eaf 252 IN EFI_HII_PROTOCOL *This,\r
253 IN OUT UINT16 *HandleBufferLength,\r
254 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 255 );\r
4259256b 256\r
257EFI_STATUS\r
258EFIAPI\r
259HiiExportDatabase (\r
a3318eaf 260 IN EFI_HII_PROTOCOL *This,\r
261 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
262 IN OUT UINTN *BufferSize,\r
263 OUT VOID *Buffer\r
e00e1d46 264 );\r
4259256b 265\r
266EFI_STATUS\r
267EFIAPI\r
268HiiGetGlyph (\r
a3318eaf 269 IN EFI_HII_PROTOCOL *This,\r
270 IN CHAR16 *Source,\r
271 IN OUT UINT16 *Index,\r
272 OUT UINT8 **GlyphBuffer,\r
273 OUT UINT16 *BitWidth,\r
274 IN OUT UINT32 *InternalStatus\r
e00e1d46 275 );\r
4259256b 276\r
277EFI_STATUS\r
278EFIAPI\r
279HiiGlyphToBlt (\r
280 IN EFI_HII_PROTOCOL *This,\r
281 IN UINT8 *GlyphBuffer,\r
282 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
283 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
284 IN UINTN Count,\r
285 IN UINTN Width,\r
286 IN UINTN Height,\r
287 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
e00e1d46 288 );\r
4259256b 289\r
290EFI_STATUS\r
291EFIAPI\r
292HiiNewString (\r
293 IN EFI_HII_PROTOCOL *This,\r
294 IN CHAR16 *Language,\r
295 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
296 IN OUT STRING_REF *Reference,\r
297 IN CHAR16 *NewString\r
e00e1d46 298 );\r
4259256b 299\r
300EFI_STATUS\r
301EFIAPI\r
302HiiGetString (\r
a3318eaf 303 IN EFI_HII_PROTOCOL *This,\r
304 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
305 IN STRING_REF Token,\r
306 IN BOOLEAN Raw,\r
307 IN CHAR16 *LanguageString,\r
308 IN OUT UINTN *BufferLength,\r
309 OUT EFI_STRING StringBuffer\r
e00e1d46 310 );\r
4259256b 311\r
312EFI_STATUS\r
313EFIAPI\r
314HiiResetStrings (\r
a3318eaf 315 IN EFI_HII_PROTOCOL *This,\r
316 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 317 );\r
4259256b 318\r
319EFI_STATUS\r
320EFIAPI\r
321HiiTestString (\r
a3318eaf 322 IN EFI_HII_PROTOCOL *This,\r
323 IN CHAR16 *StringToTest,\r
324 IN OUT UINT32 *FirstMissing,\r
325 OUT UINT32 *GlyphBufferSize\r
e00e1d46 326 );\r
4259256b 327\r
328EFI_STATUS\r
329EFIAPI\r
330HiiGetPrimaryLanguages (\r
a3318eaf 331 IN EFI_HII_PROTOCOL *This,\r
332 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
333 OUT EFI_STRING *LanguageString\r
e00e1d46 334 );\r
4259256b 335\r
336EFI_STATUS\r
337EFIAPI\r
338HiiGetSecondaryLanguages (\r
a3318eaf 339 IN EFI_HII_PROTOCOL *This,\r
340 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
341 IN CHAR16 *PrimaryLanguage,\r
342 OUT EFI_STRING *LanguageString\r
e00e1d46 343 );\r
4259256b 344\r
345EFI_STATUS\r
346EFIAPI\r
347HiiGetLine (\r
a3318eaf 348 IN EFI_HII_PROTOCOL *This,\r
4259256b 349 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 350 IN STRING_REF Token,\r
351 IN OUT UINT16 *Index,\r
352 IN UINT16 LineWidth,\r
353 IN CHAR16 *LanguageString,\r
354 IN OUT UINT16 *BufferLength,\r
355 OUT EFI_STRING StringBuffer\r
e00e1d46 356 );\r
4259256b 357\r
358EFI_STATUS\r
359EFIAPI\r
360HiiGetForms (\r
a3318eaf 361 IN EFI_HII_PROTOCOL *This,\r
4259256b 362 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 363 IN EFI_FORM_ID FormId,\r
364 IN OUT UINTN *BufferLength,\r
365 OUT UINT8 *Buffer\r
e00e1d46 366 );\r
4259256b 367\r
368EFI_STATUS\r
369EFIAPI\r
370HiiGetDefaultImage (\r
a3318eaf 371 IN EFI_HII_PROTOCOL *This,\r
372 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
373 IN UINTN DefaultMask,\r
374 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
e00e1d46 375 );\r
4259256b 376\r
377EFI_STATUS\r
378EFIAPI\r
379HiiUpdateForm (\r
a3318eaf 380 IN EFI_HII_PROTOCOL *This,\r
381 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
382 IN EFI_FORM_LABEL Label,\r
383 IN BOOLEAN AddData,\r
384 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
e00e1d46 385 );\r
4259256b 386\r
387EFI_STATUS\r
388EFIAPI\r
389HiiGetKeyboardLayout (\r
a3318eaf 390 IN EFI_HII_PROTOCOL *This,\r
391 OUT UINT16 *DescriptorCount,\r
392 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
e00e1d46 393 );\r
4259256b 394\r
137c54ac 395EFI_STATUS\r
396EFIAPI \r
397ThunkSendForm (\r
398 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
399 IN BOOLEAN UseDatabase,\r
400 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
401 IN UINTN HandleCount,\r
a3318eaf 402 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
137c54ac 403 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
404 IN UINT8 *NvMapOverride, OPTIONAL\r
a3318eaf 405 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
137c54ac 406 OUT BOOLEAN *ResetRequired OPTIONAL\r
e00e1d46 407 );\r
137c54ac 408\r
409EFI_STATUS\r
410EFIAPI \r
411ThunkCreatePopUp (\r
412 IN UINTN NumberOfLines,\r
413 IN BOOLEAN HotKey,\r
414 IN UINTN MaximumStringSize,\r
415 OUT CHAR16 *StringBuffer,\r
416 OUT EFI_INPUT_KEY *KeyValue,\r
417 IN CHAR16 *String,\r
418 ...\r
e00e1d46 419 );\r
137c54ac 420\r
0368663f 421EFI_STATUS\r
422EFIAPI\r
423RemovePackNotify (\r
424 IN UINT8 PackageType,\r
425 IN CONST EFI_GUID *PackageGuid,\r
426 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
427 IN EFI_HII_HANDLE Handle,\r
428 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 429 );\r
0368663f 430\r
431EFI_STATUS\r
432EFIAPI\r
433NewOrAddPackNotify (\r
434 IN UINT8 PackageType,\r
435 IN CONST EFI_GUID *PackageGuid,\r
436 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
437 IN EFI_HII_HANDLE Handle,\r
438 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 439 );\r
0368663f 440\r
ee3428bb 441#include "Utility.h"\r
ebbd2793 442#include "ConfigAccess.h"\r
ee3428bb 443\r
4259256b 444#endif\r