]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/HiiDatabase.c
Add doxygen style comments for functions in DxeIpl.
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / HiiDatabase.c
CommitLineData
4259256b 1/**@file\r
ee3428bb 2Framework to UEFI 2.1 HII Thunk. The driver consume UEFI HII protocols\r
3to produce a Framework HII protocol.\r
4259256b 4\r
ee3428bb 5Copyright (c) 2008, Intel Corporation\r
4259256b 6All rights reserved. This program and the accompanying materials\r
7are licensed and made available under the terms and conditions of the BSD License\r
8which accompanies this distribution. The full text of the license may be found at\r
9http://opensource.org/licenses/bsd-license.php\r
10\r
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#include "HiiDatabase.h"\r
17\r
18\r
19EFI_HII_THUNK_PRIVATE_DATA HiiThunkPrivateDataTempate = {\r
20 {//Signature\r
21 EFI_HII_THUNK_DRIVER_DATA_SIGNATURE \r
22 },\r
23 {//Handle\r
24 (EFI_HANDLE) NULL\r
25 },\r
26 { //Hii\r
27 HiiNewPack,\r
28 HiiRemovePack,\r
29 HiiFindHandles,\r
30 HiiExportDatabase,\r
31 \r
32 HiiTestString,\r
33 HiiGetGlyph,\r
34 HiiGlyphToBlt,\r
35 \r
36 HiiNewString,\r
37 HiiGetPrimaryLanguages,\r
38 HiiGetSecondaryLanguages,\r
39 HiiGetString,\r
40 HiiResetStrings,\r
41 HiiGetLine,\r
42 HiiGetForms,\r
43 HiiGetDefaultImage,\r
44 HiiUpdateForm,\r
45 \r
46 HiiGetKeyboardLayout\r
47 },\r
48 { //StaticHiiHandle\r
49 //The FRAMEWORK_EFI_HII_HANDLE starts from 1 \r
50 // and increase upwords untill reach 2^(sizeof (FRAMEWORK_EFI_HII_HANDLE)) - 1. \r
51 // The code will assert to prevent overflow.\r
52 (FRAMEWORK_EFI_HII_HANDLE) 1 \r
53 },\r
54 {\r
55 NULL, NULL //HiiHandleLinkList\r
56 },\r
57};\r
58\r
59336178 59CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
60CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;\r
61CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
62CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
63CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
ebbd2793 64\r
4259256b 65\r
66EFI_STATUS\r
67EFIAPI\r
68InitializeHiiDatabase (\r
69 IN EFI_HANDLE ImageHandle,\r
70 IN EFI_SYSTEM_TABLE *SystemTable\r
71 )\r
72/*++\r
73\r
74Routine Description:\r
75 Initialize HII Database\r
76\r
77Arguments:\r
78 (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)\r
79\r
80Returns:\r
81 EFI_SUCCESS - Setup loaded.\r
82 other - Setup Error\r
83\r
84--*/\r
85{\r
86 EFI_HII_THUNK_PRIVATE_DATA *HiiData;\r
87 EFI_HANDLE Handle;\r
88 EFI_STATUS Status;\r
89\r
90 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiProtocolGuid);\r
91\r
92 HiiData = AllocateCopyPool (sizeof (EFI_HII_THUNK_PRIVATE_DATA), &HiiThunkPrivateDataTempate);\r
93 ASSERT (HiiData != NULL);\r
94 InitializeListHead (&HiiData->HiiThunkHandleMappingDBListHead);\r
95\r
96 Status = gBS->LocateProtocol (\r
97 &gEfiHiiDatabaseProtocolGuid,\r
98 NULL,\r
59336178 99 (VOID **) &mHiiDatabase\r
4259256b 100 );\r
101 ASSERT_EFI_ERROR (Status);\r
102\r
103 Status = gBS->LocateProtocol (\r
104 &gEfiHiiFontProtocolGuid,\r
105 NULL,\r
59336178 106 (VOID **) &mHiiFontProtocol\r
4259256b 107 );\r
108 ASSERT_EFI_ERROR (Status);\r
109\r
110 Status = gBS->LocateProtocol (\r
111 &gEfiHiiImageProtocolGuid,\r
112 NULL,\r
59336178 113 (VOID **) &mHiiImageProtocol\r
4259256b 114 );\r
115 ASSERT_EFI_ERROR (Status);\r
116\r
117 Status = gBS->LocateProtocol (\r
118 &gEfiHiiStringProtocolGuid,\r
119 NULL,\r
59336178 120 (VOID **) &mHiiStringProtocol\r
4259256b 121 );\r
122 ASSERT_EFI_ERROR (Status);\r
123\r
ebbd2793 124 Status = gBS->LocateProtocol (\r
125 &gEfiHiiConfigRoutingProtocolGuid,\r
126 NULL,\r
59336178 127 (VOID **) &mHiiConfigRoutingProtocol\r
ebbd2793 128 );\r
129 ASSERT_EFI_ERROR (Status);\r
130\r
4259256b 131 //\r
132 // Install protocol interface\r
133 //\r
134 Handle = NULL;\r
135 Status = gBS->InstallProtocolInterface (\r
136 &HiiData->Handle,\r
137 &gEfiHiiProtocolGuid,\r
138 EFI_NATIVE_INTERFACE,\r
139 (VOID *) &HiiData->Hii\r
140 );\r
141 ASSERT_EFI_ERROR (Status);\r
142\r
143 return Status;\r
144}\r
145\r
146EFI_STATUS\r
147EFIAPI\r
148HiiFindHandles (\r
149 IN EFI_HII_PROTOCOL *This,\r
150 IN OUT UINT16 *HandleBufferLength,\r
151 OUT FRAMEWORK_EFI_HII_HANDLE Handle[1]\r
152 )\r
153/*++\r
154\r
155Routine Description:\r
156 Determines the handles that are currently active in the database.\r
157\r
158Arguments:\r
159\r
160Returns:\r
161\r
162--*/\r
163{\r
164 ASSERT (FALSE);\r
165 return EFI_SUCCESS;\r
166}\r
167\r
168EFI_STATUS\r
169EFIAPI\r
170HiiGetPrimaryLanguages (\r
171 IN EFI_HII_PROTOCOL *This,\r
172 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
173 OUT EFI_STRING *LanguageString\r
174 )\r
175/*++\r
176\r
177Routine Description:\r
178\r
179 This function allows a program to determine what the primary languages that are supported on a given handle.\r
180\r
181Arguments:\r
182\r
183Returns:\r
184\r
185--*/\r
186{\r
ee3428bb 187 EFI_HII_THUNK_PRIVATE_DATA *Private;\r
188 EFI_HII_HANDLE UefiHiiHandle;\r
189 CHAR8 *AsciiLanguageCodes;\r
190 CHAR16 *UnicodeLanguageCodes;\r
191\r
192 Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This);\r
193\r
194 \r
195 \r
196 UefiHiiHandle = FrameworkHiiHandleToUefiHiiHandle (Private, Handle);\r
197 if (UefiHiiHandle == NULL) {\r
198 return EFI_INVALID_PARAMETER;\r
199 }\r
200\r
201 AsciiLanguageCodes = HiiLibGetSupportedLanguages (UefiHiiHandle);\r
202\r
203 if (AsciiLanguageCodes == NULL) {\r
204 return EFI_INVALID_PARAMETER;\r
205 }\r
206\r
207 UnicodeLanguageCodes = AllocateZeroPool (AsciiStrSize (AsciiLanguageCodes) * sizeof (CHAR16));\r
208 if (UnicodeLanguageCodes == NULL) {\r
209 return EFI_OUT_OF_RESOURCES;\r
210 }\r
211\r
212 //\r
213 // The language returned is in RFC 3066 format.\r
214 //\r
215 *LanguageString = AsciiStrToUnicodeStr (AsciiLanguageCodes, UnicodeLanguageCodes);\r
216\r
4259256b 217 return EFI_SUCCESS;\r
218}\r
219\r
220EFI_STATUS\r
221EFIAPI\r
222HiiGetSecondaryLanguages (\r
223 IN EFI_HII_PROTOCOL *This,\r
224 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
225 IN CHAR16 *PrimaryLanguage,\r
226 OUT EFI_STRING *LanguageString\r
227 )\r
228/*++\r
229\r
230Routine Description:\r
231\r
232 This function allows a program to determine which secondary languages are supported\r
233 on a given handle for a given primary language.\r
234\r
235 Arguments:\r
236\r
237Returns:\r
238\r
239--*/\r
240{\r
ee3428bb 241 EFI_HII_THUNK_PRIVATE_DATA *Private;\r
242 EFI_HII_HANDLE UefiHiiHandle;\r
243 CHAR8 *AsciiPrimaryLanguage;\r
244 CHAR8 *AsciiLanguageCodes;\r
245 CHAR16 *UnicodeLanguageCodes;\r
246\r
247 Private = EFI_HII_THUNK_PRIVATE_DATA_FROM_THIS(This);\r
248\r
249 \r
250 \r
251 UefiHiiHandle = FrameworkHiiHandleToUefiHiiHandle (Private, Handle);\r
252 if (UefiHiiHandle == NULL) {\r
253 return EFI_INVALID_PARAMETER;\r
254 }\r
255\r
256 AsciiPrimaryLanguage = AllocateZeroPool (StrLen (PrimaryLanguage) + 1);\r
257\r
258 UnicodeStrToAsciiStr (PrimaryLanguage, AsciiPrimaryLanguage);\r
259\r
260 AsciiLanguageCodes = HiiLibGetSupportedSecondaryLanguages (UefiHiiHandle, AsciiPrimaryLanguage);\r
261\r
262 if (AsciiLanguageCodes == NULL) {\r
263 return EFI_INVALID_PARAMETER;\r
264 }\r
265\r
266 UnicodeLanguageCodes = AllocateZeroPool (AsciiStrSize (AsciiLanguageCodes) * sizeof (CHAR16));\r
267 if (UnicodeLanguageCodes == NULL) {\r
268 return EFI_OUT_OF_RESOURCES;\r
269 }\r
270\r
271 //\r
272 // The language returned is in RFC 3066 format.\r
273 //\r
274 *LanguageString = AsciiStrToUnicodeStr (AsciiLanguageCodes, UnicodeLanguageCodes);\r
275\r
4259256b 276 return EFI_SUCCESS;\r
277}\r
278\r
279\r