]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Universal/HiiDataBaseDxe/HiiDatabase.h
Correct all header files for doxygen format and correct the license issue for VgaClas...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / HiiDataBaseDxe / HiiDatabase.h
1 /**@file
2
3 This file contains global defines and prototype definitions
4 for the HII database.
5
6 Copyright (c) 2006, 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 <PiDxe.h>
22
23 #include <Guid/GlobalVariable.h>
24 #include <Protocol/FormCallbackFramework.h>
25 #include <Protocol/HiiFramework.h>
26
27 #include <Library/BaseLib.h>
28 #include <Library/DebugLib.h>
29 #include <Library/UefiDriverEntryPoint.h>
30 #include <Library/MemoryAllocationLib.h>
31 #include <Library/BaseMemoryLib.h>
32 #include <Library/UefiBootServicesTableLib.h>
33 #include <Library/UefiRuntimeServicesTableLib.h>
34 #include <Library/IfrSupportLibFramework.h>
35
36 //
37 // HII Database Global data
38 //
39 #define EFI_HII_DATA_SIGNATURE EFI_SIGNATURE_32 ('H', 'i', 'i', 'P')
40
41 #define MAX_GLYPH_COUNT 65535
42 #define NARROW_GLYPH_ARRAY_SIZE 19
43 #define WIDE_GLYPH_ARRAY_SIZE 38
44
45 #define SETUP_MAP_NAME L"Setup"
46 #define HII_VARIABLE_SUFFIX_USER_DATA L"UserSavedData"
47 #define HII_VARIABLE_SUFFIX_DEFAULT_OVERRIDE L"DefaultOverride"
48 #define HII_VARIABLE_SUFFIX_MANUFACTURING_OVERRIDE L"ManufacturingOverride"
49
50 typedef struct _EFI_HII_HANDLE_DATABASE {
51 VOID *Buffer; // Actual buffer pointer
52 EFI_HII_HANDLE Handle; // Monotonically increasing value to signify the value returned to caller
53 UINT32 NumberOfTokens; // The initial number of tokens when first registered
54 struct _EFI_HII_HANDLE_DATABASE *NextHandleDatabase;
55 } EFI_HII_HANDLE_DATABASE;
56
57 typedef struct {
58 EFI_NARROW_GLYPH NarrowGlyphs[MAX_GLYPH_COUNT];
59 EFI_WIDE_GLYPH WideGlyphs[MAX_GLYPH_COUNT];
60 EFI_KEY_DESCRIPTOR SystemKeyboardLayout[106];
61 EFI_KEY_DESCRIPTOR OverrideKeyboardLayout[106];
62 BOOLEAN SystemKeyboardUpdate; // Has the SystemKeyboard been updated?
63 } EFI_HII_GLOBAL_DATA;
64
65 typedef struct {
66 UINTN Signature;
67
68 EFI_HII_GLOBAL_DATA *GlobalData;
69 EFI_HII_HANDLE_DATABASE *DatabaseHead; // Head of the Null-terminated singly-linked list of handles.
70 EFI_HII_PROTOCOL Hii;
71 } EFI_HII_DATA;
72
73 typedef struct {
74 EFI_HII_HANDLE Handle;
75 EFI_GUID Guid;
76 EFI_HII_HANDLE_PACK HandlePack;
77 UINTN IfrSize;
78 UINTN StringSize;
79 EFI_HII_IFR_PACK *IfrData; // All the IFR data stored here
80 EFI_HII_STRING_PACK *StringData; // All the String data stored at &IfrData + IfrSize (StringData is just a label - never referenced)
81 } EFI_HII_PACKAGE_INSTANCE;
82
83 typedef struct {
84 EFI_HII_PACK_HEADER Header;
85 EFI_IFR_FORM_SET FormSet;
86 EFI_IFR_END_FORM_SET EndFormSet;
87 } EFI_FORM_SET_STUB;
88
89 #define EFI_HII_DATA_FROM_THIS(a) CR (a, EFI_HII_DATA, Hii, EFI_HII_DATA_SIGNATURE)
90
91 #define NARROW_WIDTH 8
92 #define WIDE_WIDTH 16
93
94 extern UINT8 mUnknownGlyph[38];
95
96 //
97 // Prototypes
98 //
99 EFI_STATUS
100 GetPackSize (
101 IN VOID *Pack,
102 OUT UINTN *PackSize,
103 OUT UINT32 *NumberOfTokens
104 )
105 ;
106
107 EFI_STATUS
108 ValidatePack (
109 IN EFI_HII_PROTOCOL *This,
110 IN EFI_HII_PACKAGE_INSTANCE *PackageInstance,
111 OUT EFI_HII_PACKAGE_INSTANCE **StringPackageInstance,
112 OUT UINT32 *TotalStringCount
113 )
114 ;
115
116 //
117 // Public Interface Prototypes
118 //
119 EFI_STATUS
120 EFIAPI
121 InitializeHiiDatabase (
122 IN EFI_HANDLE ImageHandle,
123 IN EFI_SYSTEM_TABLE *SystemTable
124 )
125 ;
126
127 EFI_STATUS
128 EFIAPI
129 HiiNewPack (
130 IN EFI_HII_PROTOCOL *This,
131 IN EFI_HII_PACKAGES *PackageList,
132 OUT EFI_HII_HANDLE *Handle
133 )
134 ;
135
136 EFI_STATUS
137 EFIAPI
138 HiiRemovePack (
139 IN EFI_HII_PROTOCOL *This,
140 IN EFI_HII_HANDLE Handle
141 )
142 ;
143
144 EFI_STATUS
145 EFIAPI
146 HiiFindHandles (
147 IN EFI_HII_PROTOCOL *This,
148 IN OUT UINT16 *HandleBufferLength,
149 OUT EFI_HII_HANDLE *Handle
150 )
151 ;
152
153 EFI_STATUS
154 EFIAPI
155 HiiExportDatabase (
156 IN EFI_HII_PROTOCOL *This,
157 IN EFI_HII_HANDLE Handle,
158 IN OUT UINTN *BufferSize,
159 OUT VOID *Buffer
160 )
161 ;
162
163 EFI_STATUS
164 EFIAPI
165 HiiGetGlyph (
166 IN EFI_HII_PROTOCOL *This,
167 IN CHAR16 *Source,
168 IN OUT UINT16 *Index,
169 OUT UINT8 **GlyphBuffer,
170 OUT UINT16 *BitWidth,
171 IN OUT UINT32 *InternalStatus
172 )
173 ;
174
175 EFI_STATUS
176 EFIAPI
177 HiiGlyphToBlt (
178 IN EFI_HII_PROTOCOL *This,
179 IN UINT8 *GlyphBuffer,
180 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,
181 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,
182 IN UINTN Count,
183 IN UINTN Width,
184 IN UINTN Height,
185 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer
186 )
187 ;
188
189 EFI_STATUS
190 EFIAPI
191 HiiNewString (
192 IN EFI_HII_PROTOCOL *This,
193 IN CHAR16 *Language,
194 IN EFI_HII_HANDLE Handle,
195 IN OUT STRING_REF *Reference,
196 IN CHAR16 *NewString
197 )
198 ;
199
200 EFI_STATUS
201 EFIAPI
202 HiiGetString (
203 IN EFI_HII_PROTOCOL *This,
204 IN EFI_HII_HANDLE Handle,
205 IN STRING_REF Token,
206 IN BOOLEAN Raw,
207 IN CHAR16 *LanguageString,
208 IN OUT UINTN *BufferLength,
209 OUT EFI_STRING StringBuffer
210 )
211 ;
212
213 EFI_STATUS
214 EFIAPI
215 HiiResetStrings (
216 IN EFI_HII_PROTOCOL *This,
217 IN EFI_HII_HANDLE Handle
218 )
219 ;
220
221 EFI_STATUS
222 EFIAPI
223 HiiTestString (
224 IN EFI_HII_PROTOCOL *This,
225 IN CHAR16 *StringToTest,
226 IN OUT UINT32 *FirstMissing,
227 OUT UINT32 *GlyphBufferSize
228 )
229 ;
230
231 EFI_STATUS
232 EFIAPI
233 HiiGetPrimaryLanguages (
234 IN EFI_HII_PROTOCOL *This,
235 IN EFI_HII_HANDLE Handle,
236 OUT EFI_STRING *LanguageString
237 )
238 ;
239
240 EFI_STATUS
241 EFIAPI
242 HiiGetSecondaryLanguages (
243 IN EFI_HII_PROTOCOL *This,
244 IN EFI_HII_HANDLE Handle,
245 IN CHAR16 *PrimaryLanguage,
246 OUT EFI_STRING *LanguageString
247 )
248 ;
249
250 EFI_STATUS
251 EFIAPI
252 HiiGetLine (
253 IN EFI_HII_PROTOCOL *This,
254 IN EFI_HII_HANDLE Handle,
255 IN STRING_REF Token,
256 IN OUT UINT16 *Index,
257 IN UINT16 LineWidth,
258 IN CHAR16 *LanguageString,
259 IN OUT UINT16 *BufferLength,
260 OUT EFI_STRING StringBuffer
261 )
262 ;
263
264 EFI_STATUS
265 EFIAPI
266 HiiGetForms (
267 IN EFI_HII_PROTOCOL *This,
268 IN EFI_HII_HANDLE Handle,
269 IN EFI_FORM_ID FormId,
270 IN OUT UINTN *BufferLength,
271 OUT UINT8 *Buffer
272 )
273 ;
274
275 EFI_STATUS
276 EFIAPI
277 HiiGetDefaultImage (
278 IN EFI_HII_PROTOCOL *This,
279 IN EFI_HII_HANDLE Handle,
280 IN UINTN DefaultMask,
281 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList
282 )
283 ;
284
285 EFI_STATUS
286 EFIAPI
287 HiiUpdateForm (
288 IN EFI_HII_PROTOCOL *This,
289 IN EFI_HII_HANDLE Handle,
290 IN EFI_FORM_LABEL Label,
291 IN BOOLEAN AddData,
292 IN EFI_HII_UPDATE_DATA *Data
293 )
294 ;
295
296 EFI_STATUS
297 EFIAPI
298 HiiGetKeyboardLayout (
299 IN EFI_HII_PROTOCOL *This,
300 OUT UINT16 *DescriptorCount,
301 OUT EFI_KEY_DESCRIPTOR *Descriptor
302 )
303 ;
304
305 EFI_STATUS
306 HiiCompareLanguage (
307 IN CHAR16 *LanguageStringLocation,
308 IN CHAR16 *Language
309 )
310 ;
311
312 #endif