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