]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
Bug fixes for FrameworkHiiToUefiHiiThunk;
[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
4 for the HII database.\r
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
99a83b4c 54#pragma pack (push, 1)\r
4259256b 55typedef struct {\r
56 UINT32 BinaryLength;\r
57 EFI_HII_PACKAGE_HEADER PackageHeader;\r
58} TIANO_AUTOGEN_PACKAGES_HEADER;\r
99a83b4c 59#pragma pack (pop)\r
4259256b 60\r
0368663f 61#define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)\r
62#define HII_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')\r
4259256b 63typedef struct {\r
64 UINTN Signature;\r
65 EFI_HANDLE Handle;\r
66 EFI_HII_PROTOCOL Hii;\r
67 FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle;\r
ea58467b 68 FRAMEWORK_EFI_HII_HANDLE StaticPureUefiHiiHandle;\r
4259256b 69\r
70 //\r
0368663f 71 // The head of link list for all HII_THUNK_CONTEXT.\r
4259256b 72 //\r
0368663f 73 LIST_ENTRY ThunkContextListHead;\r
ea58467b 74\r
ea58467b 75 EFI_HANDLE RemovePackNotifyHandle;\r
76 EFI_HANDLE AddPackNotifyHandle;\r
0368663f 77} HII_THUNK_PRIVATE_DATA;\r
78\r
4259256b 79\r
80\r
0368663f 81#define ONE_OF_OPTION_MAP_ENTRY_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP_ENTRY, Link, ONE_OF_OPTION_MAP_ENTRY_SIGNATURE)\r
82#define ONE_OF_OPTION_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'M', 'E')\r
4259256b 83typedef struct {\r
0368663f 84 UINT32 Signature;\r
85 LIST_ENTRY Link;\r
86\r
87 UINT16 FwKey;\r
88 EFI_IFR_TYPE_VALUE Value;\r
89 \r
90} ONE_OF_OPTION_MAP_ENTRY;\r
91\r
92\r
93\r
94#define ONE_OF_OPTION_MAP_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP, Link, ONE_OF_OPTION_MAP_SIGNATURE)\r
95#define ONE_OF_OPTION_MAP_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'O', 'M')\r
96typedef struct {\r
97 UINT32 Signature;\r
98 LIST_ENTRY Link; \r
99\r
100 UINT8 ValueType; //EFI_IFR_TYPE_NUM_* \r
101\r
102 EFI_QUESTION_ID QuestionId;\r
103\r
104 LIST_ENTRY OneOfOptionMapEntryListHead; //ONE_OF_OPTION_MAP_ENTRY\r
105} ONE_OF_OPTION_MAP;\r
106\r
107\r
108\r
109#define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)\r
110#define QUESTION_ID_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'E')\r
111typedef struct {\r
112 UINT32 Signature;\r
113 LIST_ENTRY Link;\r
114 UINT16 FwQId;\r
115 EFI_QUESTION_ID UefiQid;\r
116} QUESTION_ID_MAP_ENTRY;\r
117\r
118\r
119\r
120#define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)\r
121#define QUESTION_ID_MAP_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'P')\r
122typedef struct {\r
123 UINT32 Signature;\r
124 LIST_ENTRY Link;\r
125 UINT16 VarStoreId;\r
126 UINTN VarSize;\r
127 LIST_ENTRY MapEntryListHead;\r
128} QUESTION_ID_MAP;\r
129\r
130\r
131\r
132#define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)\r
133#define HII_THUNK_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')\r
134typedef struct {\r
135 LIST_ENTRY Link;\r
4259256b 136 UINT32 Signature;\r
0368663f 137 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;\r
4259256b 138 EFI_HII_HANDLE UefiHiiHandle;\r
63dd6a96 139 EFI_HANDLE UefiHiiDriverHandle;\r
4259256b 140\r
0368663f 141 UINTN IfrPackageCount;\r
142 UINTN StringPackageCount;\r
143\r
4259256b 144 //\r
145 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.\r
146 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
147 // in both HII Database implementation and all modules that registering packages:\r
0368663f 148 // If a Package List has only IFR package and no String Package, the IFR package will reference \r
149 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
150 // TagGuid is the used to record this GuidId.\r
4259256b 151 EFI_GUID TagGuid;\r
0368663f 152\r
153 LIST_ENTRY QuestionIdMapListHead; //QUESTION_ID_MAP\r
154\r
155 LIST_ENTRY OneOfOptionMapListHead; //ONE_OF_OPTION_MAP\r
156\r
157 UINT8 *NvMapOverride;\r
158\r
159 UINT16 FormSetClass;\r
160 UINT16 FormSetSubClass;\r
161 STRING_REF FormSetTitle;\r
162 STRING_REF FormSetHelp;\r
ebbd2793 163 \r
0368663f 164} HII_THUNK_CONTEXT;\r
165\r
4259256b 166\r
0368663f 167\r
168#define BUFFER_STORAGE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')\r
169#define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)\r
ebbd2793 170typedef struct {\r
0368663f 171 LIST_ENTRY Link;\r
ebbd2793 172 UINT32 Signature;\r
173 EFI_GUID Guid;\r
174 CHAR16 *Name;\r
175 UINTN Size;\r
176 UINT16 VarStoreId;\r
0368663f 177} BUFFER_STORAGE_ENTRY;\r
178\r
ebbd2793 179\r
0368663f 180\r
181#define CONFIG_ACCESS_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')\r
182#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)\r
ebbd2793 183typedef struct {\r
184 UINT32 Signature;\r
185 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
0368663f 186 //\r
187 // Framework's callback\r
188 //\r
189 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;\r
190\r
191 LIST_ENTRY BufferStorageListHead;\r
192\r
193 HII_THUNK_CONTEXT *ThunkContext;\r
194} CONFIG_ACCESS_PRIVATE;\r
195\r
196\r
ebbd2793 197\r
137c54ac 198#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')\r
0368663f 199#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 200typedef struct {\r
201 UINTN Signature;\r
202 EFI_HANDLE Handle;\r
0368663f 203 HII_THUNK_PRIVATE_DATA *ThunkPrivate;\r
137c54ac 204 EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
205} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
206\r
207\r
4259256b 208//\r
209// Extern Variables\r
210//\r
59336178 211extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
59336178 212extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
213extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
214extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
0368663f 215extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;\r
4259256b 216\r
0368663f 217extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;\r
218\r
219extern BOOLEAN mInFrameworkUpdatePakcage;\r
ea58467b 220\r
221\r
4259256b 222//\r
223// Prototypes\r
224//\r
225\r
226//\r
227// Public Interface Prototypes\r
228//\r
229EFI_STATUS\r
230EFIAPI\r
231InitializeHiiDatabase (\r
232 IN EFI_HANDLE ImageHandle,\r
233 IN EFI_SYSTEM_TABLE *SystemTable\r
234 )\r
235;\r
236\r
237EFI_STATUS\r
238EFIAPI\r
239HiiNewPack (\r
240 IN EFI_HII_PROTOCOL *This,\r
241 IN EFI_HII_PACKAGES *PackageList,\r
242 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
243 )\r
244;\r
245\r
246EFI_STATUS\r
247EFIAPI\r
248HiiRemovePack (\r
249 IN EFI_HII_PROTOCOL *This,\r
250 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
251 )\r
252;\r
253\r
254EFI_STATUS\r
255EFIAPI\r
256HiiFindHandles (\r
257 IN EFI_HII_PROTOCOL *This,\r
258 IN OUT UINT16 *HandleBufferLength,\r
259 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
260 )\r
261;\r
262\r
263EFI_STATUS\r
264EFIAPI\r
265HiiExportDatabase (\r
266 IN EFI_HII_PROTOCOL *This,\r
267 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
268 IN OUT UINTN *BufferSize,\r
269 OUT VOID *Buffer\r
270 )\r
271;\r
272\r
273EFI_STATUS\r
274EFIAPI\r
275HiiGetGlyph (\r
276 IN EFI_HII_PROTOCOL *This,\r
277 IN CHAR16 *Source,\r
278 IN OUT UINT16 *Index,\r
279 OUT UINT8 **GlyphBuffer,\r
280 OUT UINT16 *BitWidth,\r
281 IN OUT UINT32 *InternalStatus\r
282 )\r
283;\r
284\r
285EFI_STATUS\r
286EFIAPI\r
287HiiGlyphToBlt (\r
288 IN EFI_HII_PROTOCOL *This,\r
289 IN UINT8 *GlyphBuffer,\r
290 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
291 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
292 IN UINTN Count,\r
293 IN UINTN Width,\r
294 IN UINTN Height,\r
295 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
296 )\r
297;\r
298\r
299EFI_STATUS\r
300EFIAPI\r
301HiiNewString (\r
302 IN EFI_HII_PROTOCOL *This,\r
303 IN CHAR16 *Language,\r
304 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
305 IN OUT STRING_REF *Reference,\r
306 IN CHAR16 *NewString\r
307 )\r
308;\r
309\r
310EFI_STATUS\r
311EFIAPI\r
312HiiGetString (\r
313 IN EFI_HII_PROTOCOL *This,\r
314 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
315 IN STRING_REF Token,\r
316 IN BOOLEAN Raw,\r
317 IN CHAR16 *LanguageString,\r
318 IN OUT UINTN *BufferLength,\r
319 OUT EFI_STRING StringBuffer\r
320 )\r
321;\r
322\r
323EFI_STATUS\r
324EFIAPI\r
325HiiResetStrings (\r
326 IN EFI_HII_PROTOCOL *This,\r
327 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
328 )\r
329;\r
330\r
331EFI_STATUS\r
332EFIAPI\r
333HiiTestString (\r
334 IN EFI_HII_PROTOCOL *This,\r
335 IN CHAR16 *StringToTest,\r
336 IN OUT UINT32 *FirstMissing,\r
337 OUT UINT32 *GlyphBufferSize\r
338 )\r
339;\r
340\r
341EFI_STATUS\r
342EFIAPI\r
343HiiGetPrimaryLanguages (\r
344 IN EFI_HII_PROTOCOL *This,\r
345 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
346 OUT EFI_STRING *LanguageString\r
347 )\r
348;\r
349\r
350EFI_STATUS\r
351EFIAPI\r
352HiiGetSecondaryLanguages (\r
353 IN EFI_HII_PROTOCOL *This,\r
354 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
355 IN CHAR16 *PrimaryLanguage,\r
356 OUT EFI_STRING *LanguageString\r
357 )\r
358;\r
359\r
360EFI_STATUS\r
361EFIAPI\r
362HiiGetLine (\r
363 IN EFI_HII_PROTOCOL *This,\r
364 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
365 IN STRING_REF Token,\r
366 IN OUT UINT16 *Index,\r
367 IN UINT16 LineWidth,\r
368 IN CHAR16 *LanguageString,\r
369 IN OUT UINT16 *BufferLength,\r
370 OUT EFI_STRING StringBuffer\r
371 )\r
372;\r
373\r
374EFI_STATUS\r
375EFIAPI\r
376HiiGetForms (\r
377 IN EFI_HII_PROTOCOL *This,\r
378 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
379 IN EFI_FORM_ID FormId,\r
380 IN OUT UINTN *BufferLength,\r
381 OUT UINT8 *Buffer\r
382 )\r
383;\r
384\r
385EFI_STATUS\r
386EFIAPI\r
387HiiGetDefaultImage (\r
388 IN EFI_HII_PROTOCOL *This,\r
389 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
390 IN UINTN DefaultMask,\r
391 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
392 )\r
393;\r
394\r
395EFI_STATUS\r
396EFIAPI\r
397HiiUpdateForm (\r
398 IN EFI_HII_PROTOCOL *This,\r
399 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
400 IN EFI_FORM_LABEL Label,\r
401 IN BOOLEAN AddData,\r
99a83b4c 402 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
4259256b 403 )\r
404;\r
405\r
406EFI_STATUS\r
407EFIAPI\r
408HiiGetKeyboardLayout (\r
409 IN EFI_HII_PROTOCOL *This,\r
410 OUT UINT16 *DescriptorCount,\r
411 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
412 )\r
413;\r
414\r
415EFI_STATUS\r
416HiiCompareLanguage (\r
417 IN CHAR16 *LanguageStringLocation,\r
418 IN CHAR16 *Language\r
419 )\r
420;\r
421\r
137c54ac 422\r
423\r
424EFI_STATUS\r
425EFIAPI \r
426ThunkSendForm (\r
427 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
428 IN BOOLEAN UseDatabase,\r
429 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
430 IN UINTN HandleCount,\r
431 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
432 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
433 IN UINT8 *NvMapOverride, OPTIONAL\r
434 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
435 OUT BOOLEAN *ResetRequired OPTIONAL\r
436 );\r
437\r
438EFI_STATUS\r
439EFIAPI \r
440ThunkCreatePopUp (\r
441 IN UINTN NumberOfLines,\r
442 IN BOOLEAN HotKey,\r
443 IN UINTN MaximumStringSize,\r
444 OUT CHAR16 *StringBuffer,\r
445 OUT EFI_INPUT_KEY *KeyValue,\r
446 IN CHAR16 *String,\r
447 ...\r
448 );\r
449\r
0368663f 450EFI_STATUS\r
451EFIAPI\r
452RemovePackNotify (\r
453 IN UINT8 PackageType,\r
454 IN CONST EFI_GUID *PackageGuid,\r
455 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
456 IN EFI_HII_HANDLE Handle,\r
457 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
458 )\r
459;\r
460\r
461EFI_STATUS\r
462EFIAPI\r
463NewOrAddPackNotify (\r
464 IN UINT8 PackageType,\r
465 IN CONST EFI_GUID *PackageGuid,\r
466 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
467 IN EFI_HII_HANDLE Handle,\r
468 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
469 )\r
470;\r
471\r
ee3428bb 472#include "Utility.h"\r
ebbd2793 473#include "ConfigAccess.h"\r
ee3428bb 474\r
4259256b 475#endif\r