]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Compatibility/FrameworkHiiOnUefiHiiThunk/HiiDatabase.h
Replace references to RFC 3066 with RFC 4646.
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiOnUefiHiiThunk / HiiDatabase.h
CommitLineData
4259256b 1/**@file\r
2\r
3 This file contains global defines and prototype definitions\r
a3318eaf 4 for the Framework HII to Uefi HII Thunk Module.\r
4259256b 5 \r
6Copyright (c) 2006 - 2008, Intel Corporation\r
7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php\r
11\r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
15**/\r
16\r
17#ifndef _HIIDATABASE_H\r
18#define _HIIDATABASE_H\r
19\r
20\r
21#include <FrameworkDxe.h>\r
22\r
23#include <Guid/GlobalVariable.h>\r
24#include <Protocol/FrameworkFormCallback.h>\r
25#include <Protocol/FrameworkHii.h>\r
137c54ac 26#include <Protocol/FrameworkFormBrowser.h>\r
4259256b 27\r
28//\r
29// UEFI HII Protocols\r
30//\r
31#include <Protocol/HiiFont.h>\r
32#include <Protocol/HiiImage.h>\r
33#include <Protocol/HiiString.h>\r
34#include <Protocol/HiiDatabase.h>\r
35#include <Protocol/HiiConfigRouting.h>\r
36#include <Protocol/HiiConfigAccess.h>\r
a235abd2 37#include <Protocol/UgaDraw.h>\r
4259256b 38\r
39\r
40#include <Library/BaseLib.h>\r
41#include <Library/DebugLib.h>\r
42#include <Library/UefiDriverEntryPoint.h>\r
43#include <Library/MemoryAllocationLib.h>\r
44#include <Library/BaseMemoryLib.h>\r
45#include <Library/UefiBootServicesTableLib.h>\r
46#include <Library/UefiRuntimeServicesTableLib.h>\r
4259256b 47#include <Library/HiiLib.h>\r
a235abd2 48#include <Library/UefiLib.h>\r
a235abd2 49#include <Library/PcdLib.h>\r
99a83b4c 50\r
7e26c7e7 51#include <Guid/MdeModuleHii.h>\r
59336178 52\r
a9d85320 53#include "UefiIfrParser.h"\r
54\r
a3318eaf 55\r
56//\r
73d1dcbb 57// VARSTORE ID of 0 for Buffer Storage Type Storage is defined as invalid in UEFI 2.1 HII. VARSTORE ID\r
58// 0 is the default VarStore ID for storage without explicit declaration in Framework HII 0.92. EDK II UEFI VFR compiler\r
59// in compatible mode will assign 0x0001 as UEFI VARSTORE ID to this default storage id in Framework VFR without\r
60// VARSTORE declaration.\r
61// \r
62// In addition, the Name of Default VarStore is assumed to be L"Setup" for those storage without explicit VARSTORE declaration in the formset\r
63// by Framework HII. EDK II UEFI VFR compiler in compatible mode hard-coded L"Setup" as VARSTORE name.\r
a3318eaf 64//\r
a9d85320 65#define FRAMEWORK_RESERVED_VARSTORE_ID 0x0001\r
73d1dcbb 66#define FRAMEWORK_RESERVED_VARSTORE_NAME L"Setup"\r
a3318eaf 67\r
974a0271 68///\r
69/// The size of a 3 character ISO639 language code.\r
70///\r
71#define ISO_639_2_ENTRY_SIZE 3\r
72\r
88b6bcec 73#pragma pack (1)\r
4259256b 74typedef struct {\r
70d72ba9 75 EFI_HII_PACK_HEADER FrameworkPackageHeader;\r
4259256b 76 EFI_HII_PACKAGE_HEADER PackageHeader;\r
77} TIANO_AUTOGEN_PACKAGES_HEADER;\r
88b6bcec 78#pragma pack ()\r
4259256b 79\r
0368663f 80#define HII_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, HII_THUNK_PRIVATE_DATA, Hii, HII_THUNK_PRIVATE_DATA_SIGNATURE)\r
a3a83173 81#define HII_THUNK_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('H', 'i', 'I', 'T')\r
4259256b 82typedef struct {\r
83 UINTN Signature;\r
84 EFI_HANDLE Handle;\r
85 EFI_HII_PROTOCOL Hii;\r
4259256b 86\r
87 //\r
0368663f 88 // The head of link list for all HII_THUNK_CONTEXT.\r
4259256b 89 //\r
0368663f 90 LIST_ENTRY ThunkContextListHead;\r
ea58467b 91\r
ea58467b 92 EFI_HANDLE RemovePackNotifyHandle;\r
93 EFI_HANDLE AddPackNotifyHandle;\r
0368663f 94} HII_THUNK_PRIVATE_DATA;\r
95\r
4259256b 96\r
97\r
0368663f 98\r
99\r
100#define QUESTION_ID_MAP_ENTRY_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP_ENTRY, Link, QUESTION_ID_MAP_ENTRY_SIGNATURE)\r
a3a83173 101#define QUESTION_ID_MAP_ENTRY_SIGNATURE SIGNATURE_32 ('Q', 'I', 'M', 'E')\r
0368663f 102typedef struct {\r
103 UINT32 Signature;\r
104 LIST_ENTRY Link;\r
105 UINT16 FwQId;\r
106 EFI_QUESTION_ID UefiQid;\r
107} QUESTION_ID_MAP_ENTRY;\r
108\r
109\r
110\r
111#define QUESTION_ID_MAP_FROM_LINK(Record) CR(Record, QUESTION_ID_MAP, Link, QUESTION_ID_MAP_SIGNATURE)\r
a3a83173 112#define QUESTION_ID_MAP_SIGNATURE SIGNATURE_32 ('Q', 'I', 'M', 'P')\r
0368663f 113typedef struct {\r
114 UINT32 Signature;\r
115 LIST_ENTRY Link;\r
116 UINT16 VarStoreId;\r
117 UINTN VarSize;\r
118 LIST_ENTRY MapEntryListHead;\r
119} QUESTION_ID_MAP;\r
120\r
121\r
122\r
123#define HII_THUNK_CONTEXT_FROM_LINK(Record) CR(Record, HII_THUNK_CONTEXT, Link, HII_THUNK_CONTEXT_SIGNATURE)\r
a3a83173 124#define HII_THUNK_CONTEXT_SIGNATURE SIGNATURE_32 ('H', 'T', 'H', 'M')\r
0368663f 125typedef struct {\r
126 LIST_ENTRY Link;\r
4259256b 127 UINT32 Signature;\r
0368663f 128 FRAMEWORK_EFI_HII_HANDLE FwHiiHandle;\r
4259256b 129 EFI_HII_HANDLE UefiHiiHandle;\r
63dd6a96 130 EFI_HANDLE UefiHiiDriverHandle;\r
4259256b 131\r
0368663f 132 UINTN IfrPackageCount;\r
133 UINTN StringPackageCount;\r
134\r
d4775f2a 135 BOOLEAN ByFrameworkHiiNewPack;\r
136\r
4259256b 137 //\r
3321fa09 138 // HII Thunk will use TagGuid to associate the String Package and Form Package togehter.\r
139 // See description for TagGuid. This field is to record if either one of the following condition \r
140 // is TRUE:\r
141 // 1) if ((SharingStringPack == TRUE) && (StringPackageCount != 0 && IfrPackageCount == 0)), then this Package List only \r
142 /// has String Packages and provides Strings to other IFR package.\r
143 // 2) if ((SharingStringPack == TRUE) && (StringPackageCount == 0 && IfrPackageCount != 1)), then this Form Package\r
144 // copied String Packages from other Package List.\r
145 // 3) if ((SharingStringPack == FALSE)), this Package does not provide String Package or copy String Packages from other\r
146 // Package List.\r
147 //\r
148 //\r
149 // When a Hii->NewString() is called for this FwHiiHandle and SharingStringPack is TRUE, then all Package List that sharing\r
150 // the same TagGuid will update or create String in there respective String Packages. If SharingStringPack is FALSE, then\r
151 // only the String from String Packages in this Package List will be updated or created.\r
152 //\r
153 BOOLEAN SharingStringPack;\r
154\r
155 //\r
4259256b 156 // The HII 0.92 version of HII data implementation in EDK 1.03 and 1.04 make an the following assumption\r
157 // in both HII Database implementation and all modules that registering packages:\r
0368663f 158 // If a Package List has only IFR package and no String Package, the IFR package will reference \r
159 // String in another Package List registered with the HII database with the same EFI_HII_PACKAGES.GuidId.\r
160 // TagGuid is the used to record this GuidId.\r
4259256b 161 EFI_GUID TagGuid;\r
0368663f 162\r
0368663f 163 UINT8 *NvMapOverride;\r
164\r
a9d85320 165 FORM_BROWSER_FORMSET *FormSet;\r
166\r
0368663f 167} HII_THUNK_CONTEXT;\r
168\r
4259256b 169\r
0368663f 170\r
a3a83173 171#define BUFFER_STORAGE_ENTRY_SIGNATURE SIGNATURE_32 ('H', 'T', 's', 'k')\r
0368663f 172#define BUFFER_STORAGE_ENTRY_FROM_LINK(Record) CR(Record, BUFFER_STORAGE_ENTRY, Link, BUFFER_STORAGE_ENTRY_SIGNATURE)\r
ebbd2793 173typedef struct {\r
0368663f 174 LIST_ENTRY Link;\r
ebbd2793 175 UINT32 Signature;\r
176 EFI_GUID Guid;\r
177 CHAR16 *Name;\r
178 UINTN Size;\r
179 UINT16 VarStoreId;\r
0368663f 180} BUFFER_STORAGE_ENTRY;\r
181\r
f6f910dd 182#pragma pack(1)\r
6d931089
LG
183///\r
184/// HII specific Vendor Device Path Node definition.\r
185///\r
186typedef struct {\r
187 VENDOR_DEVICE_PATH VendorDevicePath;\r
188 UINT32 Reserved;\r
189 UINT64 UniqueId;\r
190} HII_VENDOR_DEVICE_PATH_NODE;\r
ebbd2793 191\r
f6f910dd 192///\r
193/// HII specific Vendor Device Path definition.\r
194///\r
195typedef struct {\r
6d931089 196 HII_VENDOR_DEVICE_PATH_NODE Node;\r
f6f910dd 197 EFI_DEVICE_PATH_PROTOCOL End;\r
198} HII_VENDOR_DEVICE_PATH;\r
f6f910dd 199#pragma pack()\r
0368663f 200\r
a3a83173 201#define CONFIG_ACCESS_PRIVATE_SIGNATURE SIGNATURE_32 ('H', 'T', 'c', 'a')\r
0368663f 202#define CONFIG_ACCESS_PRIVATE_FROM_PROTOCOL(Record) CR(Record, CONFIG_ACCESS_PRIVATE, ConfigAccessProtocol, CONFIG_ACCESS_PRIVATE_SIGNATURE)\r
ebbd2793 203typedef struct {\r
204 UINT32 Signature;\r
205 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccessProtocol;\r
0368663f 206 //\r
207 // Framework's callback\r
208 //\r
209 EFI_FORM_CALLBACK_PROTOCOL *FormCallbackProtocol;\r
210\r
0368663f 211 HII_THUNK_CONTEXT *ThunkContext;\r
212} CONFIG_ACCESS_PRIVATE;\r
213\r
214\r
ebbd2793 215\r
a3a83173 216#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('F', 'B', 'T', 'd')\r
0368663f 217#define EFI_FORMBROWSER_THUNK_PRIVATE_DATA_FROM_THIS(Record) CR(Record, EFI_FORMBROWSER_THUNK_PRIVATE_DATA, FormBrowser, EFI_FORMBROWSER_THUNK_PRIVATE_DATA_SIGNATURE)\r
137c54ac 218typedef struct {\r
219 UINTN Signature;\r
220 EFI_HANDLE Handle;\r
0368663f 221 HII_THUNK_PRIVATE_DATA *ThunkPrivate;\r
137c54ac 222 EFI_FORM_BROWSER_PROTOCOL FormBrowser;\r
223} EFI_FORMBROWSER_THUNK_PRIVATE_DATA;\r
224\r
225\r
4259256b 226//\r
227// Extern Variables\r
228//\r
59336178 229extern CONST EFI_HII_DATABASE_PROTOCOL *mHiiDatabase;\r
59336178 230extern CONST EFI_HII_IMAGE_PROTOCOL *mHiiImageProtocol;\r
231extern CONST EFI_HII_STRING_PROTOCOL *mHiiStringProtocol;\r
133a9dfb 232extern CONST EFI_HII_FONT_PROTOCOL *mHiiFontProtocol;\r
59336178 233extern CONST EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRoutingProtocol;\r
0368663f 234extern CONST EFI_FORM_BROWSER2_PROTOCOL *mFormBrowser2Protocol;\r
4259256b 235\r
0368663f 236extern HII_THUNK_PRIVATE_DATA *mHiiThunkPrivateData;\r
237\r
238extern BOOLEAN mInFrameworkUpdatePakcage;\r
ea58467b 239\r
240\r
4259256b 241EFI_STATUS\r
242EFIAPI\r
243HiiNewPack (\r
a3318eaf 244 IN EFI_HII_PROTOCOL *This,\r
245 IN EFI_HII_PACKAGES *PackageList,\r
246 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 247 );\r
4259256b 248\r
249EFI_STATUS\r
250EFIAPI\r
251HiiRemovePack (\r
a3318eaf 252 IN EFI_HII_PROTOCOL *This,\r
4259256b 253 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 254 );\r
4259256b 255\r
256EFI_STATUS\r
257EFIAPI\r
258HiiFindHandles (\r
a3318eaf 259 IN EFI_HII_PROTOCOL *This,\r
260 IN OUT UINT16 *HandleBufferLength,\r
261 OUT FRAMEWORK_EFI_HII_HANDLE *Handle\r
e00e1d46 262 );\r
4259256b 263\r
264EFI_STATUS\r
265EFIAPI\r
266HiiExportDatabase (\r
a3318eaf 267 IN EFI_HII_PROTOCOL *This,\r
268 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
269 IN OUT UINTN *BufferSize,\r
270 OUT VOID *Buffer\r
e00e1d46 271 );\r
4259256b 272\r
273EFI_STATUS\r
274EFIAPI\r
275HiiGetGlyph (\r
a3318eaf 276 IN EFI_HII_PROTOCOL *This,\r
277 IN CHAR16 *Source,\r
278 IN OUT UINT16 *Index,\r
279 OUT UINT8 **GlyphBuffer,\r
280 OUT UINT16 *BitWidth,\r
281 IN OUT UINT32 *InternalStatus\r
e00e1d46 282 );\r
4259256b 283\r
284EFI_STATUS\r
285EFIAPI\r
286HiiGlyphToBlt (\r
287 IN EFI_HII_PROTOCOL *This,\r
288 IN UINT8 *GlyphBuffer,\r
289 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground,\r
290 IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background,\r
291 IN UINTN Count,\r
292 IN UINTN Width,\r
293 IN UINTN Height,\r
294 IN OUT EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BltBuffer\r
e00e1d46 295 );\r
4259256b 296\r
297EFI_STATUS\r
298EFIAPI\r
299HiiNewString (\r
300 IN EFI_HII_PROTOCOL *This,\r
301 IN CHAR16 *Language,\r
302 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
303 IN OUT STRING_REF *Reference,\r
304 IN CHAR16 *NewString\r
e00e1d46 305 );\r
4259256b 306\r
307EFI_STATUS\r
308EFIAPI\r
cdaf7905 309HiiThunkGetString (\r
a3318eaf 310 IN EFI_HII_PROTOCOL *This,\r
311 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
312 IN STRING_REF Token,\r
313 IN BOOLEAN Raw,\r
314 IN CHAR16 *LanguageString,\r
315 IN OUT UINTN *BufferLength,\r
316 OUT EFI_STRING StringBuffer\r
e00e1d46 317 );\r
4259256b 318\r
319EFI_STATUS\r
320EFIAPI\r
321HiiResetStrings (\r
a3318eaf 322 IN EFI_HII_PROTOCOL *This,\r
323 IN FRAMEWORK_EFI_HII_HANDLE Handle\r
e00e1d46 324 );\r
4259256b 325\r
326EFI_STATUS\r
327EFIAPI\r
328HiiTestString (\r
a3318eaf 329 IN EFI_HII_PROTOCOL *This,\r
330 IN CHAR16 *StringToTest,\r
331 IN OUT UINT32 *FirstMissing,\r
332 OUT UINT32 *GlyphBufferSize\r
e00e1d46 333 );\r
4259256b 334\r
335EFI_STATUS\r
336EFIAPI\r
337HiiGetPrimaryLanguages (\r
a3318eaf 338 IN EFI_HII_PROTOCOL *This,\r
339 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
340 OUT EFI_STRING *LanguageString\r
e00e1d46 341 );\r
4259256b 342\r
343EFI_STATUS\r
344EFIAPI\r
345HiiGetSecondaryLanguages (\r
a3318eaf 346 IN EFI_HII_PROTOCOL *This,\r
347 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
348 IN CHAR16 *PrimaryLanguage,\r
349 OUT EFI_STRING *LanguageString\r
e00e1d46 350 );\r
4259256b 351\r
352EFI_STATUS\r
353EFIAPI\r
354HiiGetLine (\r
a3318eaf 355 IN EFI_HII_PROTOCOL *This,\r
4259256b 356 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 357 IN STRING_REF Token,\r
358 IN OUT UINT16 *Index,\r
359 IN UINT16 LineWidth,\r
360 IN CHAR16 *LanguageString,\r
361 IN OUT UINT16 *BufferLength,\r
362 OUT EFI_STRING StringBuffer\r
e00e1d46 363 );\r
4259256b 364\r
365EFI_STATUS\r
366EFIAPI\r
367HiiGetForms (\r
a3318eaf 368 IN EFI_HII_PROTOCOL *This,\r
4259256b 369 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
a3318eaf 370 IN EFI_FORM_ID FormId,\r
371 IN OUT UINTN *BufferLength,\r
372 OUT UINT8 *Buffer\r
e00e1d46 373 );\r
4259256b 374\r
375EFI_STATUS\r
376EFIAPI\r
377HiiGetDefaultImage (\r
a3318eaf 378 IN EFI_HII_PROTOCOL *This,\r
379 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
380 IN UINTN DefaultMask,\r
381 OUT EFI_HII_VARIABLE_PACK_LIST **VariablePackList\r
e00e1d46 382 );\r
4259256b 383\r
384EFI_STATUS\r
385EFIAPI\r
cdaf7905 386HiiThunkUpdateForm (\r
a3318eaf 387 IN EFI_HII_PROTOCOL *This,\r
388 IN FRAMEWORK_EFI_HII_HANDLE Handle,\r
389 IN EFI_FORM_LABEL Label,\r
390 IN BOOLEAN AddData,\r
391 IN FRAMEWORK_EFI_HII_UPDATE_DATA *Data\r
e00e1d46 392 );\r
4259256b 393\r
394EFI_STATUS\r
395EFIAPI\r
396HiiGetKeyboardLayout (\r
a3318eaf 397 IN EFI_HII_PROTOCOL *This,\r
398 OUT UINT16 *DescriptorCount,\r
399 OUT FRAMEWORK_EFI_KEY_DESCRIPTOR *Descriptor\r
e00e1d46 400 );\r
4259256b 401\r
137c54ac 402EFI_STATUS\r
403EFIAPI \r
404ThunkSendForm (\r
405 IN EFI_FORM_BROWSER_PROTOCOL *This,\r
406 IN BOOLEAN UseDatabase,\r
407 IN FRAMEWORK_EFI_HII_HANDLE *Handle,\r
408 IN UINTN HandleCount,\r
a3318eaf 409 IN FRAMEWORK_EFI_IFR_PACKET *Packet, OPTIONAL\r
137c54ac 410 IN EFI_HANDLE CallbackHandle, OPTIONAL\r
411 IN UINT8 *NvMapOverride, OPTIONAL\r
a3318eaf 412 IN FRAMEWORK_EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
137c54ac 413 OUT BOOLEAN *ResetRequired OPTIONAL\r
e00e1d46 414 );\r
137c54ac 415\r
416EFI_STATUS\r
417EFIAPI \r
418ThunkCreatePopUp (\r
a5420536 419 IN UINTN LinesNumber,\r
137c54ac 420 IN BOOLEAN HotKey,\r
421 IN UINTN MaximumStringSize,\r
422 OUT CHAR16 *StringBuffer,\r
a5420536
LG
423 OUT EFI_INPUT_KEY *Key,\r
424 IN CHAR16 *FirstString,\r
137c54ac 425 ...\r
e00e1d46 426 );\r
137c54ac 427\r
0368663f 428EFI_STATUS\r
429EFIAPI\r
430RemovePackNotify (\r
431 IN UINT8 PackageType,\r
432 IN CONST EFI_GUID *PackageGuid,\r
433 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
434 IN EFI_HII_HANDLE Handle,\r
435 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 436 );\r
0368663f 437\r
438EFI_STATUS\r
439EFIAPI\r
440NewOrAddPackNotify (\r
441 IN UINT8 PackageType,\r
442 IN CONST EFI_GUID *PackageGuid,\r
443 IN CONST EFI_HII_PACKAGE_HEADER *Package,\r
444 IN EFI_HII_HANDLE Handle,\r
445 IN EFI_HII_DATABASE_NOTIFY_TYPE NotifyType\r
e00e1d46 446 );\r
0368663f 447\r
03254710 448/**\r
a5420536 449 Create a Hii Update data Handle used to call IfrLibUpdateForm.\r
03254710 450\r
a5420536
LG
451 @param ThunkContext The HII Thunk Context.\r
452 @param FwUpdateData The Framework Update Data.\r
453 @param UefiOpCodeHandle The UEFI Update Data.\r
03254710 454\r
455 @retval EFI_SUCCESS The UEFI Update Data is created successfully.\r
456 @retval EFI_UNSUPPORTED There is unsupported opcode in FwUpdateData.\r
457 @retval EFI_OUT_OF_RESOURCES There is not enough resource.\r
458**/\r
459EFI_STATUS\r
460FwUpdateDataToUefiUpdateData (\r
461 IN HII_THUNK_CONTEXT *ThunkContext,\r
462 IN CONST FRAMEWORK_EFI_HII_UPDATE_DATA *FwUpdateData,\r
a5420536 463 IN VOID *UefiOpCodeHandle\r
03254710 464 )\r
465;\r
466\r
a235abd2 467/** \r
468\r
469 Initialize string packages in HII database.\r
470\r
471**/\r
472VOID\r
473InitSetBrowserStrings (\r
474 VOID\r
475 )\r
476;\r
477\r
ad5a96ab 478/**\r
8cf6dad8 479 Convert language code from RFC4646 to ISO639-2.\r
ad5a96ab 480\r
8cf6dad8 481 LanguageRfc4646 contain a single RFC 4646 code such as\r
ad5a96ab 482 "en-US" or "fr-FR".\r
483\r
8cf6dad8 484 The LanguageRfc4646 must be a buffer large enough\r
ad5a96ab 485 for ISO_639_2_ENTRY_SIZE characters.\r
486\r
8cf6dad8 487 If LanguageRfc4646 is NULL, then ASSERT.\r
ad5a96ab 488 If LanguageIso639 is NULL, then ASSERT.\r
489\r
8cf6dad8 490 @param LanguageRfc4646 RFC4646 language code.\r
ad5a96ab 491 @param LanguageIso639 ISO639-2 language code.\r
492\r
493 @retval EFI_SUCCESS Language code converted.\r
494 @retval EFI_NOT_FOUND Language code not found.\r
495\r
496**/\r
497EFI_STATUS\r
498EFIAPI\r
8cf6dad8 499ConvertRfc4646LanguageToIso639Language (\r
500 IN CHAR8 *LanguageRfc4646,\r
ad5a96ab 501 OUT CHAR8 *LanguageIso639\r
502 )\r
503;\r
504\r
505/**\r
8cf6dad8 506 Convert language code from ISO639-2 to RFC4646 and return the converted language.\r
ad5a96ab 507 Caller is responsible for freeing the allocated buffer.\r
508\r
509 LanguageIso639 contain a single ISO639-2 code such as\r
510 "eng" or "fra".\r
511\r
512 If LanguageIso639 is NULL, then ASSERT.\r
8cf6dad8 513 If LanguageRfc4646 is NULL, then ASSERT.\r
ad5a96ab 514\r
515 @param LanguageIso639 ISO639-2 language code.\r
516\r
517 @return the allocated buffer or NULL, if the language is not found.\r
518\r
519**/\r
520CHAR8*\r
521EFIAPI\r
8cf6dad8 522ConvertIso639LanguageToRfc4646Language (\r
ad5a96ab 523 IN CONST CHAR8 *LanguageIso639\r
524 )\r
525;\r
526\r
0f268521 527/**\r
528 Get next language from language code list (with separator ';').\r
529\r
530 If LangCode is NULL, then ASSERT.\r
531 If Lang is NULL, then ASSERT.\r
532\r
533 @param LangCode On input: point to first language in the list. On\r
534 output: point to next language in the list, or\r
535 NULL if no more language in the list.\r
536 @param Lang The first language in the list.\r
537\r
538**/\r
539VOID\r
540EFIAPI\r
541GetNextLanguage (\r
542 IN OUT CHAR8 **LangCode,\r
543 OUT CHAR8 *Lang\r
544 )\r
545;\r
546\r
ee3428bb 547#include "Utility.h"\r
ebbd2793 548#include "ConfigAccess.h"\r
ee3428bb 549\r
4259256b 550#endif\r