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