]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c
Update the copyright notice format
[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
e5eed7d3
HT
5Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.<BR>\r
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
75 {\r
76 (LIST_ENTRY *) NULL,\r
77 (LIST_ENTRY *) NULL\r
78 },\r
79 0,\r
80 {\r
81 (LIST_ENTRY *) NULL,\r
82 (LIST_ENTRY *) NULL\r
83 },\r
84 EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),\r
85 {\r
86 0x00000000,\r
87 0x0000,\r
88 0x0000,\r
7fd21395 89 {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}\r
93e3992d 90 },\r
91 NULL\r
92};\r
93\r
e94358a3 94GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_HII_IMAGE_PROTOCOL mImageProtocol = {\r
95 HiiNewImage,\r
96 HiiGetImage,\r
97 HiiSetImage,\r
98 HiiDrawImage,\r
99 HiiDrawImageId\r
100};\r
101\r
e90b081a 102/**\r
103 The default event handler for gHiiKeyboardLayoutChanged\r
104 event group.\r
105\r
106 This is internal function.\r
107\r
108 @param Event The event that triggered this notification function.\r
109 @param Context Pointer to the notification functions context.\r
110\r
111**/\r
813acf3a 112VOID\r
113EFIAPI\r
114KeyboardLayoutChangeNullEvent (\r
115 IN EFI_EVENT Event,\r
116 IN VOID *Context\r
117 )\r
118{\r
119 return;\r
120}\r
121\r
e90b081a 122/**\r
123 Initialize HII Database.\r
124\r
125\r
126 @param ImageHandle The image handle.\r
127 @param SystemTable The system table.\r
128\r
129 @retval EFI_SUCCESS The Hii database is setup correctly.\r
130 @return Other value if failed to create the default event for\r
131 gHiiKeyboardLayoutChanged. Check gBS->CreateEventEx for\r
132 details. Or failed to insatll the protocols.\r
133 Check gBS->InstallMultipleProtocolInterfaces for details.\r
134\r
135**/\r
93e3992d 136EFI_STATUS\r
137EFIAPI\r
138InitializeHiiDatabase (\r
139 IN EFI_HANDLE ImageHandle,\r
140 IN EFI_SYSTEM_TABLE *SystemTable\r
141 )\r
93e3992d 142{\r
143 EFI_STATUS Status;\r
144 EFI_HANDLE Handle;\r
93e3992d 145\r
93e3992d 146 //\r
147 // There will be only one HII Database in the system\r
148 // If there is another out there, someone is trying to install us\r
149 // again. Fail that scenario.\r
150 //\r
e90b081a 151 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiDatabaseProtocolGuid);\r
152 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiFontProtocolGuid);\r
153 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiImageProtocolGuid);\r
154 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiStringProtocolGuid);\r
155 ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiHiiConfigRoutingProtocolGuid);\r
156 \r
93e3992d 157 InitializeListHead (&mPrivate.DatabaseList);\r
158 InitializeListHead (&mPrivate.DatabaseNotifyList);\r
159 InitializeListHead (&mPrivate.HiiHandleList);\r
160 InitializeListHead (&mPrivate.FontInfoList);\r
161\r
162 //\r
163 // Create a event with EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID group type.\r
164 //\r
165 Status = gBS->CreateEventEx (\r
e53a6ea9 166 EVT_NOTIFY_SIGNAL,\r
813acf3a 167 TPL_NOTIFY,\r
168 KeyboardLayoutChangeNullEvent,\r
93e3992d 169 NULL,\r
ea021002 170 &gEfiHiiKeyBoardLayoutGuid,\r
93e3992d 171 &gHiiKeyboardLayoutChanged\r
172 );\r
173 if (EFI_ERROR (Status)) {\r
174 return Status;\r
175 }\r
176\r
177 Handle = NULL;\r
e94358a3 178 Status = gBS->InstallMultipleProtocolInterfaces (\r
179 &Handle,\r
180 &gEfiHiiFontProtocolGuid,\r
181 &mPrivate.HiiFont,\r
182 &gEfiHiiStringProtocolGuid,\r
183 &mPrivate.HiiString,\r
184 &gEfiHiiDatabaseProtocolGuid,\r
185 &mPrivate.HiiDatabase,\r
186 &gEfiHiiConfigRoutingProtocolGuid,\r
187 &mPrivate.ConfigRouting,\r
188 NULL\r
189 );\r
190\r
191 if (EFI_ERROR (Status)) {\r
192 return Status;\r
193 }\r
194\r
195 if (FeaturePcdGet (PcdSupportHiiImageProtocol)) {\r
196 CopyMem (&mPrivate.HiiImage, &mImageProtocol, sizeof (mImageProtocol));\r
197\r
198 Status = gBS->InstallMultipleProtocolInterfaces (\r
199 &Handle,\r
200 &gEfiHiiImageProtocolGuid,\r
201 &mPrivate.HiiImage,\r
202 NULL\r
203 );\r
204\r
205 }\r
206\r
207 return Status;\r
93e3992d 208}\r
209\r