]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
clean up for IPF ICC tool chain.
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiDatabase.h
1 /**@file
2
3 This file contains global defines and prototype definitions
4 for the Framework HII to Uefi HII Thunk Module.
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 #include <Protocol/FrameworkFormBrowser.h>
27
28 //
29 // UEFI HII Protocols
30 //
31 #include <Protocol/HiiFont.h>
32 #include <Protocol/HiiImage.h>
33 #include <Protocol/HiiString.h>
34 #include <Protocol/HiiDatabase.h>
35 #include <Protocol/HiiConfigRouting.h>
36 #include <Protocol/HiiConfigAccess.h>
37
38
39 #include <Library/BaseLib.h>
40 #include <Library/DebugLib.h>
41 #include <Library/UefiDriverEntryPoint.h>
42 #include <Library/MemoryAllocationLib.h>
43 #include <Library/BaseMemoryLib.h>
44 #include <Library/UefiBootServicesTableLib.h>
45 #include <Library/UefiRuntimeServicesTableLib.h>
46 #include <Library/HiiLib.h>
47 #include <Library/ExtendedHiiLib.h>
48
49 #include <Library/IfrSupportLib.h>
50 #include <Library/ExtendedIfrSupportLib.h>
51
52 #include <MdeModuleHii.h>
53
54 #include "UefiIfrParser.h"
55
56
57 //
58 // VARSTORE ID of 0 for Buffer Storage Type Storage is reserved in UEFI IFR form. But VARSTORE ID
59 // 0 in Framework IFR is the default VarStore ID for storage without explicit declaration. So we have
60 // to reseved 0x0001 in UEFI VARSTORE ID to represetn default storage id in Framework IFR.
61 // Framework VFR has to be ported or pre-processed to change the default VARSTORE to a VARSTORE
62 // with ID equal to 0x0001.
63 //
64 #define FRAMEWORK_RESERVED_VARSTORE_ID 0x0001
65
66
67 #pragma pack (push, 1)
68 typedef struct {
69 UINT32 BinaryLength;
70 EFI_HII_PACKAGE_HEADER PackageHeader;
71 } TIANO_AUTOGEN_PACKAGES_HEADER;
72 #pragma pack (pop)
73
74 #define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)
75 #define HII_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')
76 typedef struct {
77 UINTN Signature;
78 EFI_HANDLE Handle;
79 EFI_HII_PROTOCOL Hii;
80
81 //
82 // The head of link list for all HII_THUNK_CONTEXT.
83 //
84 LIST_ENTRY ThunkContextListHead;
85
86 EFI_HANDLE RemovePackNotifyHandle;
87 EFI_HANDLE AddPackNotifyHandle;
88 } HII_THUNK_PRIVATE_DATA;
89
90
91
92
93
94 #define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)
95 #define QUESTION_ID_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'E')
96 typedef struct {
97 UINT32 Signature;
98 LIST_ENTRY Link;
99 UINT16 FwQId;
100 EFI_QUESTION_ID UefiQid;
101 } QUESTION_ID_MAP_ENTRY;
102
103
104
105 #define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)
106 #define QUESTION_ID_MAP_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'P')
107 typedef struct {
108 UINT32 Signature;
109 LIST_ENTRY Link;
110 UINT16 VarStoreId;
111 UINTN VarSize;
112 LIST_ENTRY MapEntryListHead;
113 } QUESTION_ID_MAP;
114
115
116
117 #define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)
118 #define HII_THUNK_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')
119 typedef struct {
120 LIST_ENTRY Link;
121 UINT32 Signature;
122 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;
123 EFI_HII_HANDLE UefiHiiHandle;
124 EFI_HANDLE UefiHiiDriverHandle;
125
126 UINTN IfrPackageCount;
127 UINTN StringPackageCount;
128
129 BOOLEAN ByFrameworkHiiNewPack;
130
131 //
132 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.
133 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption
134 // in both HII Database implementation and all modules that registering packages:
135 // If a Package List has only IFR package and no String Package, the IFR package will reference
136 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.
137 // TagGuid is the used to record this GuidId.
138 EFI_GUID TagGuid;
139
140 UINT8 *NvMapOverride;
141
142 FORM_BROWSER_FORMSET *FormSet;
143
144 } HII_THUNK_CONTEXT;
145
146
147
148 #define BUFFER_STORAGE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')
149 #define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)
150 typedef struct {
151 LIST_ENTRY Link;
152 UINT32 Signature;
153 EFI_GUID Guid;
154 CHAR16 *Name;
155 UINTN Size;
156 UINT16 VarStoreId;
157 } BUFFER_STORAGE_ENTRY;
158
159
160
161 #define CONFIG_ACCESS_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')
162 #define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)
163 typedef struct {
164 UINT32 Signature;
165 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;
166 //
167 // Framework's callback
168 //
169 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;
170
171 HII_THUNK_CONTEXT *ThunkContext;
172 } CONFIG_ACCESS_PRIVATE;
173
174
175
176 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')
177 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)
178 typedef struct {
179 UINTN Signature;
180 EFI_HANDLE Handle;
181 HII_THUNK_PRIVATE_DATA *ThunkPrivate;
182 EFI_FORM_BROWSER_PROTOCOL FormBrowser;
183 } EFI_FORMBROWSER_THUNK_PRIVATE_DATA;
184
185
186 //
187 // Extern Variables
188 //
189 extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;
190 extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;
191 extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;
192 extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;
193 extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;
194 extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;
195
196 extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;
197
198 extern BOOLEAN mInFrameworkUpdatePakcage;
199
200
201 EFI_STATUS
202 EFIAPI
203 HiiNewPack (
204 IN EFI_HII_PROTOCOL *This,
205 IN EFI_HII_PACKAGES *PackageList,
206 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
207 );
208
209 EFI_STATUS
210 EFIAPI
211 HiiRemovePack (
212 IN EFI_HII_PROTOCOL *This,
213 IN FRAMEWORK_EFI_HII_HANDLE Handle
214 );
215
216 EFI_STATUS
217 EFIAPI
218 HiiFindHandles (
219 IN EFI_HII_PROTOCOL *This,
220 IN OUT UINT16 *HandleBufferLength,
221 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
222 );
223
224 EFI_STATUS
225 EFIAPI
226 HiiExportDatabase (
227 IN EFI_HII_PROTOCOL *This,
228 IN FRAMEWORK_EFI_HII_HANDLE Handle,
229 IN OUT UINTN *BufferSize,
230 OUT VOID *Buffer
231 );
232
233 EFI_STATUS
234 EFIAPI
235 HiiGetGlyph (
236 IN EFI_HII_PROTOCOL *This,
237 IN CHAR16 *Source,
238 IN OUT UINT16 *Index,
239 OUT UINT8 **GlyphBuffer,
240 OUT UINT16 *BitWidth,
241 IN OUT UINT32 *InternalStatus
242 );
243
244 EFI_STATUS
245 EFIAPI
246 HiiGlyphToBlt (
247 IN EFI_HII_PROTOCOL *This,
248 IN UINT8 *GlyphBuffer,
249 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
250 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
251 IN UINTN Count,
252 IN UINTN Width,
253 IN UINTN Height,
254 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer
255 );
256
257 EFI_STATUS
258 EFIAPI
259 HiiNewString (
260 IN EFI_HII_PROTOCOL *This,
261 IN CHAR16 *Language,
262 IN FRAMEWORK_EFI_HII_HANDLE Handle,
263 IN OUT STRING_REF *Reference,
264 IN CHAR16 *NewString
265 );
266
267 EFI_STATUS
268 EFIAPI
269 HiiGetString (
270 IN EFI_HII_PROTOCOL *This,
271 IN FRAMEWORK_EFI_HII_HANDLE Handle,
272 IN STRING_REF Token,
273 IN BOOLEAN Raw,
274 IN CHAR16 *LanguageString,
275 IN OUT UINTN *BufferLength,
276 OUT EFI_STRING StringBuffer
277 );
278
279 EFI_STATUS
280 EFIAPI
281 HiiResetStrings (
282 IN EFI_HII_PROTOCOL *This,
283 IN FRAMEWORK_EFI_HII_HANDLE Handle
284 );
285
286 EFI_STATUS
287 EFIAPI
288 HiiTestString (
289 IN EFI_HII_PROTOCOL *This,
290 IN CHAR16 *StringToTest,
291 IN OUT UINT32 *FirstMissing,
292 OUT UINT32 *GlyphBufferSize
293 );
294
295 EFI_STATUS
296 EFIAPI
297 HiiGetPrimaryLanguages (
298 IN EFI_HII_PROTOCOL *This,
299 IN FRAMEWORK_EFI_HII_HANDLE Handle,
300 OUT EFI_STRING *LanguageString
301 );
302
303 EFI_STATUS
304 EFIAPI
305 HiiGetSecondaryLanguages (
306 IN EFI_HII_PROTOCOL *This,
307 IN FRAMEWORK_EFI_HII_HANDLE Handle,
308 IN CHAR16 *PrimaryLanguage,
309 OUT EFI_STRING *LanguageString
310 );
311
312 EFI_STATUS
313 EFIAPI
314 HiiGetLine (
315 IN EFI_HII_PROTOCOL *This,
316 IN FRAMEWORK_EFI_HII_HANDLE Handle,
317 IN STRING_REF Token,
318 IN OUT UINT16 *Index,
319 IN UINT16 LineWidth,
320 IN CHAR16 *LanguageString,
321 IN OUT UINT16 *BufferLength,
322 OUT EFI_STRING StringBuffer
323 );
324
325 EFI_STATUS
326 EFIAPI
327 HiiGetForms (
328 IN EFI_HII_PROTOCOL *This,
329 IN FRAMEWORK_EFI_HII_HANDLE Handle,
330 IN EFI_FORM_ID FormId,
331 IN OUT UINTN *BufferLength,
332 OUT UINT8 *Buffer
333 );
334
335 EFI_STATUS
336 EFIAPI
337 HiiGetDefaultImage (
338 IN EFI_HII_PROTOCOL *This,
339 IN FRAMEWORK_EFI_HII_HANDLE Handle,
340 IN UINTN DefaultMask,
341 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
342 );
343
344 EFI_STATUS
345 EFIAPI
346 HiiUpdateForm (
347 IN EFI_HII_PROTOCOL *This,
348 IN FRAMEWORK_EFI_HII_HANDLE Handle,
349 IN EFI_FORM_LABEL Label,
350 IN BOOLEAN AddData,
351 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data
352 );
353
354 EFI_STATUS
355 EFIAPI
356 HiiGetKeyboardLayout (
357 IN EFI_HII_PROTOCOL *This,
358 OUT UINT16 *DescriptorCount,
359 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor
360 );
361
362 EFI_STATUS
363 EFIAPI
364 ThunkSendForm (
365 IN EFI_FORM_BROWSER_PROTOCOL *This,
366 IN BOOLEAN UseDatabase,
367 IN FRAMEWORK_EFI_HII_HANDLE *Handle,
368 IN UINTN HandleCount,
369 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL
370 IN EFI_HANDLE CallbackHandle, OPTIONAL
371 IN UINT8 *NvMapOverride, OPTIONAL
372 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL
373 OUT BOOLEAN *ResetRequired OPTIONAL
374 );
375
376 EFI_STATUS
377 EFIAPI
378 ThunkCreatePopUp (
379 IN UINTN NumberOfLines,
380 IN BOOLEAN HotKey,
381 IN UINTN MaximumStringSize,
382 OUT CHAR16 *StringBuffer,
383 OUT EFI_INPUT_KEY *KeyValue,
384 IN CHAR16 *String,
385 ...
386 );
387
388 EFI_STATUS
389 EFIAPI
390 RemovePackNotify (
391 IN UINT8 PackageType,
392 IN CONST EFI_GUID *PackageGuid,
393 IN CONST EFI_HII_PACKAGE_HEADER *Package,
394 IN EFI_HII_HANDLE Handle,
395 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
396 );
397
398 EFI_STATUS
399 EFIAPI
400 NewOrAddPackNotify (
401 IN UINT8 PackageType,
402 IN CONST EFI_GUID *PackageGuid,
403 IN CONST EFI_HII_PACKAGE_HEADER *Package,
404 IN EFI_HII_HANDLE Handle,
405 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
406 );
407
408 #include "Utility.h"
409 #include "ConfigAccess.h"
410
411 #endif