]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
1) Add in support to get only VarStoreId = 1 from Multiple VarStores.
[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
4259256b 240 )\r
241;\r
242\r
243EFI_STATUS\r
244EFIAPI\r
245HiiRemovePack (\r
a3318eaf 246 IN EFI_HII_PROTOCOL *This,\r
4259256b 247 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
248 )\r
249;\r
250\r
251EFI_STATUS\r
252EFIAPI\r
253HiiFindHandles (\r
a3318eaf 254 IN EFI_HII_PROTOCOL *This,\r
255 IN OUT UINT16 *HandleBufferLength,\r
256 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
4259256b 257 )\r
258;\r
259\r
260EFI_STATUS\r
261EFIAPI\r
262HiiExportDatabase (\r
a3318eaf 263 IN EFI_HII_PROTOCOL *This,\r
264 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
265 IN OUT UINTN *BufferSize,\r
266 OUT VOID *Buffer\r
4259256b 267 )\r
268;\r
269\r
270EFI_STATUS\r
271EFIAPI\r
272HiiGetGlyph (\r
a3318eaf 273 IN EFI_HII_PROTOCOL *This,\r
274 IN CHAR16 *Source,\r
275 IN OUT UINT16 *Index,\r
276 OUT UINT8 **GlyphBuffer,\r
277 OUT UINT16 *BitWidth,\r
278 IN OUT UINT32 *InternalStatus\r
4259256b 279 )\r
280;\r
281\r
282EFI_STATUS\r
283EFIAPI\r
284HiiGlyphToBlt (\r
285 IN EFI_HII_PROTOCOL *This,\r
286 IN UINT8 *GlyphBuffer,\r
287 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
288 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
289 IN UINTN Count,\r
290 IN UINTN Width,\r
291 IN UINTN Height,\r
292 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
293 )\r
294;\r
295\r
296EFI_STATUS\r
297EFIAPI\r
298HiiNewString (\r
299 IN EFI_HII_PROTOCOL *This,\r
300 IN CHAR16 *Language,\r
301 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
302 IN OUT STRING_REF *Reference,\r
303 IN CHAR16 *NewString\r
304 )\r
305;\r
306\r
307EFI_STATUS\r
308EFIAPI\r
309HiiGetString (\r
a3318eaf 310 IN EFI_HII_PROTOCOL *This,\r
311 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
312 IN STRING_REF Token,\r
313 IN BOOLEAN Raw,\r
314 IN CHAR16 *LanguageString,\r
315 IN OUT UINTN *BufferLength,\r
316 OUT EFI_STRING StringBuffer\r
4259256b 317 )\r
318;\r
319\r
320EFI_STATUS\r
321EFIAPI\r
322HiiResetStrings (\r
a3318eaf 323 IN EFI_HII_PROTOCOL *This,\r
324 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
4259256b 325 )\r
326;\r
327\r
328EFI_STATUS\r
329EFIAPI\r
330HiiTestString (\r
a3318eaf 331 IN EFI_HII_PROTOCOL *This,\r
332 IN CHAR16 *StringToTest,\r
333 IN OUT UINT32 *FirstMissing,\r
334 OUT UINT32 *GlyphBufferSize\r
4259256b 335 )\r
336;\r
337\r
338EFI_STATUS\r
339EFIAPI\r
340HiiGetPrimaryLanguages (\r
a3318eaf 341 IN EFI_HII_PROTOCOL *This,\r
342 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
343 OUT EFI_STRING *LanguageString\r
4259256b 344 )\r
345;\r
346\r
347EFI_STATUS\r
348EFIAPI\r
349HiiGetSecondaryLanguages (\r
a3318eaf 350 IN EFI_HII_PROTOCOL *This,\r
351 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
352 IN CHAR16 *PrimaryLanguage,\r
353 OUT EFI_STRING *LanguageString\r
4259256b 354 )\r
355;\r
356\r
357EFI_STATUS\r
358EFIAPI\r
359HiiGetLine (\r
a3318eaf 360 IN EFI_HII_PROTOCOL *This,\r
4259256b 361 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 362 IN STRING_REF Token,\r
363 IN OUT UINT16 *Index,\r
364 IN UINT16 LineWidth,\r
365 IN CHAR16 *LanguageString,\r
366 IN OUT UINT16 *BufferLength,\r
367 OUT EFI_STRING StringBuffer\r
4259256b 368 )\r
369;\r
370\r
371EFI_STATUS\r
372EFIAPI\r
373HiiGetForms (\r
a3318eaf 374 IN EFI_HII_PROTOCOL *This,\r
4259256b 375 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 376 IN EFI_FORM_ID FormId,\r
377 IN OUT UINTN *BufferLength,\r
378 OUT UINT8 *Buffer\r
4259256b 379 )\r
380;\r
381\r
382EFI_STATUS\r
383EFIAPI\r
384HiiGetDefaultImage (\r
a3318eaf 385 IN EFI_HII_PROTOCOL *This,\r
386 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
387 IN UINTN DefaultMask,\r
388 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
4259256b 389 )\r
390;\r
391\r
392EFI_STATUS\r
393EFIAPI\r
394HiiUpdateForm (\r
a3318eaf 395 IN EFI_HII_PROTOCOL *This,\r
396 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
397 IN EFI_FORM_LABEL Label,\r
398 IN BOOLEAN AddData,\r
399 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
4259256b 400 )\r
401;\r
402\r
403EFI_STATUS\r
404EFIAPI\r
405HiiGetKeyboardLayout (\r
a3318eaf 406 IN EFI_HII_PROTOCOL *This,\r
407 OUT UINT16 *DescriptorCount,\r
408 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
4259256b 409 )\r
410;\r
411\r
137c54ac 412EFI_STATUS\r
413EFIAPI \r
414ThunkSendForm (\r
415 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
416 IN BOOLEAN UseDatabase,\r
417 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
418 IN UINTN HandleCount,\r
a3318eaf 419 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
137c54ac 420 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
421 IN UINT8 *NvMapOverride, OPTIONAL\r
a3318eaf 422 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
137c54ac 423 OUT BOOLEAN *ResetRequired OPTIONAL\r
a3318eaf 424 )\r
425;\r
137c54ac 426\r
427EFI_STATUS\r
428EFIAPI \r
429ThunkCreatePopUp (\r
430 IN UINTN NumberOfLines,\r
431 IN BOOLEAN HotKey,\r
432 IN UINTN MaximumStringSize,\r
433 OUT CHAR16 *StringBuffer,\r
434 OUT EFI_INPUT_KEY *KeyValue,\r
435 IN CHAR16 *String,\r
436 ...\r
a3318eaf 437 )\r
438;\r
137c54ac 439\r
0368663f 440EFI_STATUS\r
441EFIAPI\r
442RemovePackNotify (\r
443 IN UINT8 PackageType,\r
444 IN CONST EFI_GUID *PackageGuid,\r
445 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
446 IN EFI_HII_HANDLE Handle,\r
447 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
448 )\r
449;\r
450\r
451EFI_STATUS\r
452EFIAPI\r
453NewOrAddPackNotify (\r
454 IN UINT8 PackageType,\r
455 IN CONST EFI_GUID *PackageGuid,\r
456 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
457 IN EFI_HII_HANDLE Handle,\r
458 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
459 )\r
460;\r
461\r
ee3428bb 462#include "Utility.h"\r
ebbd2793 463#include "ConfigAccess.h"\r
ee3428bb 464\r
4259256b 465#endif\r