]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
Install a Framework SetupBrowser protocol interface. But this interface will return...
[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
99a83b4c 46//#include <Library/FrameworkIfrSupportLib.h>\r
4259256b 47#include <Library/HiiLib.h>\r
ebbd2793 48#include <Library/ExtendedHiiLib.h>\r
4259256b 49\r
99a83b4c 50#include <Library/IfrSupportLib.h>\r
51#include <Library/ExtendedIfrSupportLib.h>\r
52\r
59336178 53#include <MdeModuleHii.h>\r
54\r
4259256b 55//\r
56// Macros\r
57//\r
58\r
59\r
60//\r
61// Typedef\r
62//\r
63\r
99a83b4c 64#pragma pack (push, 1)\r
4259256b 65typedef struct {\r
66 UINT32 BinaryLength;\r
67 EFI_HII_PACKAGE_HEADER PackageHeader;\r
68} TIANO_AUTOGEN_PACKAGES_HEADER;\r
99a83b4c 69#pragma pack (pop)\r
4259256b 70\r
71#define EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_HII_THUNK_PRIVATE_DATA, Hii, EFI_HII_THUNK_DRIVER_DATA_SIGNATURE)\r
72#define EFI_HII_THUNK_DRIVER_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')\r
73typedef struct {\r
74 UINTN Signature;\r
75 EFI_HANDLE Handle;\r
76 EFI_HII_PROTOCOL Hii;\r
77 FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle;\r
ea58467b 78 FRAMEWORK_EFI_HII_HANDLE StaticPureUefiHiiHandle;\r
4259256b 79\r
80 //\r
81 // This LIST_ENTRY is the list head which has HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY type \r
82 // as list entry.\r
83 //\r
84 LIST_ENTRY HiiThunkHandleMappingDBListHead;\r
ea58467b 85\r
86 EFI_HANDLE NewPackNotifyHandle;\r
87 EFI_HANDLE RemovePackNotifyHandle;\r
88 EFI_HANDLE AddPackNotifyHandle;\r
4259256b 89} EFI_HII_THUNK_PRIVATE_DATA;\r
90\r
91\r
92#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_FROM_LISTENTRY(Record) CR(Record, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY, List, HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE)\r
93#define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')\r
94typedef struct {\r
95 LIST_ENTRY List;\r
96 UINT32 Signature;\r
97 FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle;\r
98 EFI_HII_HANDLE UefiHiiHandle;\r
63dd6a96 99 EFI_HANDLE UefiHiiDriverHandle;\r
4259256b 100\r
101 BOOLEAN IsPackageListWithOnlyStringPackages;\r
102 //\r
103 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.\r
104 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
105 // in both HII Database implementation and all modules that registering packages:\r
106 // If a Package List has only IFR package and no String Package, the String Package containing the strings \r
107 // referenced by this IFR package is in another Package List\r
108 // registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
109 //\r
110 //\r
111 // Only valid if IsPackageListWithSingleStringPack is TRUE.\r
112 // UEFI Package List Head Pointer, pointing to a allocated buffer containing the package\r
113 //\r
114 EFI_HII_PACKAGE_LIST_HEADER *UefiStringPackageListHeader; //Only valid if IsStringPack is TRUE.\r
115 //This UEFI Package list only consists of a list of string packages.\r
116\r
117 EFI_GUID TagGuid;\r
118 //\r
119 // TRUE if the package list identified by UefiHiiHandle imports String Packages from \r
120 // other package list with IsPackageListWithOnlyStringPackages is TRUE.\r
121 //\r
122 BOOLEAN DoesPackageListImportStringPackages;\r
ebbd2793 123 \r
4259256b 124} HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY;\r
125\r
ebbd2793 126#define HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')\r
127#define HII_TRHUNK_BUFFER_STORAGE_KEY_FROM_LIST_ENTRY(Record) CR(Record, HII_TRHUNK_BUFFER_STORAGE_KEY, List, HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE)\r
128typedef struct {\r
129 LIST_ENTRY List;\r
130 UINT32 Signature;\r
131 EFI_GUID Guid;\r
132 CHAR16 *Name;\r
133 UINTN Size;\r
134 UINT16 VarStoreId;\r
135} HII_TRHUNK_BUFFER_STORAGE_KEY;\r
136\r
137#define HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')\r
138#define HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_FROM_PROTOCOL(Record) CR(Record, HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE, ConfigAccessProtocol, HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_SIGNATURE)\r
139typedef struct {\r
140 UINT32 Signature;\r
141 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
142 EFI_FORM_CALLBACK_PROTOCOL *FrameworkFormCallbackProtocol;\r
143 LIST_ENTRY ConfigAccessBufferStorageListHead;\r
144} HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE;\r
145\r
137c54ac 146#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')\r
147typedef struct {\r
148 UINTN Signature;\r
149 EFI_HANDLE Handle;\r
150 EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
151} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
152\r
153\r
4259256b 154//\r
155// Extern Variables\r
156//\r
59336178 157extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
158extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;\r
159extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
160extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
161extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
4259256b 162\r
ea58467b 163extern BOOLEAN mInFrameworkHiiNewPack;\r
63dd6a96 164extern BOOLEAN mInFrameworkHiiRemovePack;\r
ea58467b 165\r
166\r
4259256b 167//\r
168// Prototypes\r
169//\r
170\r
171//\r
172// Public Interface Prototypes\r
173//\r
174EFI_STATUS\r
175EFIAPI\r
176InitializeHiiDatabase (\r
177 IN EFI_HANDLE ImageHandle,\r
178 IN EFI_SYSTEM_TABLE *SystemTable\r
179 )\r
180;\r
181\r
182EFI_STATUS\r
183EFIAPI\r
184HiiNewPack (\r
185 IN EFI_HII_PROTOCOL *This,\r
186 IN EFI_HII_PACKAGES *PackageList,\r
187 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
188 )\r
189;\r
190\r
191EFI_STATUS\r
192EFIAPI\r
193HiiRemovePack (\r
194 IN EFI_HII_PROTOCOL *This,\r
195 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
196 )\r
197;\r
198\r
199EFI_STATUS\r
200EFIAPI\r
201HiiFindHandles (\r
202 IN EFI_HII_PROTOCOL *This,\r
203 IN OUT UINT16 *HandleBufferLength,\r
204 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
205 )\r
206;\r
207\r
208EFI_STATUS\r
209EFIAPI\r
210HiiExportDatabase (\r
211 IN EFI_HII_PROTOCOL *This,\r
212 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
213 IN OUT UINTN *BufferSize,\r
214 OUT VOID *Buffer\r
215 )\r
216;\r
217\r
218EFI_STATUS\r
219EFIAPI\r
220HiiGetGlyph (\r
221 IN EFI_HII_PROTOCOL *This,\r
222 IN CHAR16 *Source,\r
223 IN OUT UINT16 *Index,\r
224 OUT UINT8 **GlyphBuffer,\r
225 OUT UINT16 *BitWidth,\r
226 IN OUT UINT32 *InternalStatus\r
227 )\r
228;\r
229\r
230EFI_STATUS\r
231EFIAPI\r
232HiiGlyphToBlt (\r
233 IN EFI_HII_PROTOCOL *This,\r
234 IN UINT8 *GlyphBuffer,\r
235 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
236 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
237 IN UINTN Count,\r
238 IN UINTN Width,\r
239 IN UINTN Height,\r
240 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
241 )\r
242;\r
243\r
244EFI_STATUS\r
245EFIAPI\r
246HiiNewString (\r
247 IN EFI_HII_PROTOCOL *This,\r
248 IN CHAR16 *Language,\r
249 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
250 IN OUT STRING_REF *Reference,\r
251 IN CHAR16 *NewString\r
252 )\r
253;\r
254\r
255EFI_STATUS\r
256EFIAPI\r
257HiiGetString (\r
258 IN EFI_HII_PROTOCOL *This,\r
259 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
260 IN STRING_REF Token,\r
261 IN BOOLEAN Raw,\r
262 IN CHAR16 *LanguageString,\r
263 IN OUT UINTN *BufferLength,\r
264 OUT EFI_STRING StringBuffer\r
265 )\r
266;\r
267\r
268EFI_STATUS\r
269EFIAPI\r
270HiiResetStrings (\r
271 IN EFI_HII_PROTOCOL *This,\r
272 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
273 )\r
274;\r
275\r
276EFI_STATUS\r
277EFIAPI\r
278HiiTestString (\r
279 IN EFI_HII_PROTOCOL *This,\r
280 IN CHAR16 *StringToTest,\r
281 IN OUT UINT32 *FirstMissing,\r
282 OUT UINT32 *GlyphBufferSize\r
283 )\r
284;\r
285\r
286EFI_STATUS\r
287EFIAPI\r
288HiiGetPrimaryLanguages (\r
289 IN EFI_HII_PROTOCOL *This,\r
290 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
291 OUT EFI_STRING *LanguageString\r
292 )\r
293;\r
294\r
295EFI_STATUS\r
296EFIAPI\r
297HiiGetSecondaryLanguages (\r
298 IN EFI_HII_PROTOCOL *This,\r
299 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
300 IN CHAR16 *PrimaryLanguage,\r
301 OUT EFI_STRING *LanguageString\r
302 )\r
303;\r
304\r
305EFI_STATUS\r
306EFIAPI\r
307HiiGetLine (\r
308 IN EFI_HII_PROTOCOL *This,\r
309 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
310 IN STRING_REF Token,\r
311 IN OUT UINT16 *Index,\r
312 IN UINT16 LineWidth,\r
313 IN CHAR16 *LanguageString,\r
314 IN OUT UINT16 *BufferLength,\r
315 OUT EFI_STRING StringBuffer\r
316 )\r
317;\r
318\r
319EFI_STATUS\r
320EFIAPI\r
321HiiGetForms (\r
322 IN EFI_HII_PROTOCOL *This,\r
323 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
324 IN EFI_FORM_ID FormId,\r
325 IN OUT UINTN *BufferLength,\r
326 OUT UINT8 *Buffer\r
327 )\r
328;\r
329\r
330EFI_STATUS\r
331EFIAPI\r
332HiiGetDefaultImage (\r
333 IN EFI_HII_PROTOCOL *This,\r
334 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
335 IN UINTN DefaultMask,\r
336 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
337 )\r
338;\r
339\r
340EFI_STATUS\r
341EFIAPI\r
342HiiUpdateForm (\r
343 IN EFI_HII_PROTOCOL *This,\r
344 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
345 IN EFI_FORM_LABEL Label,\r
346 IN BOOLEAN AddData,\r
99a83b4c 347 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
4259256b 348 )\r
349;\r
350\r
351EFI_STATUS\r
352EFIAPI\r
353HiiGetKeyboardLayout (\r
354 IN EFI_HII_PROTOCOL *This,\r
355 OUT UINT16 *DescriptorCount,\r
356 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
357 )\r
358;\r
359\r
360EFI_STATUS\r
361HiiCompareLanguage (\r
362 IN CHAR16 *LanguageStringLocation,\r
363 IN CHAR16 *Language\r
364 )\r
365;\r
366\r
137c54ac 367\r
368\r
369EFI_STATUS\r
370EFIAPI \r
371ThunkSendForm (\r
372 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
373 IN BOOLEAN UseDatabase,\r
374 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
375 IN UINTN HandleCount,\r
376 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
377 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
378 IN UINT8 *NvMapOverride, OPTIONAL\r
379 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
380 OUT BOOLEAN *ResetRequired OPTIONAL\r
381 );\r
382\r
383EFI_STATUS\r
384EFIAPI \r
385ThunkCreatePopUp (\r
386 IN UINTN NumberOfLines,\r
387 IN BOOLEAN HotKey,\r
388 IN UINTN MaximumStringSize,\r
389 OUT CHAR16 *StringBuffer,\r
390 OUT EFI_INPUT_KEY *KeyValue,\r
391 IN CHAR16 *String,\r
392 ...\r
393 );\r
394\r
ee3428bb 395#include "Utility.h"\r
ebbd2793 396#include "ConfigAccess.h"\r
ee3428bb 397\r
4259256b 398#endif\r