]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseEntry.c
1) Add BufToHexString, HexStringToBuf and IsHexDigit to BaseLib.
[mirror_edk2.git] / MdeModulePkg / Universal / HiiDatabaseDxe / HiiDatabaseEntry.c
CommitLineData
93e3992d 1/** @file\r
2\r
3Copyright (c) 2007, Intel Corporation\r
4All rights reserved. This program and the accompanying materials\r
5are licensed and made available under the terms and conditions of the BSD License\r
6which accompanies this distribution. The full text of the license may be found at\r
7http://opensource.org/licenses/bsd-license.php\r
8\r
9THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
10WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
11\r
12Module Name:\r
13\r
14 HiiDatabaseEntry.c\r
15\r
16Abstract:\r
17\r
18 This file contains the entry code to the HII database, which is defined by\r
19 UEFI 2.1 specification.\r
20\r
21Revision History\r
22\r
23\r
24**/\r
25\r
26\r
27#include "HiiDatabase.h"\r
28\r
29//\r
30// Global variables\r
31//\r
32EFI_EVENT gHiiKeyboardLayoutChanged;\r
33STATIC EFI_GUID gHiiSetKbdLayoutEventGuid = EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID;\r
34\r
35STATIC HII_DATABASE_PRIVATE_DATA mPrivate = {\r
36 HII_DATABASE_PRIVATE_DATA_SIGNATURE,\r
37 {\r
38 (LIST_ENTRY *) NULL,\r
39 (LIST_ENTRY *) NULL\r
40 },\r
41 {\r
42 (LIST_ENTRY *) NULL,\r
43 (LIST_ENTRY *) NULL\r
44 },\r
45 {\r
46 HiiStringToImage,\r
47 HiiStringIdToImage,\r
48 HiiGetGlyph,\r
49 HiiGetFontInfo\r
50 },\r
51#ifndef DISABLE_UNUSED_HII_PROTOCOLS\r
52 {\r
53 HiiNewImage,\r
54 HiiGetImage,\r
55 HiiSetImage,\r
56 HiiDrawImage,\r
57 HiiDrawImageId\r
58 },\r
59#endif\r
60 {\r
61 HiiNewString,\r
62 HiiGetString,\r
63 HiiSetString,\r
64 HiiGetLanguages,\r
65 HiiGetSecondaryLanguages\r
66 },\r
67 {\r
68 HiiNewPackageList,\r
69 HiiRemovePackageList,\r
70 HiiUpdatePackageList,\r
71 HiiListPackageLists,\r
72 HiiExportPackageLists,\r
73 HiiRegisterPackageNotify,\r
74 HiiUnregisterPackageNotify,\r
75 HiiFindKeyboardLayouts,\r
76 HiiGetKeyboardLayout,\r
77 HiiSetKeyboardLayout,\r
78 HiiGetPackageListHandle\r
79 },\r
80 {\r
81 HiiConfigRoutingExtractConfig,\r
82 HiiConfigRoutingExportConfig,\r
83 HiiConfigRoutingRoutConfig,\r
84 HiiBlockToConfig,\r
85 HiiConfigToBlock,\r
86 HiiGetAltCfg\r
87 },\r
88 {\r
89 (LIST_ENTRY *) NULL,\r
90 (LIST_ENTRY *) NULL\r
91 },\r
92 0,\r
93 {\r
94 (LIST_ENTRY *) NULL,\r
95 (LIST_ENTRY *) NULL\r
96 },\r
97 EFI_TEXT_ATTR (EFI_LIGHTGRAY, EFI_BLACK),\r
98 {\r
99 0x00000000,\r
100 0x0000,\r
101 0x0000,\r
102 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\r
103 },\r
104 NULL\r
105};\r
106\r
93e3992d 107EFI_STATUS\r
108EFIAPI\r
109InitializeHiiDatabase (\r
110 IN EFI_HANDLE ImageHandle,\r
111 IN EFI_SYSTEM_TABLE *SystemTable\r
112 )\r
113/*++\r
114\r
115Routine Description:\r
116 Initialize HII Database\r
117\r
118Arguments:\r
119 (Standard EFI Image entry - EFI_IMAGE_ENTRY_POINT)\r
120\r
121Returns:\r
122 EFI_SUCCESS -\r
123 other -\r
124\r
125--*/\r
126{\r
127 EFI_STATUS Status;\r
128 EFI_HANDLE Handle;\r
129 EFI_HANDLE *HandleBuffer;\r
130 UINTN HandleCount;\r
131\r
93e3992d 132 //\r
133 // There will be only one HII Database in the system\r
134 // If there is another out there, someone is trying to install us\r
135 // again. Fail that scenario.\r
136 //\r
137 Status = gBS->LocateHandleBuffer (\r
138 ByProtocol,\r
139 &gEfiHiiDatabaseProtocolGuid,\r
140 NULL,\r
141 &HandleCount,\r
142 &HandleBuffer\r
143 );\r
144\r
145 //\r
146 // If there was no error, assume there is an installation and fail to load\r
147 //\r
148 if (!EFI_ERROR (Status)) {\r
149 if (HandleBuffer != NULL) {\r
150 gBS->FreePool (HandleBuffer);\r
151 }\r
152 return EFI_DEVICE_ERROR;\r
153 }\r
154\r
155 InitializeListHead (&mPrivate.DatabaseList);\r
156 InitializeListHead (&mPrivate.DatabaseNotifyList);\r
157 InitializeListHead (&mPrivate.HiiHandleList);\r
158 InitializeListHead (&mPrivate.FontInfoList);\r
159\r
160 //\r
161 // Create a event with EFI_HII_SET_KEYBOARD_LAYOUT_EVENT_GUID group type.\r
162 //\r
163 Status = gBS->CreateEventEx (\r
164 0,\r
165 0,\r
166 NULL,\r
167 NULL,\r
168 &gHiiSetKbdLayoutEventGuid,\r
169 &gHiiKeyboardLayoutChanged\r
170 );\r
171 if (EFI_ERROR (Status)) {\r
172 return Status;\r
173 }\r
174\r
175 Handle = NULL;\r
176 return gBS->InstallMultipleProtocolInterfaces (\r
177 &Handle,\r
178 &gEfiHiiFontProtocolGuid,\r
179 &mPrivate.HiiFont,\r
180#ifndef DISABLE_UNUSED_HII_PROTOCOLS\r
181 &gEfiHiiImageProtocolGuid,\r
182 &mPrivate.HiiImage,\r
183#endif\r
184 &gEfiHiiStringProtocolGuid,\r
185 &mPrivate.HiiString,\r
186 &gEfiHiiDatabaseProtocolGuid,\r
187 &mPrivate.HiiDatabase,\r
188 &gEfiHiiConfigRoutingProtocolGuid,\r
189 &mPrivate.ConfigRouting,\r
190 NULL\r
191 );\r
192}\r
193\r