]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Universal/HiiDataBaseDxe/HiiDatabase.h
b35dc17a74d589dd05932b88a8fe0863c814670b
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / HiiDataBaseDxe / HiiDatabase.h
1 /*++
2
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
8
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.
11
12 Module Name:
13
14 HiiDatabase.h
15
16 Abstract:
17
18 This file contains global defines and prototype definitions
19 for the HII database.
20
21 --*/
22
23 #ifndef _HIIDATABASE_H
24 #define _HIIDATABASE_H
25
26 //
27 // The package level header files this module uses
28 //
29 #include <PiDxe.h>
30 //
31 // The protocols, PPI and GUID defintions for this module
32 //
33 #include <Guid/GlobalVariable.h>
34 #include <Protocol/FormCallbackFramework.h>
35 #include <Protocol/HiiFramework.h>
36 //
37 // The Library classes this module consumes
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/IfrSupportLibFramework.h>
47
48 //
49 // HII Database Global data
50 //
51 #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P')
52
53 #define MAX_GLYPH_COUNT 65535
54 #define NARROW_GLYPH_ARRAY_SIZE 19
55 #define WIDE_GLYPH_ARRAY_SIZE 38
56
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"
61
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;
68
69 typedef struct {
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;
76
77 typedef struct {
78 UINTN Signature;
79
80 EFI_HII_GLOBAL_DATA *GlobalData;
81 EFI_HII_HANDLE_DATABASE *DatabaseHead; // Head of the Null-terminated singly-linked list of handles.
82 EFI_HII_PROTOCOL Hii;
83 } EFI_HII_DATA;
84
85 typedef struct {
86 EFI_HII_HANDLE Handle;
87 EFI_GUID Guid;
88 EFI_HII_HANDLE_PACK HandlePack;
89 UINTN IfrSize;
90 UINTN StringSize;
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;
94
95 typedef struct {
96 EFI_HII_PACK_HEADER Header;
97 EFI_IFR_FORM_SET FormSet;
98 EFI_IFR_END_FORM_SET EndFormSet;
99 } EFI_FORM_SET_STUB;
100
101 #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE)
102
103 #define NARROW_WIDTH 8
104 #define WIDE_WIDTH 16
105
106 extern UINT8 mUnknownGlyph[38];
107
108 //
109 // Prototypes
110 //
111 EFI_STATUS
112 GetPackSize (
113 IN VOID *Pack,
114 OUT UINTN *PackSize,
115 OUT UINT32 *NumberOfTokens
116 )
117 ;
118
119 EFI_STATUS
120 ValidatePack (
121 IN EFI_HII_PROTOCOL *This,
122 IN EFI_HII_PACKAGE_INSTANCE *PackageInstance,
123 OUT EFI_HII_PACKAGE_INSTANCE **StringPackageInstance,
124 OUT UINT32 *TotalStringCount
125 )
126 ;
127
128 //
129 // Public Interface Prototypes
130 //
131 EFI_STATUS
132 EFIAPI
133 InitializeHiiDatabase (
134 IN EFI_HANDLE ImageHandle,
135 IN EFI_SYSTEM_TABLE *SystemTable
136 )
137 ;
138
139 EFI_STATUS
140 EFIAPI
141 HiiNewPack (
142 IN EFI_HII_PROTOCOL *This,
143 IN EFI_HII_PACKAGES *PackageList,
144 OUT EFI_HII_HANDLE *Handle
145 )
146 ;
147
148 EFI_STATUS
149 EFIAPI
150 HiiRemovePack (
151 IN EFI_HII_PROTOCOL *This,
152 IN EFI_HII_HANDLE Handle
153 )
154 ;
155
156 EFI_STATUS
157 EFIAPI
158 HiiFindHandles (
159 IN EFI_HII_PROTOCOL *This,
160 IN OUT UINT16 *HandleBufferLength,
161 OUT EFI_HII_HANDLE *Handle
162 )
163 ;
164
165 EFI_STATUS
166 EFIAPI
167 HiiExportDatabase (
168 IN EFI_HII_PROTOCOL *This,
169 IN EFI_HII_HANDLE Handle,
170 IN OUT UINTN *BufferSize,
171 OUT VOID *Buffer
172 )
173 ;
174
175 EFI_STATUS
176 EFIAPI
177 HiiGetGlyph (
178 IN EFI_HII_PROTOCOL *This,
179 IN CHAR16 *Source,
180 IN OUT UINT16 *Index,
181 OUT UINT8 **GlyphBuffer,
182 OUT UINT16 *BitWidth,
183 IN OUT UINT32 *InternalStatus
184 )
185 ;
186
187 EFI_STATUS
188 EFIAPI
189 HiiGlyphToBlt (
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,
194 IN UINTN Count,
195 IN UINTN Width,
196 IN UINTN Height,
197 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer
198 )
199 ;
200
201 EFI_STATUS
202 EFIAPI
203 HiiNewString (
204 IN EFI_HII_PROTOCOL *This,
205 IN CHAR16 *Language,
206 IN EFI_HII_HANDLE Handle,
207 IN OUT STRING_REF *Reference,
208 IN CHAR16 *NewString
209 )
210 ;
211
212 EFI_STATUS
213 EFIAPI
214 HiiGetString (
215 IN EFI_HII_PROTOCOL *This,
216 IN EFI_HII_HANDLE Handle,
217 IN STRING_REF Token,
218 IN BOOLEAN Raw,
219 IN CHAR16 *LanguageString,
220 IN OUT UINTN *BufferLength,
221 OUT EFI_STRING StringBuffer
222 )
223 ;
224
225 EFI_STATUS
226 EFIAPI
227 HiiResetStrings (
228 IN EFI_HII_PROTOCOL *This,
229 IN EFI_HII_HANDLE Handle
230 )
231 ;
232
233 EFI_STATUS
234 EFIAPI
235 HiiTestString (
236 IN EFI_HII_PROTOCOL *This,
237 IN CHAR16 *StringToTest,
238 IN OUT UINT32 *FirstMissing,
239 OUT UINT32 *GlyphBufferSize
240 )
241 ;
242
243 EFI_STATUS
244 EFIAPI
245 HiiGetPrimaryLanguages (
246 IN EFI_HII_PROTOCOL *This,
247 IN EFI_HII_HANDLE Handle,
248 OUT EFI_STRING *LanguageString
249 )
250 ;
251
252 EFI_STATUS
253 EFIAPI
254 HiiGetSecondaryLanguages (
255 IN EFI_HII_PROTOCOL *This,
256 IN EFI_HII_HANDLE Handle,
257 IN CHAR16 *PrimaryLanguage,
258 OUT EFI_STRING *LanguageString
259 )
260 ;
261
262 EFI_STATUS
263 EFIAPI
264 HiiGetLine (
265 IN EFI_HII_PROTOCOL *This,
266 IN EFI_HII_HANDLE Handle,
267 IN STRING_REF Token,
268 IN OUT UINT16 *Index,
269 IN UINT16 LineWidth,
270 IN CHAR16 *LanguageString,
271 IN OUT UINT16 *BufferLength,
272 OUT EFI_STRING StringBuffer
273 )
274 ;
275
276 EFI_STATUS
277 EFIAPI
278 HiiGetForms (
279 IN EFI_HII_PROTOCOL *This,
280 IN EFI_HII_HANDLE Handle,
281 IN EFI_FORM_ID FormId,
282 IN OUT UINTN *BufferLength,
283 OUT UINT8 *Buffer
284 )
285 ;
286
287 EFI_STATUS
288 EFIAPI
289 HiiGetDefaultImage (
290 IN EFI_HII_PROTOCOL *This,
291 IN EFI_HII_HANDLE Handle,
292 IN UINTN DefaultMask,
293 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
294 )
295 ;
296
297 EFI_STATUS
298 EFIAPI
299 HiiUpdateForm (
300 IN EFI_HII_PROTOCOL *This,
301 IN EFI_HII_HANDLE Handle,
302 IN EFI_FORM_LABEL Label,
303 IN BOOLEAN AddData,
304 IN EFI_HII_UPDATE_DATA *Data
305 )
306 ;
307
308 EFI_STATUS
309 EFIAPI
310 HiiGetKeyboardLayout (
311 IN EFI_HII_PROTOCOL *This,
312 OUT UINT16 *DescriptorCount,
313 OUT EFI_KEY_DESCRIPTOR *Descriptor
314 )
315 ;
316
317 EFI_STATUS
318 HiiCompareLanguage (
319 IN CHAR16 *LanguageStringLocation,
320 IN CHAR16 *Language
321 )
322 ;
323
324 #endif