]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c
MdeModulePkg/DisplayEngineDxe: Refine the coding style
[mirror_edk2.git] / MdeModulePkg / Universal / HiiDatabaseDxe / HiiDatabaseEntry.c
CommitLineData
93e3992d 1/** @file\r
3cb3f198 2This file contains the entry code to the HII database, which is defined by\r
3UEFI 2.1 specification.\r
93e3992d 4\r
87bfeb11 5Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>\r
e5eed7d3 6This program and the accompanying materials\r
93e3992d 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
93e3992d 14**/\r
15\r
16\r
17#include "HiiDatabase.h"\r
18\r
19//\r
20// Global variables\r
21//\r
22EFI_EVENT gHiiKeyboardLayoutChanged;\r
93e3992d 23\r
fe1e36e5 24HII_DATABASE_PRIVATE_DATA mPrivate = {\r
93e3992d 25 HII_DATABASE_PRIVATE_DATA_SIGNATURE,\r
26 {\r
27 (LIST_ENTRY *) NULL,\r
28 (LIST_ENTRY *) NULL\r
29 },\r
30 {\r
31 (LIST_ENTRY *) NULL,\r
32 (LIST_ENTRY *) NULL\r
33 },\r
34 {\r
35 HiiStringToImage,\r
36 HiiStringIdToImage,\r
37 HiiGetGlyph,\r
38 HiiGetFontInfo\r
39 },\r
93e3992d 40 {\r
e94358a3 41 NULL,\r
42 NULL,\r
43 NULL,\r
44 NULL,\r
45 NULL\r
93e3992d 46 },\r
93e3992d 47 {\r
48 HiiNewString,\r
49 HiiGetString,\r
50 HiiSetString,\r
51 HiiGetLanguages,\r
52 HiiGetSecondaryLanguages\r
53 },\r
54 {\r
55 HiiNewPackageList,\r
56 HiiRemovePackageList,\r
57 HiiUpdatePackageList,\r
58 HiiListPackageLists,\r
59 HiiExportPackageLists,\r
60 HiiRegisterPackageNotify,\r
61 HiiUnregisterPackageNotify,\r
62 HiiFindKeyboardLayouts,\r
63 HiiGetKeyboardLayout,\r
64 HiiSetKeyboardLayout,\r
65 HiiGetPackageListHandle\r
66 },\r
67 {\r
68 HiiConfigRoutingExtractConfig,\r
69 HiiConfigRoutingExportConfig,\r
813acf3a 70 HiiConfigRoutingRouteConfig,\r
93e3992d 71 HiiBlockToConfig,\r
72 HiiConfigToBlock,\r
73 HiiGetAltCfg\r
74 },\r
87bfeb11
ED
75 {\r
76 EfiConfigKeywordHandlerSetData,\r
77 EfiConfigKeywordHandlerGetData\r
78 },\r
93e3992d 79 {\r
80 (LIST_ENTRY *) NULL,\r
81 (LIST_ENTRY *) NULL\r
82 },\r
83 0,\r
84 {\r
85 (LIST_ENTRY *) NULL,\r
86 (LIST_ENTRY *) NULL\r
87 },\r
88 EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),\r
89 {\r
90 0x00000000,\r
91 0x0000,\r
92 0x0000,\r
7fd21395 93 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}\r
93e3992d 94 },\r
95 NULL\r
96};\r
97\r
e94358a3 98GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_HII_IMAGE_PROTOCOL mImageProtocol = {\r
99 HiiNewImage,\r
100 HiiGetImage,\r
101 HiiSetImage,\r
102 HiiDrawImage,\r
103 HiiDrawImageId\r
104};\r
105\r
e90b081a 106/**\r
107 The default event handler for gHiiKeyboardLayoutChanged\r
108 event group.\r
109\r
110 This is internal function.\r
111\r
112 @param Event The event that triggered this notification function.\r
113 @param Context Pointer to the notification functions context.\r
114\r
115**/\r
813acf3a 116VOID\r
117EFIAPI\r
118KeyboardLayoutChangeNullEvent (\r
119 IN EFI_EVENT Event,\r
120 IN VOID *Context\r
121 )\r
122{\r
123 return;\r
124}\r
125\r
e90b081a 126/**\r
127 Initialize HII Database.\r
128\r
129\r
130 @param ImageHandle The image handle.\r
131 @param SystemTable The system table.\r
132\r
133 @retval EFI_SUCCESS The Hii database is setup correctly.\r
134 @return Other value if failed to create the default event for\r
135 gHiiKeyboardLayoutChanged. Check gBS->CreateEventEx for\r
136 details. Or failed to insatll the protocols.\r
137 Check gBS->InstallMultipleProtocolInterfaces for details.\r
138\r
139**/\r
93e3992d 140EFI_STATUS\r
141EFIAPI\r
142InitializeHiiDatabase (\r
143 IN EFI_HANDLE ImageHandle,\r
144 IN EFI_SYSTEM_TABLE *SystemTable\r
145 )\r
93e3992d 146{\r
147 EFI_STATUS Status;\r
148 EFI_HANDLE Handle;\r
93e3992d 149\r
93e3992d 150 //\r
151 // There will be only one HII Database in the system\r
152 // If there is another out there, someone is trying to install us\r
153 // again. Fail that scenario.\r
154 //\r
e90b081a 155 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiDatabaseProtocolGuid);\r
156 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiFontProtocolGuid);\r
157 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiImageProtocolGuid);\r
158 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiStringProtocolGuid);\r
159 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiConfigRoutingProtocolGuid);\r
87bfeb11 160 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiConfigKeywordHandlerProtocolGuid);\r
e90b081a 161 \r
93e3992d 162 InitializeListHead (&mPrivate.DatabaseList);\r
163 InitializeListHead (&mPrivate.DatabaseNotifyList);\r
164 InitializeListHead (&mPrivate.HiiHandleList);\r
165 InitializeListHead (&mPrivate.FontInfoList);\r
166\r
167 //\r
168 // Create a event with EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID group type.\r
169 //\r
170 Status = gBS->CreateEventEx (\r
e53a6ea9 171 EVT_NOTIFY_SIGNAL,\r
813acf3a 172 TPL_NOTIFY,\r
173 KeyboardLayoutChangeNullEvent,\r
93e3992d 174 NULL,\r
ea021002 175 &gEfiHiiKeyBoardLayoutGuid,\r
93e3992d 176 &gHiiKeyboardLayoutChanged\r
177 );\r
178 if (EFI_ERROR (Status)) {\r
179 return Status;\r
180 }\r
181\r
182 Handle = NULL;\r
e94358a3 183 Status = gBS->InstallMultipleProtocolInterfaces (\r
184 &Handle,\r
185 &gEfiHiiFontProtocolGuid,\r
186 &mPrivate.HiiFont,\r
187 &gEfiHiiStringProtocolGuid,\r
188 &mPrivate.HiiString,\r
189 &gEfiHiiDatabaseProtocolGuid,\r
190 &mPrivate.HiiDatabase,\r
191 &gEfiHiiConfigRoutingProtocolGuid,\r
192 &mPrivate.ConfigRouting,\r
87bfeb11
ED
193 &gEfiConfigKeywordHandlerProtocolGuid,\r
194 &mPrivate.ConfigKeywordHandler,\r
e94358a3 195 NULL\r
196 );\r
197\r
198 if (EFI_ERROR (Status)) {\r
199 return Status;\r
200 }\r
201\r
202 if (FeaturePcdGet (PcdSupportHiiImageProtocol)) {\r
203 CopyMem (&mPrivate.HiiImage, &mImageProtocol, sizeof (mImageProtocol));\r
204\r
205 Status = gBS->InstallMultipleProtocolInterfaces (\r
206 &Handle,\r
207 &gEfiHiiImageProtocolGuid,\r
208 &mPrivate.HiiImage,\r
209 NULL\r
210 );\r
211\r
212 }\r
213\r
214 return Status;\r
93e3992d 215}\r
216\r