3 Copyright (c) 2006, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 This file contains global defines and prototype definitions
23 #ifndef _HIIDATABASE_H
24 #define _HIIDATABASE_H
27 // The package level header files this module uses
31 // The protocols, PPI and GUID defintions for this module
33 #include <Guid/GlobalVariable.h>
34 #include <Protocol/FormCallbackFramework.h>
35 #include <Protocol/HiiFramework.h>
37 // The Library classes this module consumes
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/IfrSupportLibFramework.h>
49 // HII Database Global data
51 #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P')
53 #define MAX_GLYPH_COUNT 65535
54 #define NARROW_GLYPH_ARRAY_SIZE 19
55 #define WIDE_GLYPH_ARRAY_SIZE 38
57 #define SETUP_MAP_NAME L"Setup"
58 #define HII_VARIABLE_SUFFIX_USER_DATA L"UserSavedData"
59 #define HII_VARIABLE_SUFFIX_DEFAULT_OVERRIDE L"DefaultOverride"
60 #define HII_VARIABLE_SUFFIX_MANUFACTURING_OVERRIDE L"ManufacturingOverride"
62 typedef struct _EFI_HII_HANDLE_DATABASE
{
63 VOID
*Buffer
; // Actual buffer pointer
64 EFI_HII_HANDLE Handle
; // Monotonically increasing value to signify the value returned to caller
65 UINT32 NumberOfTokens
; // The initial number of tokens when first registered
66 struct _EFI_HII_HANDLE_DATABASE
*NextHandleDatabase
;
67 } EFI_HII_HANDLE_DATABASE
;
70 EFI_NARROW_GLYPH NarrowGlyphs
[MAX_GLYPH_COUNT
];
71 EFI_WIDE_GLYPH WideGlyphs
[MAX_GLYPH_COUNT
];
72 EFI_KEY_DESCRIPTOR SystemKeyboardLayout
[106];
73 EFI_KEY_DESCRIPTOR OverrideKeyboardLayout
[106];
74 BOOLEAN SystemKeyboardUpdate
; // Has the SystemKeyboard been updated?
75 } EFI_HII_GLOBAL_DATA
;
80 EFI_HII_GLOBAL_DATA
*GlobalData
;
81 EFI_HII_HANDLE_DATABASE
*DatabaseHead
; // Head of the Null-terminated singly-linked list of handles.
86 EFI_HII_HANDLE Handle
;
88 EFI_HII_HANDLE_PACK HandlePack
;
91 EFI_HII_IFR_PACK
*IfrData
; // All the IFR data stored here
92 EFI_HII_STRING_PACK
*StringData
; // All the String data stored at &IfrData + IfrSize (StringData is just a label - never referenced)
93 } EFI_HII_PACKAGE_INSTANCE
;
96 EFI_HII_PACK_HEADER Header
;
97 EFI_IFR_FORM_SET FormSet
;
98 EFI_IFR_END_FORM_SET EndFormSet
;
101 #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE)
103 #define NARROW_WIDTH 8
104 #define WIDE_WIDTH 16
106 extern UINT8 mUnknownGlyph
[38];
115 OUT UINT32
*NumberOfTokens
121 IN EFI_HII_PROTOCOL
*This
,
122 IN EFI_HII_PACKAGE_INSTANCE
*PackageInstance
,
123 OUT EFI_HII_PACKAGE_INSTANCE
**StringPackageInstance
,
124 OUT UINT32
*TotalStringCount
129 // Public Interface Prototypes
133 InitializeHiiDatabase (
134 IN EFI_HANDLE ImageHandle
,
135 IN EFI_SYSTEM_TABLE
*SystemTable
142 IN EFI_HII_PROTOCOL
*This
,
143 IN EFI_HII_PACKAGES
*PackageList
,
144 OUT EFI_HII_HANDLE
*Handle
151 IN EFI_HII_PROTOCOL
*This
,
152 IN EFI_HII_HANDLE Handle
159 IN EFI_HII_PROTOCOL
*This
,
160 IN OUT UINT16
*HandleBufferLength
,
161 OUT EFI_HII_HANDLE
*Handle
168 IN EFI_HII_PROTOCOL
*This
,
169 IN EFI_HII_HANDLE Handle
,
170 IN OUT UINTN
*BufferSize
,
178 IN EFI_HII_PROTOCOL
*This
,
180 IN OUT UINT16
*Index
,
181 OUT UINT8
**GlyphBuffer
,
182 OUT UINT16
*BitWidth
,
183 IN OUT UINT32
*InternalStatus
190 IN EFI_HII_PROTOCOL
*This
,
191 IN UINT8
*GlyphBuffer
,
192 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground
,
193 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background
,
197 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
204 IN EFI_HII_PROTOCOL
*This
,
206 IN EFI_HII_HANDLE Handle
,
207 IN OUT STRING_REF
*Reference
,
215 IN EFI_HII_PROTOCOL
*This
,
216 IN EFI_HII_HANDLE Handle
,
219 IN CHAR16
*LanguageString
,
220 IN OUT UINTN
*BufferLength
,
221 OUT EFI_STRING StringBuffer
228 IN EFI_HII_PROTOCOL
*This
,
229 IN EFI_HII_HANDLE Handle
236 IN EFI_HII_PROTOCOL
*This
,
237 IN CHAR16
*StringToTest
,
238 IN OUT UINT32
*FirstMissing
,
239 OUT UINT32
*GlyphBufferSize
245 HiiGetPrimaryLanguages (
246 IN EFI_HII_PROTOCOL
*This
,
247 IN EFI_HII_HANDLE Handle
,
248 OUT EFI_STRING
*LanguageString
254 HiiGetSecondaryLanguages (
255 IN EFI_HII_PROTOCOL
*This
,
256 IN EFI_HII_HANDLE Handle
,
257 IN CHAR16
*PrimaryLanguage
,
258 OUT EFI_STRING
*LanguageString
265 IN EFI_HII_PROTOCOL
*This
,
266 IN EFI_HII_HANDLE Handle
,
268 IN OUT UINT16
*Index
,
270 IN CHAR16
*LanguageString
,
271 IN OUT UINT16
*BufferLength
,
272 OUT EFI_STRING StringBuffer
279 IN EFI_HII_PROTOCOL
*This
,
280 IN EFI_HII_HANDLE Handle
,
281 IN EFI_FORM_ID FormId
,
282 IN OUT UINTN
*BufferLength
,
290 IN EFI_HII_PROTOCOL
*This
,
291 IN EFI_HII_HANDLE Handle
,
292 IN UINTN DefaultMask
,
293 OUT EFI_HII_VARIABLE_PACK_LIST
**VariablePackList
300 IN EFI_HII_PROTOCOL
*This
,
301 IN EFI_HII_HANDLE Handle
,
302 IN EFI_FORM_LABEL Label
,
304 IN EFI_HII_UPDATE_DATA
*Data
310 HiiGetKeyboardLayout (
311 IN EFI_HII_PROTOCOL
*This
,
312 OUT UINT16
*DescriptorCount
,
313 OUT EFI_KEY_DESCRIPTOR
*Descriptor
319 IN CHAR16
*LanguageStringLocation
,