]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.h
1) Add in code to sync Browser Data with the NvMapOverride that may be updated by...
[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 #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 #pragma pack (push, 1)
55 typedef struct {
56 UINT32 BinaryLength;
57 EFI_HII_PACKAGE_HEADER PackageHeader;
58 } TIANO_AUTOGEN_PACKAGES_HEADER;
59 #pragma pack (pop)
60
61 #define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)
62 #define HII_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'I', 'T')
63 typedef struct {
64 UINTN Signature;
65 EFI_HANDLE Handle;
66 EFI_HII_PROTOCOL Hii;
67 FRAMEWORK_EFI_HII_HANDLE StaticHiiHandle;
68 FRAMEWORK_EFI_HII_HANDLE StaticPureUefiHiiHandle;
69
70 //
71 // The head of link list for all HII_THUNK_CONTEXT.
72 //
73 LIST_ENTRY ThunkContextListHead;
74
75 EFI_HANDLE RemovePackNotifyHandle;
76 EFI_HANDLE AddPackNotifyHandle;
77 } HII_THUNK_PRIVATE_DATA;
78
79
80
81 #define ONE_OF_OPTION_MAP_ENTRY_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP_ENTRY, Link, ONE_OF_OPTION_MAP_ENTRY_SIGNATURE)
82 #define ONE_OF_OPTION_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'M', 'E')
83 typedef struct {
84 UINT32 Signature;
85 LIST_ENTRY Link;
86
87 UINT16 FwKey;
88 EFI_IFR_TYPE_VALUE Value;
89
90 } ONE_OF_OPTION_MAP_ENTRY;
91
92
93
94 #define ONE_OF_OPTION_MAP_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP, Link, ONE_OF_OPTION_MAP_SIGNATURE)
95 #define ONE_OF_OPTION_MAP_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'O', 'M')
96 typedef struct {
97 UINT32 Signature;
98 LIST_ENTRY Link;
99
100 UINT8 ValueType; //EFI_IFR_TYPE_NUM_*
101
102 EFI_QUESTION_ID QuestionId;
103
104 LIST_ENTRY OneOfOptionMapEntryListHead; //ONE_OF_OPTION_MAP_ENTRY
105 } ONE_OF_OPTION_MAP;
106
107
108
109 #define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)
110 #define QUESTION_ID_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'E')
111 typedef struct {
112 UINT32 Signature;
113 LIST_ENTRY Link;
114 UINT16 FwQId;
115 EFI_QUESTION_ID UefiQid;
116 } QUESTION_ID_MAP_ENTRY;
117
118
119
120 #define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)
121 #define QUESTION_ID_MAP_SIGNATURE EFI_SIGNATURE_32 ('Q', 'I', 'M', 'P')
122 typedef struct {
123 UINT32 Signature;
124 LIST_ENTRY Link;
125 UINT16 VarStoreId;
126 UINTN VarSize;
127 LIST_ENTRY MapEntryListHead;
128 } QUESTION_ID_MAP;
129
130
131
132 #define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)
133 #define HII_THUNK_CONTEXT_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'H', 'M')
134 typedef struct {
135 LIST_ENTRY Link;
136 UINT32 Signature;
137 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;
138 EFI_HII_HANDLE UefiHiiHandle;
139 EFI_HANDLE UefiHiiDriverHandle;
140
141 UINTN IfrPackageCount;
142 UINTN StringPackageCount;
143
144 //
145 // The field below is only valid if IsPackageListWithOnlyStringPack is TRUE.
146 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption
147 // in both HII Database implementation and all modules that registering packages:
148 // If a Package List has only IFR package and no String Package, the IFR package will reference
149 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.
150 // TagGuid is the used to record this GuidId.
151 EFI_GUID TagGuid;
152
153 LIST_ENTRY QuestionIdMapListHead; //QUESTION_ID_MAP
154
155 LIST_ENTRY OneOfOptionMapListHead; //ONE_OF_OPTION_MAP
156
157 UINT8 *NvMapOverride;
158
159 UINT16 FormSetClass;
160 UINT16 FormSetSubClass;
161 STRING_REF FormSetTitle;
162 STRING_REF FormSetHelp;
163
164 } HII_THUNK_CONTEXT;
165
166
167
168 #define BUFFER_STORAGE_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 's', 'k')
169 #define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)
170 typedef struct {
171 LIST_ENTRY Link;
172 UINT32 Signature;
173 EFI_GUID Guid;
174 CHAR16 *Name;
175 UINTN Size;
176 UINT16 VarStoreId;
177 } BUFFER_STORAGE_ENTRY;
178
179
180
181 #define CONFIG_ACCESS_PRIVATE_SIGNATURE EFI_SIGNATURE_32 ('H', 'T', 'c', 'a')
182 #define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)
183 typedef struct {
184 UINT32 Signature;
185 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;
186 //
187 // Framework's callback
188 //
189 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;
190
191 LIST_ENTRY BufferStorageListHead;
192
193 HII_THUNK_CONTEXT *ThunkContext;
194 } CONFIG_ACCESS_PRIVATE;
195
196
197
198 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE EFI_SIGNATURE_32 ('F', 'B', 'T', 'd')
199 #define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)
200 typedef struct {
201 UINTN Signature;
202 EFI_HANDLE Handle;
203 HII_THUNK_PRIVATE_DATA *ThunkPrivate;
204 EFI_FORM_BROWSER_PROTOCOL FormBrowser;
205 } EFI_FORMBROWSER_THUNK_PRIVATE_DATA;
206
207
208 //
209 // Extern Variables
210 //
211 extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;
212 extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;
213 extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;
214 extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;
215 extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;
216 extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;
217
218 extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;
219
220 extern BOOLEAN mInFrameworkUpdatePakcage;
221
222
223 //
224 // Prototypes
225 //
226
227 //
228 // Public Interface Prototypes
229 //
230 EFI_STATUS
231 EFIAPI
232 InitializeHiiDatabase (
233 IN EFI_HANDLE ImageHandle,
234 IN EFI_SYSTEM_TABLE *SystemTable
235 )
236 ;
237
238 EFI_STATUS
239 EFIAPI
240 HiiNewPack (
241 IN EFI_HII_PROTOCOL *This,
242 IN EFI_HII_PACKAGES *PackageList,
243 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
244 )
245 ;
246
247 EFI_STATUS
248 EFIAPI
249 HiiRemovePack (
250 IN EFI_HII_PROTOCOL *This,
251 IN FRAMEWORK_EFI_HII_HANDLE Handle
252 )
253 ;
254
255 EFI_STATUS
256 EFIAPI
257 HiiFindHandles (
258 IN EFI_HII_PROTOCOL *This,
259 IN OUT UINT16 *HandleBufferLength,
260 OUT FRAMEWORK_EFI_HII_HANDLE *Handle
261 )
262 ;
263
264 EFI_STATUS
265 EFIAPI
266 HiiExportDatabase (
267 IN EFI_HII_PROTOCOL *This,
268 IN FRAMEWORK_EFI_HII_HANDLE Handle,
269 IN OUT UINTN *BufferSize,
270 OUT VOID *Buffer
271 )
272 ;
273
274 EFI_STATUS
275 EFIAPI
276 HiiGetGlyph (
277 IN EFI_HII_PROTOCOL *This,
278 IN CHAR16 *Source,
279 IN OUT UINT16 *Index,
280 OUT UINT8 **GlyphBuffer,
281 OUT UINT16 *BitWidth,
282 IN OUT UINT32 *InternalStatus
283 )
284 ;
285
286 EFI_STATUS
287 EFIAPI
288 HiiGlyphToBlt (
289 IN EFI_HII_PROTOCOL *This,
290 IN UINT8 *GlyphBuffer,
291 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
292 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
293 IN UINTN Count,
294 IN UINTN Width,
295 IN UINTN Height,
296 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer
297 )
298 ;
299
300 EFI_STATUS
301 EFIAPI
302 HiiNewString (
303 IN EFI_HII_PROTOCOL *This,
304 IN CHAR16 *Language,
305 IN FRAMEWORK_EFI_HII_HANDLE Handle,
306 IN OUT STRING_REF *Reference,
307 IN CHAR16 *NewString
308 )
309 ;
310
311 EFI_STATUS
312 EFIAPI
313 HiiGetString (
314 IN EFI_HII_PROTOCOL *This,
315 IN FRAMEWORK_EFI_HII_HANDLE Handle,
316 IN STRING_REF Token,
317 IN BOOLEAN Raw,
318 IN CHAR16 *LanguageString,
319 IN OUT UINTN *BufferLength,
320 OUT EFI_STRING StringBuffer
321 )
322 ;
323
324 EFI_STATUS
325 EFIAPI
326 HiiResetStrings (
327 IN EFI_HII_PROTOCOL *This,
328 IN FRAMEWORK_EFI_HII_HANDLE Handle
329 )
330 ;
331
332 EFI_STATUS
333 EFIAPI
334 HiiTestString (
335 IN EFI_HII_PROTOCOL *This,
336 IN CHAR16 *StringToTest,
337 IN OUT UINT32 *FirstMissing,
338 OUT UINT32 *GlyphBufferSize
339 )
340 ;
341
342 EFI_STATUS
343 EFIAPI
344 HiiGetPrimaryLanguages (
345 IN EFI_HII_PROTOCOL *This,
346 IN FRAMEWORK_EFI_HII_HANDLE Handle,
347 OUT EFI_STRING *LanguageString
348 )
349 ;
350
351 EFI_STATUS
352 EFIAPI
353 HiiGetSecondaryLanguages (
354 IN EFI_HII_PROTOCOL *This,
355 IN FRAMEWORK_EFI_HII_HANDLE Handle,
356 IN CHAR16 *PrimaryLanguage,
357 OUT EFI_STRING *LanguageString
358 )
359 ;
360
361 EFI_STATUS
362 EFIAPI
363 HiiGetLine (
364 IN EFI_HII_PROTOCOL *This,
365 IN FRAMEWORK_EFI_HII_HANDLE Handle,
366 IN STRING_REF Token,
367 IN OUT UINT16 *Index,
368 IN UINT16 LineWidth,
369 IN CHAR16 *LanguageString,
370 IN OUT UINT16 *BufferLength,
371 OUT EFI_STRING StringBuffer
372 )
373 ;
374
375 EFI_STATUS
376 EFIAPI
377 HiiGetForms (
378 IN EFI_HII_PROTOCOL *This,
379 IN FRAMEWORK_EFI_HII_HANDLE Handle,
380 IN EFI_FORM_ID FormId,
381 IN OUT UINTN *BufferLength,
382 OUT UINT8 *Buffer
383 )
384 ;
385
386 EFI_STATUS
387 EFIAPI
388 HiiGetDefaultImage (
389 IN EFI_HII_PROTOCOL *This,
390 IN FRAMEWORK_EFI_HII_HANDLE Handle,
391 IN UINTN DefaultMask,
392 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
393 )
394 ;
395
396 EFI_STATUS
397 EFIAPI
398 HiiUpdateForm (
399 IN EFI_HII_PROTOCOL *This,
400 IN FRAMEWORK_EFI_HII_HANDLE Handle,
401 IN EFI_FORM_LABEL Label,
402 IN BOOLEAN AddData,
403 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data
404 )
405 ;
406
407 EFI_STATUS
408 EFIAPI
409 HiiGetKeyboardLayout (
410 IN EFI_HII_PROTOCOL *This,
411 OUT UINT16 *DescriptorCount,
412 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor
413 )
414 ;
415
416 EFI_STATUS
417 HiiCompareLanguage (
418 IN CHAR16 *LanguageStringLocation,
419 IN CHAR16 *Language
420 )
421 ;
422
423
424
425 EFI_STATUS
426 EFIAPI
427 ThunkSendForm (
428 IN EFI_FORM_BROWSER_PROTOCOL *This,
429 IN BOOLEAN UseDatabase,
430 IN FRAMEWORK_EFI_HII_HANDLE *Handle,
431 IN UINTN HandleCount,
432 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL
433 IN EFI_HANDLE CallbackHandle, OPTIONAL
434 IN UINT8 *NvMapOverride, OPTIONAL
435 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL
436 OUT BOOLEAN *ResetRequired OPTIONAL
437 );
438
439 EFI_STATUS
440 EFIAPI
441 ThunkCreatePopUp (
442 IN UINTN NumberOfLines,
443 IN BOOLEAN HotKey,
444 IN UINTN MaximumStringSize,
445 OUT CHAR16 *StringBuffer,
446 OUT EFI_INPUT_KEY *KeyValue,
447 IN CHAR16 *String,
448 ...
449 );
450
451 EFI_STATUS
452 EFIAPI
453 RemovePackNotify (
454 IN UINT8 PackageType,
455 IN CONST EFI_GUID *PackageGuid,
456 IN CONST EFI_HII_PACKAGE_HEADER *Package,
457 IN EFI_HII_HANDLE Handle,
458 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
459 )
460 ;
461
462 EFI_STATUS
463 EFIAPI
464 NewOrAddPackNotify (
465 IN UINT8 PackageType,
466 IN CONST EFI_GUID *PackageGuid,
467 IN CONST EFI_HII_PACKAGE_HEADER *Package,
468 IN EFI_HII_HANDLE Handle,
469 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType
470 )
471 ;
472
473 #include "Utility.h"
474 #include "ConfigAccess.h"
475
476 #endif