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