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
29 #include <Guid/GlobalVariable.h>
30 #include <Protocol/FormCallbackFramework.h>
31 #include <Protocol/HiiFramework.h>
33 #include <Library/BaseLib.h>
34 #include <Library/DebugLib.h>
35 #include <Library/UefiDriverEntryPoint.h>
36 #include <Library/MemoryAllocationLib.h>
37 #include <Library/BaseMemoryLib.h>
38 #include <Library/UefiBootServicesTableLib.h>
39 #include <Library/UefiRuntimeServicesTableLib.h>
40 #include <Library/IfrSupportLibFramework.h>
43 // HII Database Global data
45 #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P')
47 #define MAX_GLYPH_COUNT 65535
48 #define NARROW_GLYPH_ARRAY_SIZE 19
49 #define WIDE_GLYPH_ARRAY_SIZE 38
51 #define SETUP_MAP_NAME L"Setup"
52 #define HII_VARIABLE_SUFFIX_USER_DATA L"UserSavedData"
53 #define HII_VARIABLE_SUFFIX_DEFAULT_OVERRIDE L"DefaultOverride"
54 #define HII_VARIABLE_SUFFIX_MANUFACTURING_OVERRIDE L"ManufacturingOverride"
56 typedef struct _EFI_HII_HANDLE_DATABASE
{
57 VOID
*Buffer
; // Actual buffer pointer
58 EFI_HII_HANDLE Handle
; // Monotonically increasing value to signify the value returned to caller
59 UINT32 NumberOfTokens
; // The initial number of tokens when first registered
60 struct _EFI_HII_HANDLE_DATABASE
*NextHandleDatabase
;
61 } EFI_HII_HANDLE_DATABASE
;
64 EFI_NARROW_GLYPH NarrowGlyphs
[MAX_GLYPH_COUNT
];
65 EFI_WIDE_GLYPH WideGlyphs
[MAX_GLYPH_COUNT
];
66 EFI_KEY_DESCRIPTOR SystemKeyboardLayout
[106];
67 EFI_KEY_DESCRIPTOR OverrideKeyboardLayout
[106];
68 BOOLEAN SystemKeyboardUpdate
; // Has the SystemKeyboard been updated?
69 } EFI_HII_GLOBAL_DATA
;
74 EFI_HII_GLOBAL_DATA
*GlobalData
;
75 EFI_HII_HANDLE_DATABASE
*DatabaseHead
; // Head of the Null-terminated singly-linked list of handles.
80 EFI_HII_HANDLE Handle
;
82 EFI_HII_HANDLE_PACK HandlePack
;
85 EFI_HII_IFR_PACK
*IfrData
; // All the IFR data stored here
86 EFI_HII_STRING_PACK
*StringData
; // All the String data stored at &IfrData + IfrSize (StringData is just a label - never referenced)
87 } EFI_HII_PACKAGE_INSTANCE
;
90 EFI_HII_PACK_HEADER Header
;
91 EFI_IFR_FORM_SET FormSet
;
92 EFI_IFR_END_FORM_SET EndFormSet
;
95 #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE)
97 #define NARROW_WIDTH 8
100 extern UINT8 mUnknownGlyph
[38];
109 OUT UINT32
*NumberOfTokens
115 IN EFI_HII_PROTOCOL
*This
,
116 IN EFI_HII_PACKAGE_INSTANCE
*PackageInstance
,
117 OUT EFI_HII_PACKAGE_INSTANCE
**StringPackageInstance
,
118 OUT UINT32
*TotalStringCount
123 // Public Interface Prototypes
127 InitializeHiiDatabase (
128 IN EFI_HANDLE ImageHandle
,
129 IN EFI_SYSTEM_TABLE
*SystemTable
136 IN EFI_HII_PROTOCOL
*This
,
137 IN EFI_HII_PACKAGES
*PackageList
,
138 OUT EFI_HII_HANDLE
*Handle
145 IN EFI_HII_PROTOCOL
*This
,
146 IN EFI_HII_HANDLE Handle
153 IN EFI_HII_PROTOCOL
*This
,
154 IN OUT UINT16
*HandleBufferLength
,
155 OUT EFI_HII_HANDLE
*Handle
162 IN EFI_HII_PROTOCOL
*This
,
163 IN EFI_HII_HANDLE Handle
,
164 IN OUT UINTN
*BufferSize
,
172 IN EFI_HII_PROTOCOL
*This
,
174 IN OUT UINT16
*Index
,
175 OUT UINT8
**GlyphBuffer
,
176 OUT UINT16
*BitWidth
,
177 IN OUT UINT32
*InternalStatus
184 IN EFI_HII_PROTOCOL
*This
,
185 IN UINT8
*GlyphBuffer
,
186 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground
,
187 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background
,
191 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL
*BltBuffer
198 IN EFI_HII_PROTOCOL
*This
,
200 IN EFI_HII_HANDLE Handle
,
201 IN OUT STRING_REF
*Reference
,
209 IN EFI_HII_PROTOCOL
*This
,
210 IN EFI_HII_HANDLE Handle
,
213 IN CHAR16
*LanguageString
,
214 IN OUT UINTN
*BufferLength
,
215 OUT EFI_STRING StringBuffer
222 IN EFI_HII_PROTOCOL
*This
,
223 IN EFI_HII_HANDLE Handle
230 IN EFI_HII_PROTOCOL
*This
,
231 IN CHAR16
*StringToTest
,
232 IN OUT UINT32
*FirstMissing
,
233 OUT UINT32
*GlyphBufferSize
239 HiiGetPrimaryLanguages (
240 IN EFI_HII_PROTOCOL
*This
,
241 IN EFI_HII_HANDLE Handle
,
242 OUT EFI_STRING
*LanguageString
248 HiiGetSecondaryLanguages (
249 IN EFI_HII_PROTOCOL
*This
,
250 IN EFI_HII_HANDLE Handle
,
251 IN CHAR16
*PrimaryLanguage
,
252 OUT EFI_STRING
*LanguageString
259 IN EFI_HII_PROTOCOL
*This
,
260 IN EFI_HII_HANDLE Handle
,
262 IN OUT UINT16
*Index
,
264 IN CHAR16
*LanguageString
,
265 IN OUT UINT16
*BufferLength
,
266 OUT EFI_STRING StringBuffer
273 IN EFI_HII_PROTOCOL
*This
,
274 IN EFI_HII_HANDLE Handle
,
275 IN EFI_FORM_ID FormId
,
276 IN OUT UINTN
*BufferLength
,
284 IN EFI_HII_PROTOCOL
*This
,
285 IN EFI_HII_HANDLE Handle
,
286 IN UINTN DefaultMask
,
287 OUT EFI_HII_VARIABLE_PACK_LIST
**VariablePackList
294 IN EFI_HII_PROTOCOL
*This
,
295 IN EFI_HII_HANDLE Handle
,
296 IN EFI_FORM_LABEL Label
,
298 IN EFI_HII_UPDATE_DATA
*Data
304 HiiGetKeyboardLayout (
305 IN EFI_HII_PROTOCOL
*This
,
306 OUT UINT16
*DescriptorCount
,
307 OUT EFI_KEY_DESCRIPTOR
*Descriptor
313 IN CHAR16
*LanguageStringLocation
,