]> git.proxmox.com Git - mirror_edk2.git/blame - EdkCompatibilityPkg/Foundation/Library/Dxe/UefiEfiIfrSupportLib/UefiIfrLibrary.h
clean up the un-suitable ';' location when declaring the functions. The regular is...
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Library / Dxe / UefiEfiIfrSupportLib / UefiIfrLibrary.h
CommitLineData
c7f33ca4 1/*++\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 UefiIfrLibrary.h\r
15\r
16Abstract:\r
17\r
18 The file contain all library function for Ifr Operations.\r
19\r
20--*/\r
21\r
22#ifndef _IFRLIBRARY_H\r
23#define _IFRLIBRARY_H\r
24\r
25#include "Tiano.h"\r
26#include "EfiDriverLib.h"\r
27#include "TianoHii.h"\r
28\r
29#include EFI_PROTOCOL_DEFINITION (HiiFont)\r
30#include EFI_PROTOCOL_DEFINITION (HiiImage)\r
31#include EFI_PROTOCOL_DEFINITION (HiiString)\r
32#include EFI_PROTOCOL_DEFINITION (HiiDatabase)\r
33#include EFI_PROTOCOL_DEFINITION (HiiConfigRouting)\r
34#include EFI_PROTOCOL_DEFINITION (HiiConfigAccess)\r
35#include EFI_PROTOCOL_DEFINITION (FormBrowser2)\r
36#include EFI_PROTOCOL_DEFINITION (SimpleTextOut)\r
37\r
38#include EFI_GUID_DEFINITION (GlobalVariable)\r
39\r
40#define IFR_LIB_DEFAULT_STRING_SIZE 0x200\r
41\r
42//\r
43// The architectural variable "Lang" and "LangCodes" are deprecated in UEFI\r
44// specification. While, UEFI specification also states that these deprecated\r
45// variables may be provided for backwards compatibility.\r
46// If "LANG_SUPPORT" is defined, "Lang" and "LangCodes" will be produced;\r
47// If "LANG_SUPPORT" is undefined, "Lang" and "LangCodes" will not be produced.\r
48//\r
49#define LANG_SUPPORT\r
50\r
51#define EFI_LANGUAGE_VARIABLE L"Lang"\r
52#define EFI_LANGUAGE_CODES_VARIABLE L"LangCodes"\r
53\r
54#define UEFI_LANGUAGE_VARIABLE L"PlatformLang"\r
55#define UEFI_LANGUAGE_CODES_VARIABLE L"PlatformLangCodes"\r
56\r
57//\r
58// Limited buffer size recommended by RFC4646 (4.3. Length Considerations)\r
59// (42 characters plus a NULL terminator)\r
60//\r
61#define RFC_3066_ENTRY_SIZE (42 + 1)\r
62#define ISO_639_2_ENTRY_SIZE 3\r
63\r
64#define INVALID_VARSTORE_ID 0\r
65\r
66#define QUESTION_FLAGS (EFI_IFR_FLAG_READ_ONLY | EFI_IFR_FLAG_CALLBACK | EFI_IFR_FLAG_RESET_REQUIRED | EFI_IFR_FLAG_OPTIONS_ONLY)\r
67#define QUESTION_FLAGS_MASK (~QUESTION_FLAGS)\r
68\r
69extern EFI_GUID mIfrVendorGuid;\r
70extern EFI_HII_DATABASE_PROTOCOL *gIfrLibHiiDatabase;\r
71extern EFI_HII_STRING_PROTOCOL *gIfrLibHiiString;\r
72\r
73#pragma pack(1)\r
74typedef struct {\r
75 EFI_STRING_ID StringToken;\r
76 EFI_IFR_TYPE_VALUE Value;\r
77 UINT8 Flags;\r
78} IFR_OPTION;\r
79#pragma pack()\r
80\r
81typedef struct {\r
82 VENDOR_DEVICE_PATH VendorDevicePath;\r
83 UINT32 MonotonicCount;\r
84} HII_VENDOR_DEVICE_PATH_NODE;\r
85\r
86typedef struct {\r
87 HII_VENDOR_DEVICE_PATH_NODE Node;\r
88 EFI_DEVICE_PATH_PROTOCOL End;\r
89} HII_VENDOR_DEVICE_PATH;\r
90\r
91typedef struct {\r
92 //\r
93 // Buffer size allocated for Data.\r
94 //\r
95 UINT32 BufferSize;\r
96\r
97 //\r
98 // Offset in Data to append the newly created opcode binary.\r
99 // It will be adjusted automatically in Create***OpCode(), and should be\r
100 // initialized to 0 before invocation of a serial of Create***OpCode()\r
101 //\r
102 UINT32 Offset;\r
103\r
104 //\r
105 // The destination buffer for created op-codes\r
106 //\r
107 UINT8 *Data;\r
108} EFI_HII_UPDATE_DATA;\r
109\r
110VOID\r
111LocateHiiProtocols (\r
112 VOID\r
113 )\r
114/*++\r
115\r
116Routine Description:\r
117 This function locate Hii relative protocols for later usage.\r
118\r
119Arguments:\r
120 None.\r
121\r
122Returns:\r
123 None.\r
124\r
125--*/\r
126;\r
127\r
128//\r
129// Exported Library functions\r
130//\r
131EFI_STATUS\r
132CreateEndOpCode (\r
133 IN OUT EFI_HII_UPDATE_DATA *Data\r
134 )\r
135/*++\r
136\r
137Routine Description:\r
138 Create EFI_IFR_END_OP opcode.\r
139\r
140Arguments:\r
141 Data - Destination for the created opcode binary\r
142\r
143Returns:\r
144 EFI_SUCCESS - Opcode create success\r
145\r
146--*/\r
147;\r
148\r
149EFI_STATUS\r
150CreateDefaultOpCode (\r
151 IN EFI_IFR_TYPE_VALUE *Value,\r
152 IN UINT8 Type,\r
153 IN OUT EFI_HII_UPDATE_DATA *Data\r
154 )\r
155/*++\r
156\r
157Routine Description:\r
158 Create EFI_IFR_DEFAULT_OP opcode.\r
159\r
160Arguments:\r
161 Value - Value for the default\r
162 Type - Type for the default\r
163 Data - Destination for the created opcode binary\r
164\r
165Returns:\r
166 EFI_SUCCESS - Opcode create success\r
167\r
168--*/\r
169;\r
170\r
171EFI_STATUS\r
172CreateActionOpCode (\r
173 IN EFI_QUESTION_ID QuestionId,\r
174 IN EFI_STRING_ID Prompt,\r
175 IN EFI_STRING_ID Help,\r
176 IN UINT8 QuestionFlags,\r
177 IN EFI_STRING_ID QuestionConfig,\r
178 IN OUT EFI_HII_UPDATE_DATA *Data\r
179 )\r
180/*++\r
181\r
182Routine Description:\r
183 Create EFI_IFR_ACTION_OP opcode.\r
184\r
185Arguments:\r
186 QuestionId - Question ID\r
187 Prompt - String ID for Prompt\r
188 Help - String ID for Help\r
189 QuestionFlags - Flags in Question Header\r
190 QuestionConfig - String ID for configuration\r
191 Data - Destination for the created opcode binary\r
192\r
193Returns:\r
194 EFI_SUCCESS - Opcode create success\r
195\r
196--*/\r
197;\r
198\r
199EFI_STATUS\r
200CreateSubTitleOpCode (\r
201 IN EFI_STRING_ID Prompt,\r
202 IN EFI_STRING_ID Help,\r
203 IN UINT8 Flags,\r
204 IN UINT8 Scope,\r
205 IN OUT EFI_HII_UPDATE_DATA *Data\r
206 )\r
207/*++\r
208\r
209Routine Description:\r
210 Create EFI_IFR_SUBTITLE_OP opcode.\r
211\r
212Arguments:\r
213 Prompt - String ID for Prompt\r
214 Help - String ID for Help\r
215 Flags - Subtitle opcode flags\r
216 Scope - Subtitle Scope bit\r
217 Data - Destination for the created opcode binary\r
218\r
219Returns:\r
220 EFI_SUCCESS - Opcode create success\r
221\r
222--*/\r
223;\r
224\r
225EFI_STATUS\r
226CreateTextOpCode (\r
227 IN EFI_STRING_ID Prompt,\r
228 IN EFI_STRING_ID Help,\r
229 IN EFI_STRING_ID TextTwo,\r
230 IN OUT EFI_HII_UPDATE_DATA *Data\r
231 )\r
232/*++\r
233\r
234Routine Description:\r
235 Create EFI_IFR_TEXT_OP opcode.\r
236\r
237Arguments:\r
238 Prompt - String ID for Prompt\r
239 Help - String ID for Help\r
240 TextTwo - String ID for text two\r
241 Data - Destination for the created opcode binary\r
242\r
243Returns:\r
244 EFI_SUCCESS - Opcode create success\r
245\r
246--*/\r
247;\r
248\r
249EFI_STATUS\r
250CreateGotoOpCode (\r
251 IN EFI_FORM_ID FormId,\r
252 IN EFI_STRING_ID Prompt,\r
253 IN EFI_STRING_ID Help,\r
254 IN UINT8 QuestionFlags,\r
255 IN EFI_QUESTION_ID QuestionId,\r
256 IN OUT EFI_HII_UPDATE_DATA *Data\r
257 )\r
258/*++\r
259\r
260Routine Description:\r
261 Create EFI_IFR_REF_OP opcode.\r
262\r
263Arguments:\r
264 FormId - Destination Form ID\r
265 Prompt - String ID for Prompt\r
266 Help - String ID for Help\r
267 QuestionFlags - Flags in Question Header\r
268 QuestionId - Question ID\r
269 Data - Destination for the created opcode binary\r
270\r
271Returns:\r
272 EFI_SUCCESS - Opcode create success\r
273\r
274--*/\r
275;\r
276\r
277EFI_STATUS\r
278CreateOneOfOptionOpCode (\r
279 IN UINTN OptionCount,\r
280 IN IFR_OPTION *OptionsList,\r
281 IN UINT8 Type,\r
282 IN OUT EFI_HII_UPDATE_DATA *Data\r
e00e1d46 283 );\r
c7f33ca4 284\r
285EFI_STATUS\r
286CreateOneOfOpCode (\r
287 IN EFI_QUESTION_ID QuestionId,\r
288 IN EFI_VARSTORE_ID VarStoreId,\r
289 IN UINT16 VarOffset,\r
290 IN EFI_STRING_ID Prompt,\r
291 IN EFI_STRING_ID Help,\r
292 IN UINT8 QuestionFlags,\r
293 IN UINT8 OneOfFlags,\r
294 IN IFR_OPTION *OptionsList,\r
295 IN UINTN OptionCount,\r
296 IN OUT EFI_HII_UPDATE_DATA *Data\r
297 )\r
298/*++\r
299\r
300Routine Description:\r
301 Create EFI_IFR_ONE_OF_OP opcode.\r
302\r
303Arguments:\r
304 QuestionId - Question ID\r
305 VarStoreId - Storage ID\r
306 VarOffset - Offset in Storage\r
307 Prompt - String ID for Prompt\r
308 Help - String ID for Help\r
309 QuestionFlags - Flags in Question Header\r
310 OneOfFlags - Flags for oneof opcode\r
311 OptionsList - List of options\r
312 OptionCount - Number of options in option list\r
313 Data - Destination for the created opcode binary\r
314\r
315Returns:\r
316 EFI_SUCCESS - Opcode create success\r
317\r
318--*/\r
319;\r
320\r
321EFI_STATUS\r
322CreateOrderedListOpCode (\r
323 IN EFI_QUESTION_ID QuestionId,\r
324 IN EFI_VARSTORE_ID VarStoreId,\r
325 IN UINT16 VarOffset,\r
326 IN EFI_STRING_ID Prompt,\r
327 IN EFI_STRING_ID Help,\r
328 IN UINT8 QuestionFlags,\r
329 IN UINT8 Flags,\r
330 IN UINT8 DataType,\r
331 IN UINT8 MaxContainers,\r
332 IN IFR_OPTION *OptionsList,\r
333 IN UINTN OptionCount,\r
334 IN OUT EFI_HII_UPDATE_DATA *Data\r
335 )\r
336/*++\r
337\r
338Routine Description:\r
339 Create EFI_IFR_ORDERED_LIST_OP opcode.\r
340\r
341Arguments:\r
342 QuestionId - Question ID\r
343 VarStoreId - Storage ID\r
344 VarOffset - Offset in Storage\r
345 Prompt - String ID for Prompt\r
346 Help - String ID for Help\r
347 QuestionFlags - Flags in Question Header\r
348 Flags - Flags for ordered list opcode\r
349 DataType - Type for option value\r
350 MaxContainers - Maximum count for options in this ordered list\r
351 OptionsList - List of options\r
352 OptionCount - Number of options in option list\r
353 Data - Destination for the created opcode binary\r
354\r
355Returns:\r
356 EFI_SUCCESS - Opcode create success\r
357\r
358--*/\r
359;\r
360\r
361EFI_STATUS\r
362CreateCheckBoxOpCode (\r
363 IN EFI_QUESTION_ID QuestionId,\r
364 IN EFI_VARSTORE_ID VarStoreId,\r
365 IN UINT16 VarOffset,\r
366 IN EFI_STRING_ID Prompt,\r
367 IN EFI_STRING_ID Help,\r
368 IN UINT8 QuestionFlags,\r
369 IN UINT8 CheckBoxFlags,\r
370 IN OUT EFI_HII_UPDATE_DATA *Data\r
371 )\r
372/*++\r
373\r
374Routine Description:\r
375 Create EFI_IFR_CHECKBOX_OP opcode.\r
376\r
377Arguments:\r
378 QuestionId - Question ID\r
379 VarStoreId - Storage ID\r
380 VarOffset - Offset in Storage\r
381 Prompt - String ID for Prompt\r
382 Help - String ID for Help\r
383 QuestionFlags - Flags in Question Header\r
384 CheckBoxFlags - Flags for checkbox opcode\r
385 Data - Destination for the created opcode binary\r
386\r
387Returns:\r
388 EFI_SUCCESS - Opcode create success\r
389\r
390--*/\r
391;\r
392\r
393EFI_STATUS\r
394CreateNumericOpCode (\r
395 IN EFI_QUESTION_ID QuestionId,\r
396 IN EFI_VARSTORE_ID VarStoreId,\r
397 IN UINT16 VarOffset,\r
398 IN EFI_STRING_ID Prompt,\r
399 IN EFI_STRING_ID Help,\r
400 IN UINT8 QuestionFlags,\r
401 IN UINT8 NumericFlags,\r
402 IN UINT64 Minimum,\r
403 IN UINT64 Maximum,\r
404 IN UINT64 Step,\r
405 IN UINT64 Default,\r
406 IN OUT EFI_HII_UPDATE_DATA *Data\r
407 )\r
408/*++\r
409\r
410Routine Description:\r
411 Create EFI_IFR_NUMERIC_OP opcode.\r
412\r
413Arguments:\r
414 QuestionId - Question ID\r
415 VarStoreId - Storage ID\r
416 VarOffset - Offset in Storage\r
417 Prompt - String ID for Prompt\r
418 Help - String ID for Help\r
419 QuestionFlags - Flags in Question Header\r
420 NumericFlags - Flags for numeric opcode\r
421 Minimum - Numeric minimum value\r
422 Maximum - Numeric maximum value\r
423 Step - Numeric step for edit\r
424 Default - Numeric default value\r
425 Data - Destination for the created opcode binary\r
426\r
427Returns:\r
428 EFI_SUCCESS - Opcode create success\r
429\r
430--*/\r
431;\r
432\r
433EFI_STATUS\r
434CreateStringOpCode (\r
435 IN EFI_QUESTION_ID QuestionId,\r
436 IN EFI_VARSTORE_ID VarStoreId,\r
437 IN UINT16 VarOffset,\r
438 IN EFI_STRING_ID Prompt,\r
439 IN EFI_STRING_ID Help,\r
440 IN UINT8 QuestionFlags,\r
441 IN UINT8 StringFlags,\r
442 IN UINT8 MinSize,\r
443 IN UINT8 MaxSize,\r
444 IN OUT EFI_HII_UPDATE_DATA *Data\r
445 )\r
446/*++\r
447\r
448Routine Description:\r
449 Create EFI_IFR_STRING_OP opcode.\r
450\r
451Arguments:\r
452 QuestionId - Question ID\r
453 VarStoreId - Storage ID\r
454 VarOffset - Offset in Storage\r
455 Prompt - String ID for Prompt\r
456 Help - String ID for Help\r
457 QuestionFlags - Flags in Question Header\r
458 StringFlags - Flags for string opcode\r
459 MinSize - String minimum length\r
460 MaxSize - String maximum length\r
461 Data - Destination for the created opcode binary\r
462\r
463Returns:\r
464 EFI_SUCCESS - Opcode create success\r
465\r
466--*/\r
467;\r
468\r
469EFI_STATUS\r
470CreateBannerOpCode (\r
471 IN EFI_STRING_ID Title,\r
472 IN UINT16 LineNumber,\r
473 IN UINT8 Alignment,\r
474 IN OUT EFI_HII_UPDATE_DATA *Data\r
475 )\r
476/*++\r
477\r
478Routine Description:\r
479 Create GUIDed opcode for banner.\r
480\r
481Arguments:\r
482 Title - String ID for title\r
483 LineNumber - Line number for this banner\r
484 Alignment - Alignment for this banner, left, center or right\r
485 Data - Destination for the created opcode binary\r
486\r
487Returns:\r
488 EFI_SUCCESS - Opcode create success\r
489\r
490--*/\r
491;\r
492\r
493EFI_HII_PACKAGE_LIST_HEADER *\r
494PreparePackageList (\r
495 IN UINTN NumberOfPackages,\r
496 IN EFI_GUID *GuidId,\r
497 ...\r
498 )\r
499/*++\r
500\r
501Routine Description:\r
502 Assemble EFI_HII_PACKAGE_LIST according to the passed in packages.\r
503\r
504Arguments:\r
505 NumberOfPackages - Number of packages.\r
506 GuidId - Package GUID.\r
507\r
508Returns:\r
509 Pointer of EFI_HII_PACKAGE_LIST_HEADER.\r
510\r
511--*/\r
512;\r
513\r
514EFI_STATUS\r
515CreateHiiDriverHandle (\r
516 OUT EFI_HANDLE *DriverHandle\r
517 )\r
518/*++\r
519\r
520Routine Description:\r
521 The HII driver handle passed in for HiiDatabase.NewPackageList() requires\r
522 that there should be DevicePath Protocol installed on it.\r
523 This routine create a virtual Driver Handle by installing a vendor device\r
524 path on it, so as to use it to invoke HiiDatabase.NewPackageList().\r
525\r
526Arguments:\r
527 DriverHandle - Handle to be returned\r
528\r
529Returns:\r
530 EFI_SUCCESS - Handle destroy success.\r
531 EFI_OUT_OF_RESOURCES - Not enough memory.\r
532\r
533--*/\r
534;\r
535\r
536EFI_STATUS\r
537DestroyHiiDriverHandle (\r
538 IN EFI_HANDLE DriverHandle\r
539 )\r
540/*++\r
541\r
542Routine Description:\r
543 Destroy the Driver Handle created by CreateHiiDriverHandle().\r
544\r
545Arguments:\r
546 DriverHandle - Handle returned by CreateHiiDriverHandle()\r
547\r
548Returns:\r
549 EFI_SUCCESS - Handle destroy success.\r
550 other - Handle destroy fail.\r
551\r
552--*/\r
553;\r
554\r
555EFI_HII_HANDLE\r
556DevicePathToHiiHandle (\r
557 IN EFI_HII_DATABASE_PROTOCOL *HiiDatabase,\r
558 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
559 )\r
560/*++\r
561\r
562Routine Description:\r
563 Find HII Handle associated with given Device Path.\r
564\r
565Arguments:\r
566 HiiDatabase - Point to EFI_HII_DATABASE_PROTOCOL instance.\r
567 DevicePath - Device Path associated with the HII package list handle.\r
568\r
569Returns:\r
570 Handle - HII package list Handle associated with the Device Path.\r
571 NULL - Hii Package list handle is not found.\r
572\r
573--*/\r
574;\r
575\r
576EFI_STATUS\r
577ExtractDefault(\r
578 IN VOID *Buffer,\r
579 IN UINTN *BufferSize,\r
580 UINTN Number,\r
581 ...\r
582 )\r
583/*++\r
584\r
585 Routine Description:\r
586 Configure the buffer accrording to ConfigBody strings.\r
587\r
588 Arguments:\r
589 DefaultId - the ID of default.\r
590 Buffer - the start address of buffer.\r
591 BufferSize - the size of buffer.\r
592 Number - the number of the strings.\r
593\r
594 Returns:\r
595 EFI_BUFFER_TOO_SMALL - the BufferSize is too small to operate.\r
596 EFI_INVALID_PARAMETER - Buffer is NULL or BufferSize is 0.\r
597 EFI_SUCCESS - Operation successful.\r
598\r
599--*/\r
600;\r
601\r
602EFI_STATUS\r
603ExtractGuidFromHiiHandle (\r
604 IN EFI_HII_HANDLE Handle,\r
605 OUT EFI_GUID *Guid\r
606 )\r
607/*++\r
608\r
609Routine Description:\r
610 Extract Hii package list GUID for given HII handle.\r
611\r
612Arguments:\r
613 HiiHandle - Hii handle\r
614 Guid - Package list GUID\r
615\r
616Returns:\r
617 EFI_SUCCESS - Successfully extract GUID from Hii database.\r
618\r
619--*/\r
620;\r
621\r
622EFI_STATUS\r
623ExtractClassFromHiiHandle (\r
624 IN EFI_HII_HANDLE Handle,\r
625 OUT UINT16 *Class,\r
626 OUT EFI_STRING_ID *FormSetTitle,\r
627 OUT EFI_STRING_ID *FormSetHelp\r
628 )\r
629/*++\r
630\r
631Routine Description:\r
632 Extract formset class for given HII handle.\r
633\r
634Arguments:\r
635 HiiHandle - Hii handle\r
636 Class - Class of the formset\r
637 FormSetTitle - Formset title string\r
638 FormSetHelp - Formset help string\r
639\r
640Returns:\r
641 EFI_SUCCESS - Successfully extract Class for specified Hii handle.\r
642\r
643--*/\r
644;\r
645\r
646EFI_STATUS\r
647BufferToHexString (\r
648 IN OUT CHAR16 *Str,\r
649 IN UINT8 *Buffer,\r
650 IN UINTN BufferSize\r
651 )\r
652/*++\r
653\r
654Routine Description:\r
655 Converts binary buffer to Unicode string in reversed byte order to BufToHexString().\r
656\r
657Arguments:\r
658 Str - String for output\r
659 Buffer - Binary buffer.\r
660 BufferSize - Size of the buffer in bytes.\r
661\r
662Returns:\r
663 EFI_SUCCESS - The function completed successfully.\r
664\r
665--*/\r
666;\r
667\r
668EFI_STATUS\r
669HexStringToBuffer (\r
670 IN OUT UINT8 *Buffer,\r
671 IN OUT UINTN *BufferSize,\r
672 IN CHAR16 *Str\r
673 )\r
674/*++\r
675\r
676Routine Description:\r
677 Converts Hex String to binary buffer in reversed byte order to HexStringToBuf().\r
678\r
679Arguments:\r
680 Buffer - Pointer to buffer that receives the data.\r
681 BufferSize - Length in bytes of the buffer to hold converted data.\r
682 If routine return with EFI_SUCCESS, containing length of converted data.\r
683 If routine return with EFI_BUFFER_TOO_SMALL, containg length of buffer desired.\r
684 Str - String to be converted from.\r
685\r
686Returns:\r
687 EFI_SUCCESS - The function completed successfully.\r
688\r
689--*/\r
690;\r
691\r
692EFI_STATUS\r
693ConstructConfigHdr (\r
694 IN OUT CHAR16 *ConfigHdr,\r
695 IN OUT UINTN *StrBufferLen,\r
696 IN EFI_GUID *Guid,\r
697 IN CHAR16 *Name, OPTIONAL\r
698 IN EFI_HANDLE *DriverHandle\r
699 )\r
700/*++\r
701\r
702Routine Description:\r
703 Construct <ConfigHdr> using routing information GUID/NAME/PATH.\r
704\r
705Arguments:\r
706 ConfigHdr - Pointer to the ConfigHdr string.\r
707 StrBufferLen - On input: Length in bytes of buffer to hold the ConfigHdr string. Includes tailing '\0' character.\r
708 On output:\r
709 If return EFI_SUCCESS, containing length of ConfigHdr string buffer.\r
710 If return EFI_BUFFER_TOO_SMALL, containg length of string buffer desired.\r
711 Guid - Routing information: GUID.\r
712 Name - Routing information: NAME.\r
713 DriverHandle - Driver handle which contains the routing information: PATH.\r
714\r
715Returns:\r
716 EFI_SUCCESS - Routine success.\r
717 EFI_BUFFER_TOO_SMALL - The ConfigHdr string buffer is too small.\r
718\r
719--*/\r
720;\r
721\r
722BOOLEAN\r
723FindBlockName (\r
724 IN OUT CHAR16 *String,\r
725 UINTN Offset,\r
726 UINTN Width\r
727 )\r
728/*++\r
729\r
730Routine Description:\r
731 Search BlockName "&OFFSET=Offset&WIDTH=Width" in a string.\r
732\r
733Arguments:\r
734 String - The string to be searched in.\r
735 Offset - Offset in BlockName.\r
736 Width - Width in BlockName.\r
737\r
738Returns:\r
739 TRUE - Block name found.\r
740 FALSE - Block name not found.\r
741\r
742--*/\r
743;\r
744\r
745EFI_STATUS\r
746GetBrowserData (\r
747 EFI_GUID *VariableGuid, OPTIONAL\r
748 CHAR16 *VariableName, OPTIONAL\r
749 UINTN *BufferSize,\r
750 UINT8 *Buffer\r
751 )\r
752/*++\r
753\r
754Routine Description:\r
755 This routine is invoked by ConfigAccess.Callback() to retrived uncommitted data from Form Browser.\r
756\r
757Arguments:\r
758 VariableGuid - An optional field to indicate the target variable GUID name to use.\r
759 VariableName - An optional field to indicate the target human-readable variable name.\r
760 BufferSize - On input: Length in bytes of buffer to hold retrived data.\r
761 On output:\r
762 If return EFI_BUFFER_TOO_SMALL, containg length of buffer desired.\r
763 Buffer - Buffer to hold retrived data.\r
764\r
765Returns:\r
766 EFI_SUCCESS - Routine success.\r
767 EFI_BUFFER_TOO_SMALL - The intput buffer is too small.\r
768\r
769--*/\r
770;\r
771\r
772EFI_STATUS\r
773GetHiiHandles (\r
774 IN OUT UINTN *HandleBufferLength,\r
775 OUT EFI_HII_HANDLE **HiiHandleBuffer\r
776 )\r
777/*++\r
778\r
779Routine Description:\r
780 Determines the handles that are currently active in the database.\r
781 It's the caller's responsibility to free handle buffer.\r
782\r
783Arguments:\r
784 HiiDatabase - A pointer to the EFI_HII_DATABASE_PROTOCOL instance.\r
785 HandleBufferLength - On input, a pointer to the length of the handle buffer. On output,\r
786 the length of the handle buffer that is required for the handles found.\r
787 HiiHandleBuffer - Pointer to an array of Hii Handles returned.\r
788\r
789Returns:\r
790 EFI_SUCCESS - Get an array of Hii Handles successfully.\r
791 EFI_INVALID_PARAMETER - Hii is NULL.\r
792 EFI_NOT_FOUND - Database not found.\r
793\r
794--*/\r
795;\r
796\r
797EFI_STATUS\r
798SetBrowserData (\r
799 EFI_GUID *VariableGuid, OPTIONAL\r
800 CHAR16 *VariableName, OPTIONAL\r
801 UINTN BufferSize,\r
802 UINT8 *Buffer,\r
803 CHAR16 *RequestElement OPTIONAL\r
804 )\r
805/*++\r
806\r
807Routine Description:\r
808 This routine is invoked by ConfigAccess.Callback() to update uncommitted data of Form Browser.\r
809\r
810Arguments:\r
811 VariableGuid - An optional field to indicate the target variable GUID name to use.\r
812 VariableName - An optional field to indicate the target human-readable variable name.\r
813 BufferSize - Length in bytes of buffer to hold retrived data.\r
814 Buffer - Buffer to hold retrived data.\r
815 RequestElement - An optional field to specify which part of the buffer data\r
816 will be send back to Browser. If NULL, the whole buffer of\r
817 data will be committed to Browser.\r
818 <RequestElement> ::= &OFFSET=<Number>&WIDTH=<Number>*\r
819\r
820Returns:\r
821 EFI_SUCCESS - Routine success.\r
822 Other - Updating Browser uncommitted data failed.\r
823\r
824--*/\r
825;\r
826\r
827EFI_STATUS\r
828ConvertRfc3066LanguageToIso639Language (\r
829 CHAR8 *LanguageRfc3066,\r
830 CHAR8 *LanguageIso639\r
831 )\r
832/*++\r
833\r
834Routine Description:\r
835 Convert language code from RFC3066 to ISO639-2.\r
836\r
837Arguments:\r
838 LanguageRfc3066 - RFC3066 language code.\r
839 LanguageIso639 - ISO639-2 language code.\r
840\r
841Returns:\r
842 EFI_SUCCESS - Language code converted.\r
843 EFI_NOT_FOUND - Language code not found.\r
844\r
845--*/\r
846;\r
847\r
848CHAR8 *\r
849Rfc3066ToIso639 (\r
850 CHAR8 *SupportedLanguages\r
851 )\r
852/*++\r
853\r
854Routine Description:\r
855 Convert language code list from RFC3066 to ISO639-2, e.g. "en-US;fr-FR" will\r
856 be converted to "engfra".\r
857\r
858Arguments:\r
859 SupportedLanguages - The RFC3066 language list.\r
860\r
861Returns:\r
862 The ISO639-2 language list.\r
863\r
864--*/\r
865;\r
866\r
867EFI_STATUS\r
868GetCurrentLanguage (\r
869 OUT CHAR8 *Lang\r
870 )\r
871/*++\r
872\r
873Routine Description:\r
874 Determine what is the current language setting\r
875\r
876Arguments:\r
877 Lang - Pointer of system language\r
878\r
879Returns:\r
880 Status code\r
881\r
882--*/\r
883;\r
884\r
885VOID\r
886GetNextLanguage (\r
887 IN OUT CHAR8 **LangCode,\r
888 OUT CHAR8 *Lang\r
889 )\r
890/*++\r
891\r
892Routine Description:\r
893 Get next language from language code list.\r
894\r
895Arguments:\r
896 LangCode - The language code.\r
897 Lang - Returned language.\r
898\r
899Returns:\r
900 None.\r
901\r
902--*/\r
903;\r
904\r
905CHAR8 *\r
906GetSupportedLanguages (\r
907 IN EFI_HII_HANDLE HiiHandle\r
908 )\r
909/*++\r
910\r
911Routine Description:\r
912 This function returns the list of supported languages, in the format specified\r
45212527 913 in UEFI specification Appendix M.\r
c7f33ca4 914\r
915Arguments:\r
916 HiiHandle - The HII package list handle.\r
917\r
918Returns:\r
919 The supported languages.\r
920\r
921--*/\r
922;\r
923\r
924UINT16\r
925GetSupportedLanguageNumber (\r
926 IN EFI_HII_HANDLE HiiHandle\r
927 )\r
928/*++\r
929\r
930Routine Description:\r
931 This function returns the number of supported languages\r
932\r
933Arguments:\r
934 HiiHandle - The HII package list handle.\r
935\r
936Returns:\r
937 The number of supported languages.\r
938\r
939--*/\r
940;\r
941\r
942EFI_STATUS\r
943GetStringFromHandle (\r
944 IN EFI_HII_HANDLE HiiHandle,\r
945 IN EFI_STRING_ID StringId,\r
946 OUT EFI_STRING *String\r
947 )\r
948/*++\r
949\r
950Routine Description:\r
951 Get string specified by StringId form the HiiHandle.\r
952\r
953Arguments:\r
954 HiiHandle - The HII handle of package list.\r
955 StringId - The String ID.\r
956 String - The output string.\r
957\r
958Returns:\r
959 EFI_NOT_FOUND - String is not found.\r
960 EFI_SUCCESS - Operation is successful.\r
961 EFI_OUT_OF_RESOURCES - There is not enought memory in the system.\r
962 EFI_INVALID_PARAMETER - The String is NULL.\r
963\r
964--*/\r
965;\r
966\r
967EFI_STATUS\r
968GetStringFromToken (\r
969 IN EFI_GUID *ProducerGuid,\r
970 IN EFI_STRING_ID StringId,\r
971 OUT EFI_STRING *String\r
972 )\r
973/*++\r
974\r
975Routine Description:\r
976 Get the string given the StringId and String package Producer's Guid.\r
977\r
978Arguments:\r
979 ProducerGuid - The Guid of String package list.\r
980 StringId - The String ID.\r
981 String - The output string.\r
982\r
983Returns:\r
984 EFI_NOT_FOUND - String is not found.\r
985 EFI_SUCCESS - Operation is successful.\r
986 EFI_OUT_OF_RESOURCES - There is not enought memory in the system.\r
987\r
988--*/\r
989;\r
990\r
991EFI_STATUS\r
992IfrLibNewString (\r
993 IN EFI_HII_HANDLE PackageList,\r
994 OUT EFI_STRING_ID *StringId,\r
995 IN CONST EFI_STRING String\r
996 )\r
997/*++\r
998\r
999 Routine Description:\r
1000 This function adds the string into String Package of each language.\r
1001\r
1002 Arguments:\r
1003 PackageList - Handle of the package list where this string will be added.\r
1004 StringId - On return, contains the new strings id, which is unique within PackageList.\r
1005 String - Points to the new null-terminated string.\r
1006\r
1007 Returns:\r
1008 EFI_SUCCESS - The new string was added successfully.\r
1009 EFI_NOT_FOUND - The specified PackageList could not be found in database.\r
1010 EFI_OUT_OF_RESOURCES - Could not add the string due to lack of resources.\r
1011 EFI_INVALID_PARAMETER - String is NULL or StringId is NULL is NULL.\r
1012\r
1013--*/\r
1014;\r
1015\r
1016EFI_STATUS\r
1017IfrLibGetString (\r
1018 IN EFI_HII_HANDLE PackageList,\r
1019 IN EFI_STRING_ID StringId,\r
1020 OUT EFI_STRING String,\r
1021 IN OUT UINTN *StringSize\r
1022 )\r
1023/*++\r
1024\r
1025 Routine Description:\r
1026 This function try to retrieve string from String package of current language.\r
1027 If fail, it try to retrieve string from String package of first language it support.\r
1028\r
1029 Arguments:\r
1030 PackageList - The package list in the HII database to search for the specified string.\r
1031 StringId - The string's id, which is unique within PackageList.\r
1032 String - Points to the new null-terminated string.\r
1033 StringSize - On entry, points to the size of the buffer pointed to by String, in bytes. On return,\r
1034 points to the length of the string, in bytes.\r
1035\r
1036 Returns:\r
1037 EFI_SUCCESS - The string was returned successfully.\r
1038 EFI_NOT_FOUND - The string specified by StringId is not available.\r
1039 EFI_BUFFER_TOO_SMALL - The buffer specified by StringLength is too small to hold the string.\r
1040 EFI_INVALID_PARAMETER - The String or StringSize was NULL.\r
1041\r
1042--*/\r
1043;\r
1044\r
1045EFI_STATUS\r
1046IfrLibSetString (\r
1047 IN EFI_HII_HANDLE PackageList,\r
1048 IN EFI_STRING_ID StringId,\r
1049 IN CONST EFI_STRING String\r
1050 )\r
1051/*++\r
1052\r
1053 Routine Description:\r
1054 This function updates the string in String package of current language.\r
1055\r
1056 Arguments:\r
1057 PackageList - The package list containing the strings.\r
1058 StringId - The string's id, which is unique within PackageList.\r
1059 String - Points to the new null-terminated string.\r
1060\r
1061 Returns:\r
1062 EFI_SUCCESS - The string was updated successfully.\r
1063 EFI_NOT_FOUND - The string specified by StringId is not in the database.\r
1064 EFI_INVALID_PARAMETER - The String was NULL.\r
1065 EFI_OUT_OF_RESOURCES - The system is out of resources to accomplish the task.\r
1066\r
1067--*/\r
1068;\r
1069\r
1070EFI_STATUS\r
1071IfrLibCreatePopUp (\r
1072 IN UINTN NumberOfLines,\r
1073 OUT EFI_INPUT_KEY *KeyValue,\r
1074 IN CHAR16 *String,\r
1075 ...\r
1076 )\r
1077/*++\r
1078\r
1079Routine Description:\r
1080 Draw a dialog and return the selected key.\r
1081\r
1082Arguments:\r
1083 NumberOfLines - The number of lines for the dialog box\r
1084 KeyValue - The EFI_KEY value returned if HotKey is TRUE..\r
1085 String - Pointer to the first string in the list\r
1086 ... - A series of (quantity == NumberOfLines) text strings which\r
1087 will be used to construct the dialog box\r
1088\r
1089Returns:\r
1090 EFI_SUCCESS - Displayed dialog and received user interaction\r
1091 EFI_INVALID_PARAMETER - One of the parameters was invalid.\r
1092\r
1093--*/\r
1094;\r
1095\r
1096EFI_STATUS\r
1097IfrLibUpdateForm (\r
1098 IN EFI_HII_HANDLE Handle,\r
1099 IN EFI_GUID *FormSetGuid, OPTIONAL\r
1100 IN EFI_FORM_ID FormId,\r
1101 IN UINT16 Label,\r
1102 IN BOOLEAN Insert,\r
1103 IN EFI_HII_UPDATE_DATA *Data\r
1104 )\r
1105/*++\r
1106\r
1107Routine Description:\r
1108 This function allows the caller to update a form that has\r
1109 previously been registered with the EFI HII database.\r
1110\r
1111Arguments:\r
1112 Handle - Hii Handle\r
1113 FormSetGuid - The formset should be updated.\r
1114 FormId - The form should be updated.\r
1115 Label - Update information starting immediately after this label in the IFR\r
1116 Insert - If TRUE and Data is not NULL, insert data after Label.\r
1117 If FALSE, replace opcodes between two labels with Data.\r
1118 Data - The adding data; If NULL, remove opcodes between two Label.\r
1119\r
1120Returns:\r
1121 EFI_SUCCESS - Update success.\r
1122 Other - Update fail.\r
1123\r
1124--*/\r
1125;\r
1126#endif\r