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