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