]> git.proxmox.com Git - mirror_edk2.git/blob - MdeModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
Update the function headers to Doxygen format.
[mirror_edk2.git] / MdeModulePkg / Universal / BdsDxe / BootMaint / BootMaint.h
1 /** @file
2 Header file for boot maintenance module.
3
4 Copyright (c) 2004 - 2008, Intel Corporation. <BR>
5 All rights reserved. This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _BOOT_MAINT_H
16 #define _BOOT_MAINT_H
17
18 #include "Bds.h"
19 #include "BBSsupport.h"
20 #include "FormGuid.h"
21 #include "FrontPage.h"
22
23 //
24 // Constants which are variable names used to access variables
25 //
26 #define VarLegacyDevOrder L"LegacyDevOrder"
27
28 #define VarConOutMode L"ConOutMode"
29
30 //
31 // Guid of a NV Variable which store the information about the
32 // FD/HD/CD/NET/BEV order
33 //
34 #define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \
35 { \
36 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \
37 }
38
39 //
40 // String Contant
41 //
42 #define StrFloppy L"Floppy Drive #%02x"
43 #define StrHardDisk L"HardDisk Drive #%02x"
44 #define StrCDROM L"ATAPI CDROM Drive #%02x"
45 #define StrNET L"NET Drive #%02x"
46 #define StrBEV L"BEV Drive #%02x"
47 #define StrFloppyHelp L"Select Floppy Drive #%02x"
48 #define StrHardDiskHelp L"Select HardDisk Drive #%02x"
49 #define StrCDROMHelp L"Select ATAPI CDROM Drive #%02x"
50 #define StrNETHelp L"NET Drive #%02x"
51 #define StrBEVHelp L"BEV Drive #%02x"
52
53 //
54 // Variable created with this flag will be "Efi:...."
55 //
56 #define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
57
58 //
59 // Define Maxmim characters that will be accepted
60 //
61 #define MAX_CHAR 480
62 #define MAX_CHAR_SIZE (MAX_CHAR * 2)
63
64 //
65 // Check to see if current build support option active feature of
66 // some driver option
67 //
68 #ifndef LOAD_OPTION_ACTIVE
69 #define LOAD_OPTION_ACTIVE 0x00000001
70 #endif
71
72 //
73 // Check to see if current build support force reconnect feature of
74 // some driver option
75 //
76 #ifndef LOAD_OPTION_FORCE_RECONNECT
77 #define LOAD_OPTION_FORCE_RECONNECT 0x00000002
78 #endif
79
80 extern EFI_GUID mBootMaintGuid;
81 extern EFI_GUID mFileExplorerGuid;
82
83 //
84 // These are the VFR compiler generated data representing our VFR data.
85 //
86 extern UINT8 BmBin[];
87 extern UINT8 FEBin[];
88
89 //
90 // Below are the number of options in Baudrate, Databits,
91 // Parity and Stopbits selection for serial ports.
92 //
93 #define BM_COM_ATTR_BUADRATE 19
94 #define BM_COM_ATTR_DATABITS 4
95 #define BM_COM_ATTR_PARITY 5
96 #define BM_COM_ATTR_STOPBITS 3
97
98 //
99 // Callback function helper
100 //
101 #define BMM_CALLBACK_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')
102 #define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
103
104 #define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
105
106 //
107 // Enumeration type definition
108 //
109 typedef UINT8 BBS_TYPE;
110
111 typedef enum {
112 PC_ANSI = 0,
113 VT_100,
114 VT_100_PLUS,
115 VT_UTF8
116 } TYPE_OF_TERMINAL;
117
118 typedef enum {
119 COM1 = 0,
120 COM2,
121 UNKNOW_COM
122 } TYPE_OF_COM;
123
124 typedef enum {
125 CONIN = 0,
126 CONOUT,
127 CONERR,
128 UNKNOWN_CON
129 } TYPE_OF_CON;
130
131 typedef enum {
132 BAUDRATE = 0,
133 DATABITS,
134 PARITY,
135 STOPBITS,
136 UNKNOW_ATTR
137 } TYPE_OF_ATTRIBUTE;
138
139 typedef enum {
140 MANNER_GOTO = 0,
141 MANNER_CHECK,
142 MANNER_ONEOF,
143 MANNER_USER_DEFINE
144 } TYPE_OF_UPATE_MANNER;
145
146 typedef enum {
147 INACTIVE_STATE = 0,
148 BOOT_FROM_FILE_STATE,
149 ADD_BOOT_OPTION_STATE,
150 ADD_DRIVER_OPTION_STATE,
151 UNKNOWN_STATE
152 } FILE_EXPLORER_STATE;
153
154 typedef enum {
155 FILE_SYSTEM,
156 DIRECTORY,
157 UNKNOWN_CONTEXT
158 } FILE_EXPLORER_DISPLAY_CONTEXT;
159
160 //
161 // All of the signatures that will be used in list structure
162 //
163 #define BM_MENU_OPTION_SIGNATURE EFI_SIGNATURE_32 ('m', 'e', 'n', 'u')
164 #define BM_LOAD_OPTION_SIGNATURE EFI_SIGNATURE_32 ('l', 'o', 'a', 'd')
165 #define BM_CONSOLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('c', 'n', 's', 'l')
166 #define BM_FILE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('f', 'i', 'l', 'e')
167 #define BM_HANDLE_OPTION_SIGNATURE EFI_SIGNATURE_32 ('h', 'n', 'd', 'l')
168 #define BM_TERMINAL_OPTION_SIGNATURE EFI_SIGNATURE_32 ('t', 'r', 'm', 'l')
169 #define BM_MENU_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('e', 'n', 't', 'r')
170
171 #define BM_LOAD_CONTEXT_SELECT 0x0
172 #define BM_CONSOLE_CONTEXT_SELECT 0x1
173 #define BM_FILE_CONTEXT_SELECT 0x2
174 #define BM_HANDLE_CONTEXT_SELECT 0x3
175 #define BM_TERMINAL_CONTEXT_SELECT 0x5
176
177 #define BM_CONSOLE_IN_CONTEXT_SELECT 0x6
178 #define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
179 #define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
180 #define BM_LEGACY_DEV_CONTEXT_SELECT 0x9
181
182 //
183 // Buffer size for update data
184 //
185 #define UPDATE_DATA_SIZE 0x100000
186
187 //
188 // Namespace of callback keys used in display and file system navigation
189 //
190 #define MAX_BBS_OFFSET 0xE000
191 #define NET_OPTION_OFFSET 0xD800
192 #define BEV_OPTION_OFFSET 0xD000
193 #define FD_OPTION_OFFSET 0xC000
194 #define HD_OPTION_OFFSET 0xB000
195 #define CD_OPTION_OFFSET 0xA000
196 #define FILE_OPTION_OFFSET 0x8000
197 #define FILE_OPTION_MASK 0x7FFF
198 #define HANDLE_OPTION_OFFSET 0x7000
199 #define CONSOLE_OPTION_OFFSET 0x6000
200 #define TERMINAL_OPTION_OFFSET 0x5000
201 #define CONFIG_OPTION_OFFSET 0x1200
202 #define KEY_VALUE_OFFSET 0x1100
203 #define FORM_ID_OFFSET 0x1000
204
205 //
206 // VarOffset that will be used to create question
207 // all these values are computed from the structure
208 // defined below
209 //
210 #define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
211
212 //
213 // Question Id of Zero is invalid, so add an offset to it
214 //
215 #define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
216
217 #define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut)
218 #define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext)
219 #define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate)
220 #define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate)
221 #define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits)
222 #define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity)
223 #define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
224 #define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate)
225 #define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate)
226 #define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits)
227 #define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity)
228 #define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
229 #define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc)
230 #define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive)
231 #define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect)
232 #define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1)
233 #define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2)
234 #define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1)
235 #define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2)
236 #define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)
237 #define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)
238 #define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)
239 #define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)
240 #define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)
241 #define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)
242 #define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)
243 #define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)
244 #define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)
245 #define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate)
246 #define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate)
247 #define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)
248 #define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)
249 #define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)
250 #define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)
251 #define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)
252 #define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)
253 #define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET)
254 #define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV)
255
256 #define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut)
257 #define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext)
258 #define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate)
259 #define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate)
260 #define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits)
261 #define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity)
262 #define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
263 #define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate)
264 #define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate)
265 #define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits)
266 #define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity)
267 #define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
268 #define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
269 #define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive)
270 #define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect)
271 #define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1)
272 #define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2)
273 #define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1)
274 #define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2)
275 #define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)
276 #define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)
277 #define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)
278 #define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)
279 #define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)
280 #define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)
281 #define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)
282 #define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)
283 #define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)
284 #define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate)
285 #define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate)
286 #define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)
287 #define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)
288 #define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)
289 #define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)
290 #define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)
291 #define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)
292 #define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET)
293 #define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV)
294
295 #define STRING_DEPOSITORY_NUMBER 8
296
297 //
298 // #pragma pack(1)
299 //
300 // Serial Ports attributes, first one is the value for
301 // return from callback function, stringtoken is used to
302 // display the value properly
303 //
304 typedef struct {
305 UINTN Value;
306 UINT16 StringToken;
307 } COM_ATTR;
308
309 #pragma pack(1)
310 typedef struct {
311 BBS_TYPE BbsType;
312 //
313 // Length = sizeof (UINT16) + SIZEOF (Data)
314 //
315 UINT16 Length;
316 UINT16 *Data;
317 } BM_LEGACY_DEV_ORDER_CONTEXT;
318 #pragma pack()
319
320 typedef struct {
321 UINT64 BaudRate;
322 UINT8 DataBits;
323 UINT8 Parity;
324 UINT8 StopBits;
325
326 UINT8 BaudRateIndex;
327 UINT8 DataBitsIndex;
328 UINT8 ParityIndex;
329 UINT8 StopBitsIndex;
330
331 UINT8 IsConIn;
332 UINT8 IsConOut;
333 UINT8 IsStdErr;
334 UINT8 TerminalType;
335
336 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
337 } BM_TERMINAL_CONTEXT;
338
339 typedef struct {
340 BOOLEAN IsBootNext;
341 BOOLEAN LoadOptionModified;
342 BOOLEAN Deleted;
343
344 BOOLEAN IsLegacy;
345 BOOLEAN IsActive;
346 BOOLEAN ForceReconnect;
347 UINTN OptionalDataSize;
348
349 UINTN LoadOptionSize;
350 UINT8 *LoadOption;
351
352 UINT32 Attributes;
353 UINT16 FilePathListLength;
354 UINT16 *Description;
355 EFI_DEVICE_PATH_PROTOCOL *FilePathList;
356 UINT8 *OptionalData;
357
358 UINT16 BbsIndex;
359 } BM_LOAD_CONTEXT;
360
361 typedef struct {
362 BBS_TABLE *BbsTable;
363 UINTN Index;
364 UINTN BbsCount;
365 UINT16 *Description;
366 } BM_LEGACY_DEVICE_CONTEXT;
367
368 typedef struct {
369
370 BOOLEAN IsActive;
371
372 BOOLEAN IsTerminal;
373
374 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
375 } BM_CONSOLE_CONTEXT;
376
377 typedef struct {
378 UINTN Column;
379 UINTN Row;
380 } CONSOLE_OUT_MODE;
381
382 typedef struct {
383 EFI_HANDLE Handle;
384 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
385 EFI_FILE_HANDLE FHandle;
386 UINT16 *FileName;
387 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *Info;
388
389 BOOLEAN IsRoot;
390 BOOLEAN IsDir;
391 BOOLEAN IsRemovableMedia;
392 BOOLEAN IsLoadFile;
393 BOOLEAN IsBootLegacy;
394 } BM_FILE_CONTEXT;
395
396 typedef struct {
397 EFI_HANDLE Handle;
398 EFI_DEVICE_PATH_PROTOCOL *DevicePath;
399 } BM_HANDLE_CONTEXT;
400
401 typedef struct {
402 UINTN Signature;
403 LIST_ENTRY Head;
404 UINTN MenuNumber;
405 } BM_MENU_OPTION;
406
407 typedef struct {
408 UINTN Signature;
409 LIST_ENTRY Link;
410 UINTN OptionNumber;
411 UINT16 *DisplayString;
412 UINT16 *HelpString;
413 EFI_STRING_ID DisplayStringToken;
414 EFI_STRING_ID HelpStringToken;
415 UINTN ContextSelection;
416 VOID *VariableContext;
417 } BM_MENU_ENTRY;
418
419 typedef struct {
420 //
421 // Shared callback data.
422 //
423 UINTN Signature;
424
425 BM_MENU_ENTRY *MenuEntry;
426 BM_HANDLE_CONTEXT *HandleContext;
427 BM_FILE_CONTEXT *FileContext;
428 BM_LOAD_CONTEXT *LoadContext;
429 BM_TERMINAL_CONTEXT *TerminalContext;
430 UINTN CurrentTerminal;
431 BBS_TYPE BbsType;
432
433 //
434 // BMM main formset callback data.
435 //
436 EFI_HII_HANDLE BmmHiiHandle;
437 EFI_HANDLE BmmDriverHandle;
438 EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;
439 EFI_FORM_ID BmmCurrentPageId;
440 EFI_FORM_ID BmmPreviousPageId;
441 BOOLEAN BmmAskSaveOrNot;
442 BMM_FAKE_NV_DATA BmmFakeNvData;
443 BMM_FAKE_NV_DATA BmmOldFakeNVData;
444
445 //
446 // File explorer formset callback data.
447 //
448 EFI_HII_HANDLE FeHiiHandle;
449 EFI_HANDLE FeDriverHandle;
450 EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess;
451 FILE_EXPLORER_STATE FeCurrentState;
452 FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext;
453 FILE_EXPLORER_NV_DATA FeFakeNvData;
454 } BMM_CALLBACK_DATA;
455
456 typedef struct _STRING_LIST_NODE {
457 EFI_STRING_ID StringToken;
458 struct _STRING_LIST_NODE *Next;
459 } STRING_LIST_NODE;
460
461 typedef struct _STRING_DEPOSITORY {
462 UINTN TotalNodeNumber;
463 STRING_LIST_NODE *CurrentNode;
464 STRING_LIST_NODE *ListHead;
465 } STRING_DEPOSITORY;
466
467 //
468 // #pragma pack()
469 //
470 // For initializing File System menu
471 //
472 /**
473 EDES_TODO: Add function description
474
475 @param CallbackData EDES_TODO: Add parameter description
476
477 @return EDES_TODO: Add description for return value
478
479 **/
480 EFI_STATUS
481 BOpt_FindFileSystem (
482 IN BMM_CALLBACK_DATA *CallbackData
483 )
484 ;
485
486 //
487 // For cleaning up File System menu
488 //
489 /**
490 EDES_TODO: Add function description
491
492 @param VOID EDES_TODO: Add parameter description
493
494 @return EDES_TODO: Add description for return value
495
496 **/
497 VOID
498 BOpt_FreeFileSystem (
499 VOID
500 )
501 ;
502
503 //
504 // For initializing File Navigation menu
505 //
506 /**
507 EDES_TODO: Add function description
508
509 @param CallbackData EDES_TODO: Add parameter description
510 @param MenuEntry EDES_TODO: Add parameter description
511
512 @return EDES_TODO: Add description for return value
513
514 **/
515 EFI_STATUS
516 BOpt_FindFiles (
517 IN BMM_CALLBACK_DATA *CallbackData,
518 IN BM_MENU_ENTRY *MenuEntry
519 )
520 ;
521
522 //
523 // For cleaning up File Navigation menu
524 //
525 /**
526 EDES_TODO: Add function description
527
528 @param VOID EDES_TODO: Add parameter description
529
530 @return EDES_TODO: Add description for return value
531
532 **/
533 VOID
534 BOpt_FreeFiles (
535 VOID
536 )
537 ;
538
539 //
540 // For Initializing handle navigation menu
541 //
542 /**
543 EDES_TODO: Add function description
544
545 @param VOID EDES_TODO: Add parameter description
546
547 @return EDES_TODO: Add description for return value
548
549 **/
550 EFI_STATUS
551 BOpt_FindDrivers (
552 VOID
553 )
554 ;
555
556 //
557 // For Cleaning up handle navigation menu
558 //
559 /**
560 EDES_TODO: Add function description
561
562 @param VOID EDES_TODO: Add parameter description
563
564 @return EDES_TODO: Add description for return value
565
566 **/
567 VOID
568 BOpt_FreeDrivers(VOID);
569
570 //
571 // For initializing Boot Option menu
572 //
573 /**
574 EDES_TODO: Add function description
575
576 @param CallbackData EDES_TODO: Add parameter description
577
578 @return EDES_TODO: Add description for return value
579
580 **/
581 EFI_STATUS
582 BOpt_GetBootOptions (
583 IN BMM_CALLBACK_DATA *CallbackData
584 );
585
586 //
587 // For Initializing Driver option menu
588 //
589 /**
590 EDES_TODO: Add function description
591
592 @param CallbackData EDES_TODO: Add parameter description
593
594 @return EDES_TODO: Add description for return value
595
596 **/
597 EFI_STATUS
598 BOpt_GetDriverOptions (
599 IN BMM_CALLBACK_DATA *CallbackData
600 );
601
602 //
603 // For Cleaning up boot option menu
604 //
605 /**
606 EDES_TODO: Add function description
607
608 @param VOID EDES_TODO: Add parameter description
609
610 @return EDES_TODO: Add description for return value
611
612 **/
613 VOID
614 BOpt_FreeBootOptions (VOID);
615
616 //
617 // For cleaning up driver option menu
618 //
619 /**
620 EDES_TODO: Add function description
621
622 @param VOID EDES_TODO: Add parameter description
623
624 @return EDES_TODO: Add description for return value
625
626 **/
627 VOID
628 BOpt_FreeDriverOptions(VOID);
629
630 //
631 // For Initializing HD/FD/CD/NET/BEV option menu
632 //
633 /**
634 EDES_TODO: Add function description
635
636 @param VOID EDES_TODO: Add parameter description
637
638 @return EDES_TODO: Add description for return value
639
640 **/
641 EFI_STATUS
642 BOpt_GetLegacyOptions(VOID);
643
644 //
645 // For cleaning up driver option menu
646 //
647 /**
648 EDES_TODO: Add function description
649
650 @param VOID EDES_TODO: Add parameter description
651
652 @return EDES_TODO: Add description for return value
653
654 **/
655 VOID
656 BOpt_FreeLegacyOptions(VOID);
657
658 //
659 // this function is used to take place of all other free menu actions
660 //
661 /**
662 EDES_TODO: Add function description
663
664 @param FreeMenu EDES_TODO: Add parameter description
665
666 @return EDES_TODO: Add description for return value
667
668 **/
669 VOID
670 BOpt_FreeMenu (
671 BM_MENU_OPTION *FreeMenu
672 );
673
674
675 //
676 // Following are the helper functions used
677 //
678 /**
679 EDES_TODO: Add function description
680
681 @param Str1 EDES_TODO: Add parameter description
682 @param Str2 EDES_TODO: Add parameter description
683
684 @return EDES_TODO: Add description for return value
685
686 **/
687 CHAR16 *
688 BOpt_AppendFileName (
689 IN CHAR16 *Str1,
690 IN CHAR16 *Str2
691 );
692
693 /**
694 EDES_TODO: Add function description
695
696 @param FileName EDES_TODO: Add parameter description
697
698 @return EDES_TODO: Add description for return value
699
700 **/
701 BOOLEAN
702 BOpt_IsEfiImageName (
703 IN UINT16 *FileName
704 );
705
706 /**
707 EDES_TODO: Add function description
708
709 @param Dir EDES_TODO: Add parameter description
710 @param FileName EDES_TODO: Add parameter description
711
712 @return EDES_TODO: Add description for return value
713
714 **/
715 BOOLEAN
716 BOpt_IsEfiApp (
717 IN EFI_FILE_HANDLE Dir,
718 IN UINT16 *FileName
719 );
720
721 //
722 // Get current unused boot option number
723 //
724 /**
725 EDES_TODO: Add function description
726
727 @param VOID EDES_TODO: Add parameter description
728
729 @return EDES_TODO: Add description for return value
730
731 **/
732 UINT16
733 BOpt_GetBootOptionNumber (VOID);
734
735 //
736 // Get current unused driver option number
737 //
738 /**
739 EDES_TODO: Add function description
740
741 @param VOID EDES_TODO: Add parameter description
742
743 @return EDES_TODO: Add description for return value
744
745 **/
746 UINT16
747 BOpt_GetDriverOptionNumber (VOID);
748
749 /**
750 EDES_TODO: Add function description
751
752 @param MenuType EDES_TODO: Add parameter description
753
754 @return EDES_TODO: Add description for return value
755
756 **/
757 BM_MENU_ENTRY *
758 BOpt_CreateMenuEntry (
759 UINTN MenuType
760 );
761
762 /**
763 EDES_TODO: Add function description
764
765 @param MenuEntry EDES_TODO: Add parameter description
766
767 @return EDES_TODO: Add description for return value
768
769 **/
770 VOID
771 BOpt_DestroyMenuEntry (
772 BM_MENU_ENTRY *MenuEntry
773 );
774
775 /**
776 EDES_TODO: Add function description
777
778 @param MenuOption EDES_TODO: Add parameter description
779 @param MenuNumber EDES_TODO: Add parameter description
780
781 @return EDES_TODO: Add description for return value
782
783 **/
784 BM_MENU_ENTRY *
785 BOpt_GetMenuEntry (
786 BM_MENU_OPTION *MenuOption,
787 UINTN MenuNumber
788 );
789
790 //
791 // a helper function used to free pool type memory
792 //
793 /**
794 EDES_TODO: Add function description
795
796 @param Buffer EDES_TODO: Add parameter description
797
798 @return EDES_TODO: Add description for return value
799
800 **/
801 VOID
802 SafeFreePool (
803 IN VOID *Buffer
804 );
805
806 //
807 // Locate all serial io devices for console
808 //
809 /**
810 EDES_TODO: Add function description
811
812 @param VOID EDES_TODO: Add parameter description
813
814 @return EDES_TODO: Add description for return value
815
816 **/
817 EFI_STATUS
818 LocateSerialIo (VOID);
819
820 //
821 // Initializing Console menu
822 //
823 /**
824 EDES_TODO: Add function description
825
826 @param VOID EDES_TODO: Add parameter description
827
828 @return EDES_TODO: Add description for return value
829
830 **/
831 EFI_STATUS
832 GetAllConsoles(VOID);
833
834 //
835 // Get current mode information
836 //
837 /**
838 EDES_TODO: Add function description
839
840 @param CallbackData EDES_TODO: Add parameter description
841
842 @return EDES_TODO: Add description for return value
843
844 **/
845 VOID
846 GetConsoleOutMode (
847 IN BMM_CALLBACK_DATA *CallbackData
848 );
849
850 //
851 // Cleaning up console menu
852 //
853 /**
854 EDES_TODO: Add function description
855
856 @param VOID EDES_TODO: Add parameter description
857
858 @return EDES_TODO: Add description for return value
859
860 **/
861 EFI_STATUS
862 FreeAllConsoles(VOID);
863
864 /**
865 EDES_TODO: Add function description
866
867 @param DevicePath EDES_TODO: Add parameter description
868
869 @return EDES_TODO: Add description for return value
870
871 **/
872 VOID
873 ChangeVariableDevicePath (
874 EFI_DEVICE_PATH_PROTOCOL *DevicePath
875 );
876
877 /**
878 EDES_TODO: Add function description
879
880 @param DevicePath EDES_TODO: Add parameter description
881 @param ChangeTerminal EDES_TODO: Add parameter description
882
883 @return EDES_TODO: Add description for return value
884
885 **/
886 EFI_STATUS
887 ChangeTerminalDevicePath (
888 EFI_DEVICE_PATH_PROTOCOL *DevicePath,
889 BOOLEAN ChangeTerminal
890 );
891 //
892 // Variable operation by menu selection
893 //
894 /**
895 EDES_TODO: Add function description
896
897 @param CallbackData EDES_TODO: Add parameter description
898 @param NvRamMap EDES_TODO: Add parameter description
899
900 @return EDES_TODO: Add description for return value
901
902 **/
903 EFI_STATUS
904 Var_UpdateBootOption (
905 IN BMM_CALLBACK_DATA *CallbackData,
906 IN FILE_EXPLORER_NV_DATA *NvRamMap
907 );
908
909 /**
910 EDES_TODO: Add function description
911
912 @param VOID EDES_TODO: Add parameter description
913
914 @return EDES_TODO: Add description for return value
915
916 **/
917 EFI_STATUS
918 Var_DelBootOption (VOID);
919
920 /**
921 EDES_TODO: Add function description
922
923 @param VOID EDES_TODO: Add parameter description
924
925 @return EDES_TODO: Add description for return value
926
927 **/
928 EFI_STATUS
929 Var_ChangeBootOrder (VOID);
930
931 /**
932 EDES_TODO: Add function description
933
934 @param CallbackData EDES_TODO: Add parameter description
935 @param HiiHandle EDES_TODO: Add parameter description
936 @param DescriptionData EDES_TODO: Add parameter description
937 @param OptionalData EDES_TODO: Add parameter description
938 @param ForceReconnect EDES_TODO: Add parameter description
939
940 @return EDES_TODO: Add description for return value
941
942 **/
943 EFI_STATUS
944 Var_UpdateDriverOption (
945 IN BMM_CALLBACK_DATA *CallbackData,
946 IN EFI_HII_HANDLE HiiHandle,
947 IN UINT16 *DescriptionData,
948 IN UINT16 *OptionalData,
949 IN UINT8 ForceReconnect
950 );
951
952 /**
953 EDES_TODO: Add function description
954
955 @param VOID EDES_TODO: Add parameter description
956
957 @return EDES_TODO: Add description for return value
958
959 **/
960 EFI_STATUS
961 Var_DelDriverOption (VOID);
962
963 /**
964 EDES_TODO: Add function description
965
966 @param VOID EDES_TODO: Add parameter description
967
968 @return EDES_TODO: Add description for return value
969
970 **/
971 EFI_STATUS
972 Var_ChangeDriverOrder (VOID);
973
974 /**
975 EDES_TODO: Add function description
976
977 @param VOID EDES_TODO: Add parameter description
978
979 @return EDES_TODO: Add description for return value
980
981 **/
982 EFI_STATUS
983 Var_UpdateConsoleInpOption (VOID);
984
985 /**
986 EDES_TODO: Add function description
987
988 @param VOID EDES_TODO: Add parameter description
989
990 @return EDES_TODO: Add description for return value
991
992 **/
993 EFI_STATUS
994 Var_UpdateConsoleOutOption (VOID);
995
996 /**
997 EDES_TODO: Add function description
998
999 @param VOID EDES_TODO: Add parameter description
1000
1001 @return EDES_TODO: Add description for return value
1002
1003 **/
1004 EFI_STATUS
1005 Var_UpdateErrorOutOption (VOID);
1006
1007 /**
1008 EDES_TODO: Add function description
1009
1010 @param VOID EDES_TODO: Add parameter description
1011
1012 @return EDES_TODO: Add description for return value
1013
1014 **/
1015 VOID
1016 Var_UpdateAllConsoleOption (VOID);
1017
1018 /**
1019 EDES_TODO: Add function description
1020
1021 @param CallbackData EDES_TODO: Add parameter description
1022
1023 @return EDES_TODO: Add description for return value
1024
1025 **/
1026 EFI_STATUS
1027 Var_UpdateBootNext (
1028 IN BMM_CALLBACK_DATA *CallbackData
1029 );
1030
1031 /**
1032 EDES_TODO: Add function description
1033
1034 @param CallbackData EDES_TODO: Add parameter description
1035
1036 @return EDES_TODO: Add description for return value
1037
1038 **/
1039 EFI_STATUS
1040 Var_UpdateBootOrder (
1041 IN BMM_CALLBACK_DATA *CallbackData
1042 );
1043
1044 /**
1045 EDES_TODO: Add function description
1046
1047 @param CallbackData EDES_TODO: Add parameter description
1048
1049 @return EDES_TODO: Add description for return value
1050
1051 **/
1052 EFI_STATUS
1053 Var_UpdateDriverOrder (
1054 IN BMM_CALLBACK_DATA *CallbackData
1055 );
1056
1057 /**
1058 EDES_TODO: Add function description
1059
1060 @param CallbackData EDES_TODO: Add parameter description
1061
1062 @return EDES_TODO: Add description for return value
1063
1064 **/
1065 EFI_STATUS
1066 Var_UpdateBBSOption (
1067 IN BMM_CALLBACK_DATA *CallbackData
1068 );
1069
1070 /**
1071 EDES_TODO: Add function description
1072
1073 @param CallbackData EDES_TODO: Add parameter description
1074
1075 @return EDES_TODO: Add description for return value
1076
1077 **/
1078 EFI_STATUS
1079 Var_UpdateConMode (
1080 IN BMM_CALLBACK_DATA *CallbackData
1081 );
1082
1083 //
1084 // Following are page create and refresh functions
1085 //
1086 /**
1087 EDES_TODO: Add function description
1088
1089 @param VOID EDES_TODO: Add parameter description
1090
1091 @return EDES_TODO: Add description for return value
1092
1093 **/
1094 VOID
1095 RefreshUpdateData (
1096 VOID
1097 );
1098
1099 /**
1100 EDES_TODO: Add function description
1101
1102 @param LabelId EDES_TODO: Add parameter description
1103 @param CallbackData EDES_TODO: Add parameter description
1104
1105 @return EDES_TODO: Add description for return value
1106
1107 **/
1108 VOID
1109 CleanUpPage (
1110 IN UINT16 LabelId,
1111 IN BMM_CALLBACK_DATA *CallbackData
1112 );
1113
1114 /**
1115 EDES_TODO: Add function description
1116
1117 @param CallbackData EDES_TODO: Add parameter description
1118 @param UpdatingMenu EDES_TODO: Add parameter description
1119 @param UpdatingPage EDES_TODO: Add parameter description
1120 @param UpdatingManner EDES_TODO: Add parameter description
1121 @param QuestionIdStart EDES_TODO: Add parameter description
1122 @param GotoForm EDES_TODO: Add parameter description
1123 @param GotoAlternateForm EDES_TODO: Add parameter description
1124 @param DisplayTokenStart EDES_TODO: Add parameter description
1125 @param HelpTokenStart EDES_TODO: Add parameter description
1126 @param KeyValueStart EDES_TODO: Add parameter description
1127
1128 @return EDES_TODO: Add description for return value
1129
1130 **/
1131 EFI_STATUS
1132 UpdatePage (
1133 IN BMM_CALLBACK_DATA *CallbackData,
1134 IN BM_MENU_OPTION *UpdatingMenu,
1135 IN UINT16 UpdatingPage,
1136 IN UINT16 UpdatingManner,
1137 IN UINT16 QuestionIdStart,
1138 IN UINT16 GotoForm,
1139 IN UINT16 GotoAlternateForm,
1140 IN EFI_STRING_ID DisplayTokenStart,
1141 IN EFI_STRING_ID HelpTokenStart,
1142 IN UINT16 KeyValueStart
1143 );
1144
1145 /**
1146 EDES_TODO: Add function description
1147
1148 @param CallbackData EDES_TODO: Add parameter description
1149
1150 @return EDES_TODO: Add description for return value
1151
1152 **/
1153 VOID
1154 UpdateBootAddPage (
1155 IN BMM_CALLBACK_DATA *CallbackData
1156 );
1157
1158 /**
1159 EDES_TODO: Add function description
1160
1161 @param CallbackData EDES_TODO: Add parameter description
1162
1163 @return EDES_TODO: Add description for return value
1164
1165 **/
1166 VOID
1167 UpdateBootDelPage (
1168 IN BMM_CALLBACK_DATA *CallbackData
1169 );
1170
1171 /**
1172 EDES_TODO: Add function description
1173
1174 @param CallbackData EDES_TODO: Add parameter description
1175
1176 @return EDES_TODO: Add description for return value
1177
1178 **/
1179 VOID
1180 UpdateDrvAddFilePage (
1181 IN BMM_CALLBACK_DATA *CallbackData
1182 );
1183
1184 /**
1185 EDES_TODO: Add function description
1186
1187 @param CallbackData EDES_TODO: Add parameter description
1188
1189 @return EDES_TODO: Add description for return value
1190
1191 **/
1192 VOID
1193 UpdateDrvAddHandlePage (
1194 IN BMM_CALLBACK_DATA *CallbackData
1195 );
1196
1197 /**
1198 EDES_TODO: Add function description
1199
1200 @param CallbackData EDES_TODO: Add parameter description
1201
1202 @return EDES_TODO: Add description for return value
1203
1204 **/
1205 VOID
1206 UpdateDrvDelPage (
1207 IN BMM_CALLBACK_DATA *CallbackData
1208 );
1209
1210 /**
1211 EDES_TODO: Add function description
1212
1213 @param CallbackData EDES_TODO: Add parameter description
1214
1215 @return EDES_TODO: Add description for return value
1216
1217 **/
1218 VOID
1219 UpdateDriverAddHandleDescPage (
1220 IN BMM_CALLBACK_DATA *CallbackData
1221 );
1222
1223 /**
1224 EDES_TODO: Add function description
1225
1226 @param CallbackData EDES_TODO: Add parameter description
1227
1228 @return EDES_TODO: Add description for return value
1229
1230 **/
1231 VOID
1232 UpdateBootTimeOut (
1233 IN BMM_CALLBACK_DATA *CallbackData
1234 );
1235
1236 /**
1237 EDES_TODO: Add function description
1238
1239 @param CallbackData EDES_TODO: Add parameter description
1240
1241 @return EDES_TODO: Add description for return value
1242
1243 **/
1244 VOID
1245 UpdateConInPage (
1246 IN BMM_CALLBACK_DATA *CallbackData
1247 );
1248
1249 /**
1250 EDES_TODO: Add function description
1251
1252 @param CallbackData EDES_TODO: Add parameter description
1253
1254 @return EDES_TODO: Add description for return value
1255
1256 **/
1257 VOID
1258 UpdateConOutPage (
1259 IN BMM_CALLBACK_DATA *CallbackData
1260 );
1261
1262 /**
1263 EDES_TODO: Add function description
1264
1265 @param CallbackData EDES_TODO: Add parameter description
1266
1267 @return EDES_TODO: Add description for return value
1268
1269 **/
1270 VOID
1271 UpdateStdErrPage (
1272 IN BMM_CALLBACK_DATA *CallbackData
1273 );
1274
1275 /**
1276 EDES_TODO: Add function description
1277
1278 @param UpdatePageId EDES_TODO: Add parameter description
1279 @param CallbackData EDES_TODO: Add parameter description
1280
1281 @return EDES_TODO: Add description for return value
1282
1283 **/
1284 VOID
1285 UpdatePageBody (
1286 IN UINT16 UpdatePageId,
1287 IN BMM_CALLBACK_DATA *CallbackData
1288 );
1289
1290 /**
1291 EDES_TODO: Add function description
1292
1293 @param CallbackData EDES_TODO: Add parameter description
1294
1295 @return EDES_TODO: Add description for return value
1296
1297 **/
1298 VOID
1299 UpdateCOM1Page (
1300 IN BMM_CALLBACK_DATA *CallbackData
1301 );
1302
1303 /**
1304 EDES_TODO: Add function description
1305
1306 @param CallbackData EDES_TODO: Add parameter description
1307
1308 @return EDES_TODO: Add description for return value
1309
1310 **/
1311 VOID
1312 UpdateCOM2Page (
1313 IN BMM_CALLBACK_DATA *CallbackData
1314 );
1315
1316 /**
1317 EDES_TODO: Add function description
1318
1319 @param CallbackData EDES_TODO: Add parameter description
1320
1321 @return EDES_TODO: Add description for return value
1322
1323 **/
1324 VOID
1325 UpdateBootOrderPage (
1326 IN BMM_CALLBACK_DATA *CallbackData
1327 );
1328
1329 /**
1330 EDES_TODO: Add function description
1331
1332 @param CallbackData EDES_TODO: Add parameter description
1333
1334 @return EDES_TODO: Add description for return value
1335
1336 **/
1337 VOID
1338 UpdateDriverOrderPage (
1339 IN BMM_CALLBACK_DATA *CallbackData
1340 );
1341
1342 /**
1343 EDES_TODO: Add function description
1344
1345 @param CallbackData EDES_TODO: Add parameter description
1346
1347 @return EDES_TODO: Add description for return value
1348
1349 **/
1350 VOID
1351 UpdateBootNextPage (
1352 IN BMM_CALLBACK_DATA *CallbackData
1353 );
1354
1355 /**
1356 EDES_TODO: Add function description
1357
1358 @param CallbackData EDES_TODO: Add parameter description
1359
1360 @return EDES_TODO: Add description for return value
1361
1362 **/
1363 VOID
1364 UpdateTimeOutPage (
1365 IN BMM_CALLBACK_DATA *CallbackData
1366 );
1367
1368 /**
1369 EDES_TODO: Add function description
1370
1371 @param CallbackData EDES_TODO: Add parameter description
1372
1373 @return EDES_TODO: Add description for return value
1374
1375 **/
1376 VOID
1377 UpdateTerminalPage (
1378 IN BMM_CALLBACK_DATA *CallbackData
1379 );
1380
1381 /**
1382 EDES_TODO: Add function description
1383
1384 @param CallbackData EDES_TODO: Add parameter description
1385
1386 @return EDES_TODO: Add description for return value
1387
1388 **/
1389 VOID
1390 UpdateConModePage (
1391 IN BMM_CALLBACK_DATA *CallbackData
1392 );
1393
1394 /**
1395 EDES_TODO: Add function description
1396
1397 @param CallbackData EDES_TODO: Add parameter description
1398
1399 @return EDES_TODO: Add description for return value
1400
1401 **/
1402 VOID
1403 UpdateConCOMPage (
1404 IN BMM_CALLBACK_DATA *CallbackData
1405 );
1406
1407 /**
1408 EDES_TODO: Add function description
1409
1410 @param UpdatePageId EDES_TODO: Add parameter description
1411 @param CallbackData EDES_TODO: Add parameter description
1412
1413 @return EDES_TODO: Add description for return value
1414
1415 **/
1416 VOID
1417 UpdateSetLegacyDeviceOrderPage (
1418 IN UINT16 UpdatePageId,
1419 IN BMM_CALLBACK_DATA *CallbackData
1420 );
1421
1422 /**
1423 EDES_TODO: Add function description
1424
1425 @param BbsType EDES_TODO: Add parameter description
1426 @param BbsFlag EDES_TODO: Add parameter description
1427
1428 @return EDES_TODO: Add description for return value
1429
1430 **/
1431 EFI_STATUS
1432 BootLegacy (
1433 IN UINT16 BbsType,
1434 IN UINT16 BbsFlag
1435 );
1436
1437 /**
1438 EDES_TODO: Add function description
1439
1440 @param TerminalNumber EDES_TODO: Add parameter description
1441
1442 @return EDES_TODO: Add description for return value
1443
1444 **/
1445 BM_MENU_ENTRY *
1446 GetCurrentTerminal (
1447 UINTN TerminalNumber
1448 );
1449
1450 /**
1451 EDES_TODO: Add function description
1452
1453 @param DeviceHandle EDES_TODO: Add parameter description
1454
1455 @return EDES_TODO: Add description for return value
1456
1457 **/
1458 EFI_FILE_HANDLE
1459 EfiLibOpenRoot (
1460 IN EFI_HANDLE DeviceHandle
1461 );
1462
1463 /**
1464 EDES_TODO: Add function description
1465
1466 @param FHand EDES_TODO: Add parameter description
1467
1468 @return EDES_TODO: Add description for return value
1469
1470 **/
1471 EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
1472 EfiLibFileSystemVolumeLabelInfo (
1473 IN EFI_FILE_HANDLE FHand
1474 );
1475
1476 /**
1477 EDES_TODO: Add function description
1478
1479 @param FHand EDES_TODO: Add parameter description
1480
1481 @return EDES_TODO: Add description for return value
1482
1483 **/
1484 EFI_FILE_INFO *
1485 EfiLibFileInfo (
1486 IN EFI_FILE_HANDLE FHand
1487 );
1488
1489 /**
1490 EDES_TODO: Add function description
1491
1492 @param UStr EDES_TODO: Add parameter description
1493 @param Length EDES_TODO: Add parameter description
1494 @param AStr EDES_TODO: Add parameter description
1495
1496 @return EDES_TODO: Add description for return value
1497
1498 **/
1499 UINTN
1500 UnicodeToAscii (
1501 IN CHAR16 *UStr,
1502 IN UINTN Length,
1503 OUT CHAR8 *AStr
1504 );
1505
1506 /**
1507 EDES_TODO: Add function description
1508
1509 @param DevPath EDES_TODO: Add parameter description
1510
1511 @return EDES_TODO: Add description for return value
1512
1513 **/
1514 CHAR16 *
1515 DevicePathToStr (
1516 EFI_DEVICE_PATH_PROTOCOL *DevPath
1517 );
1518
1519 /**
1520 EDES_TODO: Add function description
1521
1522 @param Size EDES_TODO: Add parameter description
1523
1524 @return EDES_TODO: Add description for return value
1525
1526 **/
1527 VOID *
1528 EfiAllocateZeroPool (
1529 IN UINTN Size
1530 );
1531
1532 /**
1533 EDES_TODO: Add function description
1534
1535 @param ProtocolGuid EDES_TODO: Add parameter description
1536 @param Interface EDES_TODO: Add parameter description
1537
1538 @return EDES_TODO: Add description for return value
1539
1540 **/
1541 EFI_STATUS
1542 EfiLibLocateProtocol (
1543 IN EFI_GUID *ProtocolGuid,
1544 OUT VOID **Interface
1545 );
1546
1547 /**
1548 EDES_TODO: Add function description
1549
1550 @param OldPool EDES_TODO: Add parameter description
1551 @param OldSize EDES_TODO: Add parameter description
1552 @param NewSize EDES_TODO: Add parameter description
1553
1554 @return EDES_TODO: Add description for return value
1555
1556 **/
1557 VOID *
1558 EfiReallocatePool (
1559 IN VOID *OldPool,
1560 IN UINTN OldSize,
1561 IN UINTN NewSize
1562 );
1563
1564 /**
1565 EDES_TODO: Add function description
1566
1567 @param DevPath EDES_TODO: Add parameter description
1568
1569 @return EDES_TODO: Add description for return value
1570
1571 **/
1572 CHAR16 *
1573 DevicePathToStr (
1574 EFI_DEVICE_PATH_PROTOCOL *DevPath
1575 );
1576
1577 /**
1578 EDES_TODO: Add function description
1579
1580 @param Name EDES_TODO: Add parameter description
1581 @param VendorGuid EDES_TODO: Add parameter description
1582 @param VarSize EDES_TODO: Add parameter description
1583
1584 @return EDES_TODO: Add description for return value
1585
1586 **/
1587 VOID *
1588 BdsLibGetVariableAndSize (
1589 IN CHAR16 *Name,
1590 IN EFI_GUID *VendorGuid,
1591 OUT UINTN *VarSize
1592 );
1593
1594 /**
1595 EDES_TODO: Add function description
1596
1597 @param VarName EDES_TODO: Add parameter description
1598 @param VarGuid EDES_TODO: Add parameter description
1599
1600 @return EDES_TODO: Add description for return value
1601
1602 **/
1603 EFI_STATUS
1604 EfiLibDeleteVariable (
1605 IN CHAR16 *VarName,
1606 IN EFI_GUID *VarGuid
1607 );
1608
1609 /**
1610 EDES_TODO: Add function description
1611
1612 @param Src EDES_TODO: Add parameter description
1613
1614 @return EDES_TODO: Add description for return value
1615
1616 **/
1617 CHAR16 *
1618 EfiStrDuplicate (
1619 IN CHAR16 *Src
1620 );
1621
1622 /**
1623 EDES_TODO: Add function description
1624
1625 @param Multi EDES_TODO: Add parameter description
1626 @param Single EDES_TODO: Add parameter description
1627
1628 @return EDES_TODO: Add description for return value
1629
1630 **/
1631 BOOLEAN
1632 EfiLibMatchDevicePaths (
1633 IN EFI_DEVICE_PATH_PROTOCOL *Multi,
1634 IN EFI_DEVICE_PATH_PROTOCOL *Single
1635 );
1636
1637 /**
1638 EDES_TODO: Add function description
1639
1640 @param DevicePath EDES_TODO: Add parameter description
1641
1642 @return EDES_TODO: Add description for return value
1643
1644 **/
1645 UINTN
1646 EfiDevicePathInstanceCount (
1647 IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
1648 );
1649
1650 /**
1651 EDES_TODO: Add function description
1652
1653 @param CallbackData EDES_TODO: Add parameter description
1654 @param HiiHandle EDES_TODO: Add parameter description
1655 @param MenuOption EDES_TODO: Add parameter description
1656
1657 @return EDES_TODO: Add description for return value
1658
1659 **/
1660 EFI_STATUS
1661 CreateMenuStringToken (
1662 IN BMM_CALLBACK_DATA *CallbackData,
1663 IN EFI_HII_HANDLE HiiHandle,
1664 IN BM_MENU_OPTION *MenuOption
1665 );
1666
1667 /**
1668 EDES_TODO: Add function description
1669
1670 @param DevPath EDES_TODO: Add parameter description
1671
1672 @return EDES_TODO: Add description for return value
1673
1674 **/
1675 UINT16 *
1676 EfiLibStrFromDatahub (
1677 IN EFI_DEVICE_PATH_PROTOCOL *DevPath
1678 );
1679
1680 /**
1681 EDES_TODO: Add function description
1682
1683 @param DeviceType EDES_TODO: Add parameter description
1684 @param OptionIndex EDES_TODO: Add parameter description
1685 @param OptionSize EDES_TODO: Add parameter description
1686
1687 @return EDES_TODO: Add description for return value
1688
1689 **/
1690 VOID *
1691 GetLegacyBootOptionVar (
1692 IN UINTN DeviceType,
1693 OUT UINTN *OptionIndex,
1694 OUT UINTN *OptionSize
1695 );
1696
1697 /**
1698 EDES_TODO: Add function description
1699
1700 @param VOID EDES_TODO: Add parameter description
1701
1702 @return EDES_TODO: Add description for return value
1703
1704 **/
1705 EFI_STATUS
1706 InitializeBM (
1707 VOID
1708 );
1709
1710 /**
1711 EDES_TODO: Add function description
1712
1713 @param VOID EDES_TODO: Add parameter description
1714
1715 @return EDES_TODO: Add description for return value
1716
1717 **/
1718 EFI_STATUS
1719 BdsStartBootMaint (
1720 VOID
1721 );
1722
1723 /**
1724 EDES_TODO: Add function description
1725
1726 @param VOID EDES_TODO: Add parameter description
1727
1728 @return EDES_TODO: Add description for return value
1729
1730 **/
1731 VOID
1732 InitializeStringDepository (VOID);
1733
1734 /**
1735 EDES_TODO: Add function description
1736
1737 @param CallbackData EDES_TODO: Add parameter description
1738 @param StringDepository EDES_TODO: Add parameter description
1739
1740 @return EDES_TODO: Add description for return value
1741
1742 **/
1743 EFI_STRING_ID
1744 GetStringTokenFromDepository (
1745 IN BMM_CALLBACK_DATA *CallbackData,
1746 IN STRING_DEPOSITORY *StringDepository
1747 );
1748
1749 /**
1750 EDES_TODO: Add function description
1751
1752 @param VOID EDES_TODO: Add parameter description
1753
1754 @return EDES_TODO: Add description for return value
1755
1756 **/
1757 VOID
1758 ReclaimStringDepository (
1759 VOID
1760 );
1761
1762 /**
1763 EDES_TODO: Add function description
1764
1765 @param VOID EDES_TODO: Add parameter description
1766
1767 @return EDES_TODO: Add description for return value
1768
1769 **/
1770 VOID
1771 CleanUpStringDepository (
1772 VOID
1773 );
1774
1775 /**
1776 EDES_TODO: Add function description
1777
1778 @param Private EDES_TODO: Add parameter description
1779 @param CurrentFakeNVMap EDES_TODO: Add parameter description
1780 @param FormId EDES_TODO: Add parameter description
1781
1782 @return EDES_TODO: Add description for return value
1783
1784 **/
1785 EFI_STATUS
1786 ApplyChangeHandler (
1787 IN BMM_CALLBACK_DATA *Private,
1788 IN BMM_FAKE_NV_DATA *CurrentFakeNVMap,
1789 IN EFI_FORM_ID FormId
1790 );
1791
1792 /**
1793 EDES_TODO: Add function description
1794
1795 @param Private EDES_TODO: Add parameter description
1796 @param CurrentFakeNVMap EDES_TODO: Add parameter description
1797
1798 @return EDES_TODO: Add description for return value
1799
1800 **/
1801 VOID
1802 DiscardChangeHandler (
1803 IN BMM_CALLBACK_DATA *Private,
1804 IN BMM_FAKE_NV_DATA *CurrentFakeNVMap
1805 );
1806
1807 /**
1808 EDES_TODO: Add function description
1809
1810 @param Private EDES_TODO: Add parameter description
1811 @param NewPageId EDES_TODO: Add parameter description
1812
1813 @return EDES_TODO: Add description for return value
1814
1815 **/
1816 VOID
1817 UpdatePageId (
1818 BMM_CALLBACK_DATA *Private,
1819 UINT16 NewPageId
1820 );
1821
1822 /**
1823 EDES_TODO: Add function description
1824
1825 @param FileContext EDES_TODO: Add parameter description
1826
1827 @return EDES_TODO: Add description for return value
1828
1829 **/
1830 EFI_STATUS
1831 BootThisFile (
1832 IN BM_FILE_CONTEXT *FileContext
1833 );
1834
1835 /**
1836 EDES_TODO: Add function description
1837
1838 @param CallbackData EDES_TODO: Add parameter description
1839 @param KeyValue EDES_TODO: Add parameter description
1840
1841 @return EDES_TODO: Add description for return value
1842
1843 **/
1844 BOOLEAN
1845 UpdateFileExplorer (
1846 IN BMM_CALLBACK_DATA *CallbackData,
1847 IN UINT16 KeyValue
1848 );
1849
1850 /**
1851 EDES_TODO: Add function description
1852
1853 @param This EDES_TODO: Add parameter description
1854 @param Action EDES_TODO: Add parameter description
1855 @param QuestionId EDES_TODO: Add parameter description
1856 @param Type EDES_TODO: Add parameter description
1857 @param Value EDES_TODO: Add parameter description
1858 @param ActionRequest EDES_TODO: Add parameter description
1859
1860 @return EDES_TODO: Add description for return value
1861
1862 **/
1863 EFI_STATUS
1864 EFIAPI
1865 FileExplorerCallback (
1866 IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
1867 IN EFI_BROWSER_ACTION Action,
1868 IN EFI_QUESTION_ID QuestionId,
1869 IN UINT8 Type,
1870 IN EFI_IFR_TYPE_VALUE *Value,
1871 OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
1872 );
1873
1874 /**
1875 EDES_TODO: Add function description
1876
1877 @param CallbackData EDES_TODO: Add parameter description
1878
1879 @return EDES_TODO: Add description for return value
1880
1881 **/
1882 EFI_STATUS
1883 FormSetDispatcher (
1884 IN BMM_CALLBACK_DATA *CallbackData
1885 );
1886
1887 /**
1888 EDES_TODO: Add function description
1889
1890 @param Name EDES_TODO: Add parameter description
1891 @param VendorGuid EDES_TODO: Add parameter description
1892
1893 @return EDES_TODO: Add description for return value
1894
1895 **/
1896 VOID *
1897 EfiLibGetVariable (
1898 IN CHAR16 *Name,
1899 IN EFI_GUID *VendorGuid
1900 );
1901
1902 //
1903 // Global variable in this program (defined in data.c)
1904 //
1905 extern BM_MENU_OPTION BootOptionMenu;
1906 extern BM_MENU_OPTION DriverOptionMenu;
1907 extern BM_MENU_OPTION FsOptionMenu;
1908 extern BM_MENU_OPTION ConsoleInpMenu;
1909 extern BM_MENU_OPTION ConsoleOutMenu;
1910 extern BM_MENU_OPTION ConsoleErrMenu;
1911 extern BM_MENU_OPTION DirectoryMenu;
1912 extern BM_MENU_OPTION DriverMenu;
1913 extern BM_MENU_OPTION TerminalMenu;
1914 extern BM_MENU_OPTION LegacyFDMenu;
1915 extern BM_MENU_OPTION LegacyHDMenu;
1916 extern BM_MENU_OPTION LegacyCDMenu;
1917 extern BM_MENU_OPTION LegacyNETMenu;
1918 extern BM_MENU_OPTION LegacyBEVMenu;
1919 extern UINT16 TerminalType[];
1920 extern COM_ATTR BaudRateList[19];
1921 extern COM_ATTR DataBitsList[4];
1922 extern COM_ATTR ParityList[5];
1923 extern COM_ATTR StopBitsList[3];
1924 extern EFI_GUID Guid[4];
1925 extern EFI_HII_UPDATE_DATA gUpdateData;
1926 extern STRING_DEPOSITORY *FileOptionStrDepository;
1927 extern STRING_DEPOSITORY *ConsoleOptionStrDepository;
1928 extern STRING_DEPOSITORY *BootOptionStrDepository;
1929 extern STRING_DEPOSITORY *BootOptionHelpStrDepository;
1930 extern STRING_DEPOSITORY *DriverOptionStrDepository;
1931 extern STRING_DEPOSITORY *DriverOptionHelpStrDepository;
1932 extern STRING_DEPOSITORY *TerminalStrDepository;
1933 extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath[];
1934 extern EFI_GUID EfiLegacyDevOrderGuid;
1935
1936 #endif