3 This file contains global defines and prototype definitions
4 for the Framework HII to Uefi HII Thunk Module.
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
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.
17 #ifndef _HIIDATABASE_H
18 #define _HIIDATABASE_H
21 #include <FrameworkDxe.h>
23 #include <Guid/GlobalVariable.h>
24 #include <Protocol/FrameworkFormCallback.h>
25 #include <Protocol/FrameworkHii.h>
26 #include <Protocol/FrameworkFormBrowser.h>
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>
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>
49 #include <Library/IfrSupportLib.h>
50 #include <Library/ExtendedIfrSupportLib.h>
52 #include <MdeModuleHii.h>
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.
62 #define RESERVED_VARSTORE_ID 0x0001
65 #pragma pack (push, 1)
68 EFI_HII_PACKAGE_HEADER PackageHeader
;
69 } TIANO_AUTOGEN_PACKAGES_HEADER
;
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')
80 // The head of link list for all HII_THUNK_CONTEXT.
82 LIST_ENTRY ThunkContextListHead
;
84 EFI_HANDLE RemovePackNotifyHandle
;
85 EFI_HANDLE AddPackNotifyHandle
;
86 } HII_THUNK_PRIVATE_DATA
;
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')
97 EFI_IFR_TYPE_VALUE Value
;
99 } ONE_OF_OPTION_MAP_ENTRY
;
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')
109 UINT8 ValueType
; //EFI_IFR_TYPE_NUM_*
111 EFI_QUESTION_ID QuestionId
;
113 LIST_ENTRY OneOfOptionMapEntryListHead
; //ONE_OF_OPTION_MAP_ENTRY
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')
124 EFI_QUESTION_ID UefiQid
;
125 } QUESTION_ID_MAP_ENTRY
;
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')
136 LIST_ENTRY MapEntryListHead
;
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')
146 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle
;
147 EFI_HII_HANDLE UefiHiiHandle
;
148 EFI_HANDLE UefiHiiDriverHandle
;
150 UINTN IfrPackageCount
;
151 UINTN StringPackageCount
;
153 BOOLEAN ByFrameworkHiiNewPack
;
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.
164 LIST_ENTRY QuestionIdMapListHead
; //QUESTION_ID_MAP
166 LIST_ENTRY OneOfOptionMapListHead
; //ONE_OF_OPTION_MAP
168 UINT8
*NvMapOverride
;
171 UINT16 FormSetSubClass
;
172 STRING_REF FormSetTitle
;
173 STRING_REF FormSetHelp
;
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)
188 } BUFFER_STORAGE_ENTRY
;
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)
196 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol
;
198 // Framework's callback
200 EFI_FORM_CALLBACK_PROTOCOL
*FormCallbackProtocol
;
202 LIST_ENTRY BufferStorageListHead
;
204 HII_THUNK_CONTEXT
*ThunkContext
;
205 } CONFIG_ACCESS_PRIVATE
;
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)
214 HII_THUNK_PRIVATE_DATA
*ThunkPrivate
;
215 EFI_FORM_BROWSER_PROTOCOL FormBrowser
;
216 } EFI_FORMBROWSER_THUNK_PRIVATE_DATA
;
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
;
229 extern HII_THUNK_PRIVATE_DATA
*mHiiThunkPrivateData
;
231 extern BOOLEAN mInFrameworkUpdatePakcage
;
237 IN EFI_HII_PROTOCOL
*This
,
238 IN EFI_HII_PACKAGES
*PackageList
,
239 OUT FRAMEWORK_EFI_HII_HANDLE
*Handle
245 IN EFI_HII_PROTOCOL
*This
,
246 IN FRAMEWORK_EFI_HII_HANDLE Handle
252 IN EFI_HII_PROTOCOL
*This
,
253 IN OUT UINT16
*HandleBufferLength
,
254 OUT FRAMEWORK_EFI_HII_HANDLE
*Handle
260 IN EFI_HII_PROTOCOL
*This
,
261 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
262 IN OUT UINTN
*BufferSize
,
269 IN EFI_HII_PROTOCOL
*This
,
271 IN OUT UINT16
*Index
,
272 OUT UINT8
**GlyphBuffer
,
273 OUT UINT16
*BitWidth
,
274 IN OUT UINT32
*InternalStatus
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
,
287 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
293 IN EFI_HII_PROTOCOL
*This
,
295 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
296 IN OUT STRING_REF
*Reference
,
303 IN EFI_HII_PROTOCOL
*This
,
304 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
307 IN CHAR16
*LanguageString
,
308 IN OUT UINTN
*BufferLength
,
309 OUT EFI_STRING StringBuffer
315 IN EFI_HII_PROTOCOL
*This
,
316 IN FRAMEWORK_EFI_HII_HANDLE Handle
322 IN EFI_HII_PROTOCOL
*This
,
323 IN CHAR16
*StringToTest
,
324 IN OUT UINT32
*FirstMissing
,
325 OUT UINT32
*GlyphBufferSize
330 HiiGetPrimaryLanguages (
331 IN EFI_HII_PROTOCOL
*This
,
332 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
333 OUT EFI_STRING
*LanguageString
338 HiiGetSecondaryLanguages (
339 IN EFI_HII_PROTOCOL
*This
,
340 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
341 IN CHAR16
*PrimaryLanguage
,
342 OUT EFI_STRING
*LanguageString
348 IN EFI_HII_PROTOCOL
*This
,
349 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
351 IN OUT UINT16
*Index
,
353 IN CHAR16
*LanguageString
,
354 IN OUT UINT16
*BufferLength
,
355 OUT EFI_STRING StringBuffer
361 IN EFI_HII_PROTOCOL
*This
,
362 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
363 IN EFI_FORM_ID FormId
,
364 IN OUT UINTN
*BufferLength
,
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
380 IN EFI_HII_PROTOCOL
*This
,
381 IN FRAMEWORK_EFI_HII_HANDLE Handle
,
382 IN EFI_FORM_LABEL Label
,
384 IN FRAMEWORK_EFI_HII_UPDATE_DATA
*Data
389 HiiGetKeyboardLayout (
390 IN EFI_HII_PROTOCOL
*This
,
391 OUT UINT16
*DescriptorCount
,
392 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR
*Descriptor
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
412 IN UINTN NumberOfLines
,
414 IN UINTN MaximumStringSize
,
415 OUT CHAR16
*StringBuffer
,
416 OUT EFI_INPUT_KEY
*KeyValue
,
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
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
442 #include "ConfigAccess.h"