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