]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
Add in Thunking function for Dynamic Code creation. Only support Text and Subtitle...
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiDatabase.h
1 /**@file
2
3 This file contains global defines and prototype definitions
4 for the HII database.
5
6 Copyright (c) 2006 - 2008, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
11
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
14
15 **/
16
17 #ifndef _HIIDATABASE_H
18 #define _HIIDATABASE_H
19
20
21 #include <FrameworkDxe.h>
22
23 #include <Guid/GlobalVariable.h>
24 #include <Protocol/FrameworkFormCallback.h>
25 #include <Protocol/FrameworkHii.h>
26
27 //
28 // UEFI HII Protocols
29 //
30 #include <Protocol/HiiFont.h>
31 #include <Protocol/HiiImage.h>
32 #include <Protocol/HiiString.h>
33 #include <Protocol/HiiDatabase.h>
34 #include <Protocol/HiiConfigRouting.h>
35 #include <Protocol/HiiConfigAccess.h>
36
37
38 #include <Library/BaseLib.h>
39 #include <Library/DebugLib.h>
40 #include <Library/UefiDriverEntryPoint.h>
41 #include <Library/MemoryAllocationLib.h>
42 #include <Library/BaseMemoryLib.h>
43 #include <Library/UefiBootServicesTableLib.h>
44 #include <Library/UefiRuntimeServicesTableLib.h>
45 //#include <Library/FrameworkIfrSupportLib.h>
46 #include <Library/HiiLib.h>
47 #include <Library/ExtendedHiiLib.h>
48
49 //
50 // There are some type redefinitions between Framework Ifr Support Library and
51 // UEFI HII Ifr Support Library. We undefine the duplicated Framework definition here
52 // so that the duplicated definitions in UEFI HII Ifr can be defined.
53 // In this Thunk Module, we will access all Framework definition with "FRAMEWORK_" prefix.
54 //
55 #undef IFR_OPTION
56 #undef EFI_HII_UPDATE_DATA
57
58 #include <Library/IfrSupportLib.h>
59 #include <Library/ExtendedIfrSupportLib.h>
60
61 //
62 // Macros
63 //
64
65
66 //
67 // Typedef
68 //
69
70 #pragma pack (push, 1)
71 typedef struct {
72 UINT32 BinaryLength;
73 EFI_HII_PACKAGE_HEADER PackageHeader;
74 } TIANO_AUTOGEN_PACKAGES_HEADER;
75 #pragma pack (pop)
76
77 #define EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_HII_THUNK_PRIVATE_DATA, Hii, EFI_HII_THUNK_DRIVER_DATA_SIGNATURE)
78 #define EFI_HII_THUNK_DRIVER_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')
79 typedef struct {
80 UINTN Signature;
81 EFI_HANDLE Handle;
82 EFI_HII_PROTOCOL Hii;
83 FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle;
84
85 //
86 // This LIST_ENTRY is the list head which has HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY type
87 // as list entry.
88 //
89 LIST_ENTRY HiiThunkHandleMappingDBListHead;
90
91 } EFI_HII_THUNK_PRIVATE_DATA;
92
93
94 #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)
95 #define HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')
96 typedef struct {
97 LIST_ENTRY List;
98 UINT32 Signature;
99 FRAMEWORK_EFI_HII_HANDLE FrameworkHiiHandle;
100 EFI_HII_HANDLE UefiHiiHandle;
101
102 BOOLEAN IsPackageListWithOnlyStringPackages;
103 //
104 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.
105 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption
106 // in both HII Database implementation and all modules that registering packages:
107 // If a Package List has only IFR package and no String Package, the String Package containing the strings
108 // referenced by this IFR package is in another Package List
109 // registered with the HII database with the same EFI_HII_PACKAGES.GuidId.
110 //
111 //
112 // Only valid if IsPackageListWithSingleStringPack is TRUE.
113 // UEFI Package List Head Pointer, pointing to a allocated buffer containing the package
114 //
115 EFI_HII_PACKAGE_LIST_HEADER *UefiStringPackageListHeader; //Only valid if IsStringPack is TRUE.
116 //This UEFI Package list only consists of a list of string packages.
117
118 EFI_GUID TagGuid;
119 //
120 // TRUE if the package list identified by UefiHiiHandle imports String Packages from
121 // other package list with IsPackageListWithOnlyStringPackages is TRUE.
122 //
123 BOOLEAN DoesPackageListImportStringPackages;
124
125 } HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY;
126
127 #define HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')
128 #define HII_TRHUNK_BUFFER_STORAGE_KEY_FROM_LIST_ENTRY(Record) CR(Record, HII_TRHUNK_BUFFER_STORAGE_KEY, List, HII_TRHUNK_BUFFER_STORAGE_KEY_SIGNATURE)
129 typedef struct {
130 LIST_ENTRY List;
131 UINT32 Signature;
132 EFI_GUID Guid;
133 CHAR16 *Name;
134 UINTN Size;
135 UINT16 VarStoreId;
136 } HII_TRHUNK_BUFFER_STORAGE_KEY;
137
138 #define HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')
139 #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)
140 typedef struct {
141 UINT32 Signature;
142 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;
143 EFI_FORM_CALLBACK_PROTOCOL *FrameworkFormCallbackProtocol;
144 LIST_ENTRY ConfigAccessBufferStorageListHead;
145 } HII_TRHUNK_CONFIG_ACCESS_PROTOCOL_INSTANCE;
146
147 //
148 // Extern Variables
149 //
150 extern CONST EFI_HII_DATABASE_PROTOCOL *mUefiHiiDatabaseProtocol;
151 extern CONST EFI_HII_FONT_PROTOCOL *mUefiHiiFontProtocol;
152 extern CONST EFI_HII_IMAGE_PROTOCOL *mUefiHiiImageProtocol;
153 extern CONST EFI_HII_STRING_PROTOCOL *mUefiStringProtocol;
154 extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mUefiConfigRoutingProtocol;
155
156 //
157 // Prototypes
158 //
159
160 //
161 // Public Interface Prototypes
162 //
163 EFI_STATUS
164 EFIAPI
165 InitializeHiiDatabase (
166 IN EFI_HANDLE ImageHandle,
167 IN EFI_SYSTEM_TABLE *SystemTable
168 )
169 ;
170
171 EFI_STATUS
172 EFIAPI
173 HiiNewPack (
174 IN EFI_HII_PROTOCOL *This,
175 IN EFI_HII_PACKAGES *PackageList,
176 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
177 )
178 ;
179
180 EFI_STATUS
181 EFIAPI
182 HiiRemovePack (
183 IN EFI_HII_PROTOCOL *This,
184 IN FRAMEWORK_EFI_HII_HANDLE Handle
185 )
186 ;
187
188 EFI_STATUS
189 EFIAPI
190 HiiFindHandles (
191 IN EFI_HII_PROTOCOL *This,
192 IN OUT UINT16 *HandleBufferLength,
193 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
194 )
195 ;
196
197 EFI_STATUS
198 EFIAPI
199 HiiExportDatabase (
200 IN EFI_HII_PROTOCOL *This,
201 IN FRAMEWORK_EFI_HII_HANDLE Handle,
202 IN OUT UINTN *BufferSize,
203 OUT VOID *Buffer
204 )
205 ;
206
207 EFI_STATUS
208 EFIAPI
209 HiiGetGlyph (
210 IN EFI_HII_PROTOCOL *This,
211 IN CHAR16 *Source,
212 IN OUT UINT16 *Index,
213 OUT UINT8 **GlyphBuffer,
214 OUT UINT16 *BitWidth,
215 IN OUT UINT32 *InternalStatus
216 )
217 ;
218
219 EFI_STATUS
220 EFIAPI
221 HiiGlyphToBlt (
222 IN EFI_HII_PROTOCOL *This,
223 IN UINT8 *GlyphBuffer,
224 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
225 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
226 IN UINTN Count,
227 IN UINTN Width,
228 IN UINTN Height,
229 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer
230 )
231 ;
232
233 EFI_STATUS
234 EFIAPI
235 HiiNewString (
236 IN EFI_HII_PROTOCOL *This,
237 IN CHAR16 *Language,
238 IN FRAMEWORK_EFI_HII_HANDLE Handle,
239 IN OUT STRING_REF *Reference,
240 IN CHAR16 *NewString
241 )
242 ;
243
244 EFI_STATUS
245 EFIAPI
246 HiiGetString (
247 IN EFI_HII_PROTOCOL *This,
248 IN FRAMEWORK_EFI_HII_HANDLE Handle,
249 IN STRING_REF Token,
250 IN BOOLEAN Raw,
251 IN CHAR16 *LanguageString,
252 IN OUT UINTN *BufferLength,
253 OUT EFI_STRING StringBuffer
254 )
255 ;
256
257 EFI_STATUS
258 EFIAPI
259 HiiResetStrings (
260 IN EFI_HII_PROTOCOL *This,
261 IN FRAMEWORK_EFI_HII_HANDLE Handle
262 )
263 ;
264
265 EFI_STATUS
266 EFIAPI
267 HiiTestString (
268 IN EFI_HII_PROTOCOL *This,
269 IN CHAR16 *StringToTest,
270 IN OUT UINT32 *FirstMissing,
271 OUT UINT32 *GlyphBufferSize
272 )
273 ;
274
275 EFI_STATUS
276 EFIAPI
277 HiiGetPrimaryLanguages (
278 IN EFI_HII_PROTOCOL *This,
279 IN FRAMEWORK_EFI_HII_HANDLE Handle,
280 OUT EFI_STRING *LanguageString
281 )
282 ;
283
284 EFI_STATUS
285 EFIAPI
286 HiiGetSecondaryLanguages (
287 IN EFI_HII_PROTOCOL *This,
288 IN FRAMEWORK_EFI_HII_HANDLE Handle,
289 IN CHAR16 *PrimaryLanguage,
290 OUT EFI_STRING *LanguageString
291 )
292 ;
293
294 EFI_STATUS
295 EFIAPI
296 HiiGetLine (
297 IN EFI_HII_PROTOCOL *This,
298 IN FRAMEWORK_EFI_HII_HANDLE Handle,
299 IN STRING_REF Token,
300 IN OUT UINT16 *Index,
301 IN UINT16 LineWidth,
302 IN CHAR16 *LanguageString,
303 IN OUT UINT16 *BufferLength,
304 OUT EFI_STRING StringBuffer
305 )
306 ;
307
308 EFI_STATUS
309 EFIAPI
310 HiiGetForms (
311 IN EFI_HII_PROTOCOL *This,
312 IN FRAMEWORK_EFI_HII_HANDLE Handle,
313 IN EFI_FORM_ID FormId,
314 IN OUT UINTN *BufferLength,
315 OUT UINT8 *Buffer
316 )
317 ;
318
319 EFI_STATUS
320 EFIAPI
321 HiiGetDefaultImage (
322 IN EFI_HII_PROTOCOL *This,
323 IN FRAMEWORK_EFI_HII_HANDLE Handle,
324 IN UINTN DefaultMask,
325 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
326 )
327 ;
328
329 EFI_STATUS
330 EFIAPI
331 HiiUpdateForm (
332 IN EFI_HII_PROTOCOL *This,
333 IN FRAMEWORK_EFI_HII_HANDLE Handle,
334 IN EFI_FORM_LABEL Label,
335 IN BOOLEAN AddData,
336 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data
337 )
338 ;
339
340 EFI_STATUS
341 EFIAPI
342 HiiGetKeyboardLayout (
343 IN EFI_HII_PROTOCOL *This,
344 OUT UINT16 *DescriptorCount,
345 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor
346 )
347 ;
348
349 EFI_STATUS
350 HiiCompareLanguage (
351 IN CHAR16 *LanguageStringLocation,
352 IN CHAR16 *Language
353 )
354 ;
355
356 #include "Utility.h"
357 #include "ConfigAccess.h"
358
359 #endif