15c08e1173703234cc2913757f237ee916087498aklu/** @file
25c08e1173703234cc2913757f237ee916087498aklu  Header file for boot maintenance module.
35c08e1173703234cc2913757f237ee916087498aklu
4c93bcb7ef453337f9daae42c6b27492c4f6555edEric DongCopyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
5180a5a35cb49699bd249dee19e41cee34c856a58hhtianThis program and the accompanying materials
65c08e1173703234cc2913757f237ee916087498akluare licensed and made available under the terms and conditions of the BSD License
75c08e1173703234cc2913757f237ee916087498akluwhich accompanies this distribution.  The full text of the license may be found at
85c08e1173703234cc2913757f237ee916087498akluhttp://opensource.org/licenses/bsd-license.php
95c08e1173703234cc2913757f237ee916087498aklu
105c08e1173703234cc2913757f237ee916087498akluTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
115c08e1173703234cc2913757f237ee916087498akluWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
125c08e1173703234cc2913757f237ee916087498aklu
135c08e1173703234cc2913757f237ee916087498aklu**/
145c08e1173703234cc2913757f237ee916087498aklu
155c08e1173703234cc2913757f237ee916087498aklu#ifndef _BOOT_MAINT_H_
165c08e1173703234cc2913757f237ee916087498aklu#define _BOOT_MAINT_H_
175c08e1173703234cc2913757f237ee916087498aklu
185c08e1173703234cc2913757f237ee916087498aklu#include "Bds.h"
195c08e1173703234cc2913757f237ee916087498aklu#include "BBSsupport.h"
205c08e1173703234cc2913757f237ee916087498aklu#include "FormGuid.h"
215c08e1173703234cc2913757f237ee916087498aklu#include "FrontPage.h"
225c08e1173703234cc2913757f237ee916087498aklu
235c08e1173703234cc2913757f237ee916087498aklu//
245c08e1173703234cc2913757f237ee916087498aklu// Constants which are variable names used to access variables
255c08e1173703234cc2913757f237ee916087498aklu//
265c08e1173703234cc2913757f237ee916087498aklu#define VAR_CON_OUT_MODE L"ConOutMode"
275c08e1173703234cc2913757f237ee916087498aklu
285c08e1173703234cc2913757f237ee916087498aklu//
295c08e1173703234cc2913757f237ee916087498aklu// String Contant
305c08e1173703234cc2913757f237ee916087498aklu//
315c08e1173703234cc2913757f237ee916087498aklu#define STR_FLOPPY       L"Floppy Drive #%02x"
325c08e1173703234cc2913757f237ee916087498aklu#define STR_HARDDISK     L"HardDisk Drive #%02x"
335c08e1173703234cc2913757f237ee916087498aklu#define STR_CDROM        L"ATAPI CDROM Drive #%02x"
345c08e1173703234cc2913757f237ee916087498aklu#define STR_NET          L"NET Drive #%02x"
355c08e1173703234cc2913757f237ee916087498aklu#define STR_BEV          L"BEV Drive #%02x"
365c08e1173703234cc2913757f237ee916087498aklu#define STR_FLOPPY_HELP   L"Select Floppy Drive #%02x"
375c08e1173703234cc2913757f237ee916087498aklu#define STR_HARDDISK_HELP L"Select HardDisk Drive #%02x"
385c08e1173703234cc2913757f237ee916087498aklu#define STR_CDROM_HELP    L"Select ATAPI CDROM Drive #%02x"
395c08e1173703234cc2913757f237ee916087498aklu#define STR_NET_HELP      L"NET Drive #%02x"
405c08e1173703234cc2913757f237ee916087498aklu#define STR_BEV_HELP      L"BEV Drive #%02x"
415c08e1173703234cc2913757f237ee916087498aklu
4275bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern CHAR16   mFileExplorerStorageName[];
43dedfc3bbc97e726e259bfadbdf22502133faa8a8lgaoextern CHAR16   mBootMaintStorageName[];
445c08e1173703234cc2913757f237ee916087498aklu//
455c08e1173703234cc2913757f237ee916087498aklu// These are the VFR compiler generated data representing our VFR data.
465c08e1173703234cc2913757f237ee916087498aklu//
475c08e1173703234cc2913757f237ee916087498akluextern UINT8    BmBin[];
485c08e1173703234cc2913757f237ee916087498akluextern UINT8    FEBin[];
495c08e1173703234cc2913757f237ee916087498aklu
505c08e1173703234cc2913757f237ee916087498aklu//
515c08e1173703234cc2913757f237ee916087498aklu// Below are the number of options in Baudrate, Databits,
525c08e1173703234cc2913757f237ee916087498aklu// Parity and Stopbits selection for serial ports.
535c08e1173703234cc2913757f237ee916087498aklu//
545c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_BUADRATE  19
555c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_DATABITS  4
565c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_PARITY    5
575c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_STOPBITS  3
585c08e1173703234cc2913757f237ee916087498aklu
595c08e1173703234cc2913757f237ee916087498aklu//
605c08e1173703234cc2913757f237ee916087498aklu// Callback function helper
615c08e1173703234cc2913757f237ee916087498aklu//
625c08e1173703234cc2913757f237ee916087498aklu#define BMM_CALLBACK_DATA_SIGNATURE     SIGNATURE_32 ('C', 'b', 'c', 'k')
635c08e1173703234cc2913757f237ee916087498aklu#define BMM_CALLBACK_DATA_FROM_THIS(a)  CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
645c08e1173703234cc2913757f237ee916087498aklu
655c08e1173703234cc2913757f237ee916087498aklu#define FE_CALLBACK_DATA_FROM_THIS(a)   CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
665c08e1173703234cc2913757f237ee916087498aklu
675c08e1173703234cc2913757f237ee916087498aklu//
685c08e1173703234cc2913757f237ee916087498aklu// Enumeration type definition
695c08e1173703234cc2913757f237ee916087498aklu//
7013078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _TYPE_OF_TERMINAL {
7113078b3fadb4aaae2d6975ab96a7ad649017589fklu  TerminalTypePcAnsi                             = 0,
7213078b3fadb4aaae2d6975ab96a7ad649017589fklu  TerminalTypeVt100,
7313078b3fadb4aaae2d6975ab96a7ad649017589fklu  TerminalTypeVt100Plus,
7413078b3fadb4aaae2d6975ab96a7ad649017589fklu  TerminalTypeVtUtf8
755c08e1173703234cc2913757f237ee916087498aklu} TYPE_OF_TERMINAL;
765c08e1173703234cc2913757f237ee916087498aklu
7713078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _FILE_EXPLORER_STATE {
7813078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerStateInActive                      = 0,
7913078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerStateBootFromFile,
8013078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerStateAddBootOption,
8113078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerStateAddDriverOptionState,
8213078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerStateUnknown
835c08e1173703234cc2913757f237ee916087498aklu} FILE_EXPLORER_STATE;
845c08e1173703234cc2913757f237ee916087498aklu
8513078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _FILE_EXPLORER_DISPLAY_CONTEXT {
8613078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerDisplayFileSystem,
8713078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerDisplayDirectory,
8813078b3fadb4aaae2d6975ab96a7ad649017589fklu  FileExplorerDisplayUnknown
895c08e1173703234cc2913757f237ee916087498aklu} FILE_EXPLORER_DISPLAY_CONTEXT;
905c08e1173703234cc2913757f237ee916087498aklu
915c08e1173703234cc2913757f237ee916087498aklu//
925c08e1173703234cc2913757f237ee916087498aklu// All of the signatures that will be used in list structure
935c08e1173703234cc2913757f237ee916087498aklu//
945c08e1173703234cc2913757f237ee916087498aklu#define BM_MENU_OPTION_SIGNATURE      SIGNATURE_32 ('m', 'e', 'n', 'u')
955c08e1173703234cc2913757f237ee916087498aklu#define BM_LOAD_OPTION_SIGNATURE      SIGNATURE_32 ('l', 'o', 'a', 'd')
965c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_OPTION_SIGNATURE   SIGNATURE_32 ('c', 'n', 's', 'l')
975c08e1173703234cc2913757f237ee916087498aklu#define BM_FILE_OPTION_SIGNATURE      SIGNATURE_32 ('f', 'i', 'l', 'e')
985c08e1173703234cc2913757f237ee916087498aklu#define BM_HANDLE_OPTION_SIGNATURE    SIGNATURE_32 ('h', 'n', 'd', 'l')
995c08e1173703234cc2913757f237ee916087498aklu#define BM_TERMINAL_OPTION_SIGNATURE  SIGNATURE_32 ('t', 'r', 'm', 'l')
1005c08e1173703234cc2913757f237ee916087498aklu#define BM_MENU_ENTRY_SIGNATURE       SIGNATURE_32 ('e', 'n', 't', 'r')
1015c08e1173703234cc2913757f237ee916087498aklu
1025c08e1173703234cc2913757f237ee916087498aklu#define BM_LOAD_CONTEXT_SELECT        0x0
1035c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_CONTEXT_SELECT     0x1
1045c08e1173703234cc2913757f237ee916087498aklu#define BM_FILE_CONTEXT_SELECT        0x2
1055c08e1173703234cc2913757f237ee916087498aklu#define BM_HANDLE_CONTEXT_SELECT      0x3
1065c08e1173703234cc2913757f237ee916087498aklu#define BM_TERMINAL_CONTEXT_SELECT    0x5
1075c08e1173703234cc2913757f237ee916087498aklu
1085c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_IN_CONTEXT_SELECT  0x6
1095c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
1105c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
1115c08e1173703234cc2913757f237ee916087498aklu#define BM_LEGACY_DEV_CONTEXT_SELECT  0x9
1125c08e1173703234cc2913757f237ee916087498aklu
1135c08e1173703234cc2913757f237ee916087498aklu//
1145c08e1173703234cc2913757f237ee916087498aklu// Buffer size for update data
1155c08e1173703234cc2913757f237ee916087498aklu//
1165c08e1173703234cc2913757f237ee916087498aklu#define UPDATE_DATA_SIZE        0x100000
1175c08e1173703234cc2913757f237ee916087498aklu
1185c08e1173703234cc2913757f237ee916087498aklu//
1195c08e1173703234cc2913757f237ee916087498aklu// Namespace of callback keys used in display and file system navigation
1205c08e1173703234cc2913757f237ee916087498aklu//
1215c08e1173703234cc2913757f237ee916087498aklu#define MAX_BBS_OFFSET          0xE000
1225c08e1173703234cc2913757f237ee916087498aklu#define NET_OPTION_OFFSET       0xD800
1235c08e1173703234cc2913757f237ee916087498aklu#define BEV_OPTION_OFFSET       0xD000
1245c08e1173703234cc2913757f237ee916087498aklu#define FD_OPTION_OFFSET        0xC000
1255c08e1173703234cc2913757f237ee916087498aklu#define HD_OPTION_OFFSET        0xB000
1265c08e1173703234cc2913757f237ee916087498aklu#define CD_OPTION_OFFSET        0xA000
127c93bcb7ef453337f9daae42c6b27492c4f6555edEric Dong#define FILE_OPTION_GOTO_OFFSET 0xC000
1285c08e1173703234cc2913757f237ee916087498aklu#define FILE_OPTION_OFFSET      0x8000
129c93bcb7ef453337f9daae42c6b27492c4f6555edEric Dong#define FILE_OPTION_MASK        0x3FFF
1305c08e1173703234cc2913757f237ee916087498aklu#define HANDLE_OPTION_OFFSET    0x7000
1315c08e1173703234cc2913757f237ee916087498aklu#define CONSOLE_OPTION_OFFSET   0x6000
1325c08e1173703234cc2913757f237ee916087498aklu#define TERMINAL_OPTION_OFFSET  0x5000
1335c08e1173703234cc2913757f237ee916087498aklu#define CONFIG_OPTION_OFFSET    0x1200
1345c08e1173703234cc2913757f237ee916087498aklu#define KEY_VALUE_OFFSET        0x1100
1355c08e1173703234cc2913757f237ee916087498aklu#define FORM_ID_OFFSET          0x1000
1365c08e1173703234cc2913757f237ee916087498aklu
1375c08e1173703234cc2913757f237ee916087498aklu//
1385c08e1173703234cc2913757f237ee916087498aklu// VarOffset that will be used to create question
1395c08e1173703234cc2913757f237ee916087498aklu// all these values are computed from the structure
1405c08e1173703234cc2913757f237ee916087498aklu// defined below
1415c08e1173703234cc2913757f237ee916087498aklu//
1425c08e1173703234cc2913757f237ee916087498aklu#define VAR_OFFSET(Field)              ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
1435c08e1173703234cc2913757f237ee916087498aklu
1445c08e1173703234cc2913757f237ee916087498aklu//
1455c08e1173703234cc2913757f237ee916087498aklu// Question Id of Zero is invalid, so add an offset to it
1465c08e1173703234cc2913757f237ee916087498aklu//
1475c08e1173703234cc2913757f237ee916087498aklu#define QUESTION_ID(Field)             (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
1485c08e1173703234cc2913757f237ee916087498aklu
1495c08e1173703234cc2913757f237ee916087498aklu#define BOOT_TIME_OUT_VAR_OFFSET        VAR_OFFSET (BootTimeOut)
1505c08e1173703234cc2913757f237ee916087498aklu#define BOOT_NEXT_VAR_OFFSET            VAR_OFFSET (BootNext)
1515c08e1173703234cc2913757f237ee916087498aklu#define COM1_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM1BaudRate)
1525c08e1173703234cc2913757f237ee916087498aklu#define COM1_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM1DataRate)
1535c08e1173703234cc2913757f237ee916087498aklu#define COM1_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM1StopBits)
1545c08e1173703234cc2913757f237ee916087498aklu#define COM1_PARITY_VAR_OFFSET          VAR_OFFSET (COM1Parity)
1555c08e1173703234cc2913757f237ee916087498aklu#define COM1_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
1565c08e1173703234cc2913757f237ee916087498aklu#define COM2_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM2BaudRate)
1575c08e1173703234cc2913757f237ee916087498aklu#define COM2_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM2DataRate)
1585c08e1173703234cc2913757f237ee916087498aklu#define COM2_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM2StopBits)
1595c08e1173703234cc2913757f237ee916087498aklu#define COM2_PARITY_VAR_OFFSET          VAR_OFFSET (COM2Parity)
1605c08e1173703234cc2913757f237ee916087498aklu#define COM2_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
1615c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_HANDLE_DESC_VAR_OFFSET  VAR_OFFSET (DriverAddHandleDesc)
1625c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_ACTIVE_VAR_OFFSET       VAR_OFFSET (DriverAddActive)
1635c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_RECON_VAR_OFFSET        VAR_OFFSET (DriverAddForceReconnect)
1645c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM1_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM1)
1655c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM2_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM2)
1665c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM1)
1675c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM2)
1685c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM1)
1695c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM2)
1705c08e1173703234cc2913757f237ee916087498aklu#define CON_MODE_VAR_OFFSET             VAR_OFFSET (ConsoleOutMode)
171be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_IN_DEVICE_VAR_OFFSET        VAR_OFFSET (ConsoleInCheck)
172be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_OUT_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleOutCheck)
173be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_ERR_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleErrCheck)
174be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define BOOT_OPTION_ORDER_VAR_OFFSET    VAR_OFFSET (BootOptionOrder)
175be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define DRIVER_OPTION_ORDER_VAR_OFFSET  VAR_OFFSET (DriverOptionOrder)
176be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define BOOT_OPTION_DEL_VAR_OFFSET      VAR_OFFSET (BootOptionDel)
177be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define DRIVER_OPTION_DEL_VAR_OFFSET    VAR_OFFSET (DriverOptionDel)
1785c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_ADD_OPTION_VAR_OFFSET    VAR_OFFSET (DriverAddHandleOptionalData)
1795c08e1173703234cc2913757f237ee916087498aklu#define COM_BAUD_RATE_VAR_OFFSET        VAR_OFFSET (COMBaudRate)
1805c08e1173703234cc2913757f237ee916087498aklu#define COM_DATA_RATE_VAR_OFFSET        VAR_OFFSET (COMDataRate)
1815c08e1173703234cc2913757f237ee916087498aklu#define COM_STOP_BITS_VAR_OFFSET        VAR_OFFSET (COMStopBits)
1825c08e1173703234cc2913757f237ee916087498aklu#define COM_PARITY_VAR_OFFSET           VAR_OFFSET (COMParity)
1835c08e1173703234cc2913757f237ee916087498aklu#define COM_TERMINAL_VAR_OFFSET         VAR_OFFSET (COMTerminalType)
1848e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydong#define COM_FLOWCONTROL_VAR_OFFSET      VAR_OFFSET (COMFlowControl)
1855c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_FD_VAR_OFFSET            VAR_OFFSET (LegacyFD)
1865c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_HD_VAR_OFFSET            VAR_OFFSET (LegacyHD)
1875c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_CD_VAR_OFFSET            VAR_OFFSET (LegacyCD)
1885c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_NET_VAR_OFFSET           VAR_OFFSET (LegacyNET)
1895c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_BEV_VAR_OFFSET           VAR_OFFSET (LegacyBEV)
1905c08e1173703234cc2913757f237ee916087498aklu
1915c08e1173703234cc2913757f237ee916087498aklu#define BOOT_TIME_OUT_QUESTION_ID       QUESTION_ID (BootTimeOut)
1925c08e1173703234cc2913757f237ee916087498aklu#define BOOT_NEXT_QUESTION_ID           QUESTION_ID (BootNext)
1935c08e1173703234cc2913757f237ee916087498aklu#define COM1_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM1BaudRate)
1945c08e1173703234cc2913757f237ee916087498aklu#define COM1_DATA_RATE_QUESTION_ID      QUESTION_ID (COM1DataRate)
1955c08e1173703234cc2913757f237ee916087498aklu#define COM1_STOP_BITS_QUESTION_ID      QUESTION_ID (COM1StopBits)
1965c08e1173703234cc2913757f237ee916087498aklu#define COM1_PARITY_QUESTION_ID         QUESTION_ID (COM1Parity)
1975c08e1173703234cc2913757f237ee916087498aklu#define COM1_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
1985c08e1173703234cc2913757f237ee916087498aklu#define COM2_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM2BaudRate)
1995c08e1173703234cc2913757f237ee916087498aklu#define COM2_DATA_RATE_QUESTION_ID      QUESTION_ID (COM2DataRate)
2005c08e1173703234cc2913757f237ee916087498aklu#define COM2_STOP_BITS_QUESTION_ID      QUESTION_ID (COM2StopBits)
2015c08e1173703234cc2913757f237ee916087498aklu#define COM2_PARITY_QUESTION_ID         QUESTION_ID (COM2Parity)
2025c08e1173703234cc2913757f237ee916087498aklu#define COM2_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
2035c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
2045c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_ACTIVE_QUESTION_ID      QUESTION_ID (DriverAddActive)
2055c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_RECON_QUESTION_ID       QUESTION_ID (DriverAddForceReconnect)
2065c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM1_QUESTION_ID         QUESTION_ID (ConsoleInputCOM1)
2075c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM2_QUESTION_ID         QUESTION_ID (ConsoleInputCOM2)
2085c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM1_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM1)
2095c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM2_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM2)
2105c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM1_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM1)
2115c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM2_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM2)
2125c08e1173703234cc2913757f237ee916087498aklu#define CON_MODE_QUESTION_ID            QUESTION_ID (ConsoleOutMode)
213be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_IN_DEVICE_QUESTION_ID       QUESTION_ID (ConsoleInCheck)
214be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_OUT_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleOutCheck)
215be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define CON_ERR_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleErrCheck)
216be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define BOOT_OPTION_ORDER_QUESTION_ID   QUESTION_ID (BootOptionOrder)
217be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionOrder)
218be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define BOOT_OPTION_DEL_QUESTION_ID     QUESTION_ID (BootOptionDel)
219be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong#define DRIVER_OPTION_DEL_QUESTION_ID   QUESTION_ID (DriverOptionDel)
2205c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_ADD_OPTION_QUESTION_ID   QUESTION_ID (DriverAddHandleOptionalData)
2215c08e1173703234cc2913757f237ee916087498aklu#define COM_BAUD_RATE_QUESTION_ID       QUESTION_ID (COMBaudRate)
2225c08e1173703234cc2913757f237ee916087498aklu#define COM_DATA_RATE_QUESTION_ID       QUESTION_ID (COMDataRate)
2235c08e1173703234cc2913757f237ee916087498aklu#define COM_STOP_BITS_QUESTION_ID       QUESTION_ID (COMStopBits)
2245c08e1173703234cc2913757f237ee916087498aklu#define COM_PARITY_QUESTION_ID          QUESTION_ID (COMParity)
2255c08e1173703234cc2913757f237ee916087498aklu#define COM_TERMINAL_QUESTION_ID        QUESTION_ID (COMTerminalType)
2268e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydong#define COM_FLOWCONTROL_QUESTION_ID     QUESTION_ID (COMFlowControl)
2275c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_FD_QUESTION_ID           QUESTION_ID (LegacyFD)
2285c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_HD_QUESTION_ID           QUESTION_ID (LegacyHD)
2295c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_CD_QUESTION_ID           QUESTION_ID (LegacyCD)
2305c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_NET_QUESTION_ID          QUESTION_ID (LegacyNET)
2315c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_BEV_QUESTION_ID          QUESTION_ID (LegacyBEV)
2325c08e1173703234cc2913757f237ee916087498aklu
2335c08e1173703234cc2913757f237ee916087498aklu#define STRING_DEPOSITORY_NUMBER        8
2345c08e1173703234cc2913757f237ee916087498aklu
2355c08e1173703234cc2913757f237ee916087498aklu///
2365c08e1173703234cc2913757f237ee916087498aklu/// Serial Ports attributes, first one is the value for
2375c08e1173703234cc2913757f237ee916087498aklu/// return from callback function, stringtoken is used to
2385c08e1173703234cc2913757f237ee916087498aklu/// display the value properly
2395c08e1173703234cc2913757f237ee916087498aklu///
2405c08e1173703234cc2913757f237ee916087498aklutypedef struct {
2415c08e1173703234cc2913757f237ee916087498aklu  UINTN   Value;
2425c08e1173703234cc2913757f237ee916087498aklu  UINT16  StringToken;
2435c08e1173703234cc2913757f237ee916087498aklu} COM_ATTR;
2445c08e1173703234cc2913757f237ee916087498aklu
2455c08e1173703234cc2913757f237ee916087498aklutypedef struct {
2465c08e1173703234cc2913757f237ee916087498aklu  UINT64                    BaudRate;
2475c08e1173703234cc2913757f237ee916087498aklu  UINT8                     DataBits;
2485c08e1173703234cc2913757f237ee916087498aklu  UINT8                     Parity;
2495c08e1173703234cc2913757f237ee916087498aklu  UINT8                     StopBits;
2505c08e1173703234cc2913757f237ee916087498aklu
2515c08e1173703234cc2913757f237ee916087498aklu  UINT8                     BaudRateIndex;
2525c08e1173703234cc2913757f237ee916087498aklu  UINT8                     DataBitsIndex;
2535c08e1173703234cc2913757f237ee916087498aklu  UINT8                     ParityIndex;
2545c08e1173703234cc2913757f237ee916087498aklu  UINT8                     StopBitsIndex;
2555c08e1173703234cc2913757f237ee916087498aklu
2568e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydong  UINT8                     FlowControl;
2578e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydong
2585c08e1173703234cc2913757f237ee916087498aklu  UINT8                     IsConIn;
2595c08e1173703234cc2913757f237ee916087498aklu  UINT8                     IsConOut;
2605c08e1173703234cc2913757f237ee916087498aklu  UINT8                     IsStdErr;
2615c08e1173703234cc2913757f237ee916087498aklu  UINT8                     TerminalType;
2625c08e1173703234cc2913757f237ee916087498aklu
2635c08e1173703234cc2913757f237ee916087498aklu  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
2645c08e1173703234cc2913757f237ee916087498aklu} BM_TERMINAL_CONTEXT;
2655c08e1173703234cc2913757f237ee916087498aklu
2665c08e1173703234cc2913757f237ee916087498aklutypedef struct {
2675c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   IsBootNext;
2685c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   LoadOptionModified;
2695c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   Deleted;
2705c08e1173703234cc2913757f237ee916087498aklu
2715c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   IsLegacy;
2725c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   IsActive;
2735c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   ForceReconnect;
2745c08e1173703234cc2913757f237ee916087498aklu  UINTN                     OptionalDataSize;
2755c08e1173703234cc2913757f237ee916087498aklu
2765c08e1173703234cc2913757f237ee916087498aklu  UINTN                     LoadOptionSize;
2775c08e1173703234cc2913757f237ee916087498aklu  UINT8                     *LoadOption;
2785c08e1173703234cc2913757f237ee916087498aklu
2795c08e1173703234cc2913757f237ee916087498aklu  UINT32                    Attributes;
2805c08e1173703234cc2913757f237ee916087498aklu  UINT16                    FilePathListLength;
2815c08e1173703234cc2913757f237ee916087498aklu  UINT16                    *Description;
2825c08e1173703234cc2913757f237ee916087498aklu  EFI_DEVICE_PATH_PROTOCOL  *FilePathList;
2835c08e1173703234cc2913757f237ee916087498aklu  UINT8                     *OptionalData;
2845c08e1173703234cc2913757f237ee916087498aklu
2855c08e1173703234cc2913757f237ee916087498aklu  UINT16                    BbsIndex;
2865c08e1173703234cc2913757f237ee916087498aklu} BM_LOAD_CONTEXT;
2875c08e1173703234cc2913757f237ee916087498aklu
2885c08e1173703234cc2913757f237ee916087498aklutypedef struct {
28922d1f97835d6c532d0cceb3b70853bf56fb5864aniruiyu  BBS_TABLE *BbsEntry;
29022d1f97835d6c532d0cceb3b70853bf56fb5864aniruiyu  UINT16    BbsIndex;
29122d1f97835d6c532d0cceb3b70853bf56fb5864aniruiyu  UINT16    BbsCount;
29222d1f97835d6c532d0cceb3b70853bf56fb5864aniruiyu  CHAR16    *Description;
2935c08e1173703234cc2913757f237ee916087498aklu} BM_LEGACY_DEVICE_CONTEXT;
2945c08e1173703234cc2913757f237ee916087498aklu
2955c08e1173703234cc2913757f237ee916087498aklutypedef struct {
2965c08e1173703234cc2913757f237ee916087498aklu
2975c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   IsActive;
2985c08e1173703234cc2913757f237ee916087498aklu
2995c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                   IsTerminal;
3005c08e1173703234cc2913757f237ee916087498aklu
3015c08e1173703234cc2913757f237ee916087498aklu  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
3025c08e1173703234cc2913757f237ee916087498aklu} BM_CONSOLE_CONTEXT;
3035c08e1173703234cc2913757f237ee916087498aklu
3045c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3055c08e1173703234cc2913757f237ee916087498aklu  UINTN   Column;
3065c08e1173703234cc2913757f237ee916087498aklu  UINTN   Row;
3075c08e1173703234cc2913757f237ee916087498aklu} CONSOLE_OUT_MODE;
3085c08e1173703234cc2913757f237ee916087498aklu
3095c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3105c08e1173703234cc2913757f237ee916087498aklu  EFI_HANDLE                        Handle;
3115c08e1173703234cc2913757f237ee916087498aklu  EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
3125c08e1173703234cc2913757f237ee916087498aklu  EFI_FILE_HANDLE                   FHandle;
3135c08e1173703234cc2913757f237ee916087498aklu  UINT16                            *FileName;
3145c08e1173703234cc2913757f237ee916087498aklu  EFI_FILE_SYSTEM_VOLUME_LABEL      *Info;
3155c08e1173703234cc2913757f237ee916087498aklu
3165c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                           IsRoot;
3175c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                           IsDir;
3185c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                           IsRemovableMedia;
3195c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                           IsLoadFile;
3205c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                           IsBootLegacy;
3215c08e1173703234cc2913757f237ee916087498aklu} BM_FILE_CONTEXT;
3225c08e1173703234cc2913757f237ee916087498aklu
3235c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3245c08e1173703234cc2913757f237ee916087498aklu  EFI_HANDLE                Handle;
3255c08e1173703234cc2913757f237ee916087498aklu  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
3265c08e1173703234cc2913757f237ee916087498aklu} BM_HANDLE_CONTEXT;
3275c08e1173703234cc2913757f237ee916087498aklu
3285c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3295c08e1173703234cc2913757f237ee916087498aklu  UINTN           Signature;
3305c08e1173703234cc2913757f237ee916087498aklu  LIST_ENTRY      Head;
3315c08e1173703234cc2913757f237ee916087498aklu  UINTN           MenuNumber;
3325c08e1173703234cc2913757f237ee916087498aklu} BM_MENU_OPTION;
3335c08e1173703234cc2913757f237ee916087498aklu
3345c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3355c08e1173703234cc2913757f237ee916087498aklu  UINTN           Signature;
3365c08e1173703234cc2913757f237ee916087498aklu  LIST_ENTRY      Link;
3375c08e1173703234cc2913757f237ee916087498aklu  UINTN           OptionNumber;
3385c08e1173703234cc2913757f237ee916087498aklu  UINT16          *DisplayString;
3395c08e1173703234cc2913757f237ee916087498aklu  UINT16          *HelpString;
3405c08e1173703234cc2913757f237ee916087498aklu  EFI_STRING_ID   DisplayStringToken;
3415c08e1173703234cc2913757f237ee916087498aklu  EFI_STRING_ID   HelpStringToken;
3425c08e1173703234cc2913757f237ee916087498aklu  UINTN           ContextSelection;
3435c08e1173703234cc2913757f237ee916087498aklu  VOID            *VariableContext;
3445c08e1173703234cc2913757f237ee916087498aklu} BM_MENU_ENTRY;
3455c08e1173703234cc2913757f237ee916087498aklu
3465c08e1173703234cc2913757f237ee916087498aklutypedef struct {
3475c08e1173703234cc2913757f237ee916087498aklu  //
3485c08e1173703234cc2913757f237ee916087498aklu  // Shared callback data.
3495c08e1173703234cc2913757f237ee916087498aklu  //
3505c08e1173703234cc2913757f237ee916087498aklu  UINTN                          Signature;
3515c08e1173703234cc2913757f237ee916087498aklu
3525c08e1173703234cc2913757f237ee916087498aklu  BM_MENU_ENTRY                  *MenuEntry;
3535c08e1173703234cc2913757f237ee916087498aklu  BM_HANDLE_CONTEXT              *HandleContext;
3545c08e1173703234cc2913757f237ee916087498aklu  BM_FILE_CONTEXT                *FileContext;
3555c08e1173703234cc2913757f237ee916087498aklu  BM_LOAD_CONTEXT                *LoadContext;
3565c08e1173703234cc2913757f237ee916087498aklu  BM_TERMINAL_CONTEXT            *TerminalContext;
3575c08e1173703234cc2913757f237ee916087498aklu  UINTN                          CurrentTerminal;
3585c08e1173703234cc2913757f237ee916087498aklu  BBS_TYPE                       BbsType;
3595c08e1173703234cc2913757f237ee916087498aklu
3605c08e1173703234cc2913757f237ee916087498aklu  //
3615c08e1173703234cc2913757f237ee916087498aklu  // BMM main formset callback data.
3625c08e1173703234cc2913757f237ee916087498aklu  //
3635c08e1173703234cc2913757f237ee916087498aklu  EFI_HII_HANDLE                 BmmHiiHandle;
3645c08e1173703234cc2913757f237ee916087498aklu  EFI_HANDLE                     BmmDriverHandle;
3655c08e1173703234cc2913757f237ee916087498aklu  EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;
3665c08e1173703234cc2913757f237ee916087498aklu  EFI_FORM_ID                    BmmCurrentPageId;
3675c08e1173703234cc2913757f237ee916087498aklu  EFI_FORM_ID                    BmmPreviousPageId;
3685c08e1173703234cc2913757f237ee916087498aklu  BOOLEAN                        BmmAskSaveOrNot;
3695c08e1173703234cc2913757f237ee916087498aklu  BMM_FAKE_NV_DATA               BmmFakeNvData;
3705c08e1173703234cc2913757f237ee916087498aklu  BMM_FAKE_NV_DATA               BmmOldFakeNVData;
3715c08e1173703234cc2913757f237ee916087498aklu
3725c08e1173703234cc2913757f237ee916087498aklu  //
3735c08e1173703234cc2913757f237ee916087498aklu  // File explorer formset callback data.
3745c08e1173703234cc2913757f237ee916087498aklu  //
3755c08e1173703234cc2913757f237ee916087498aklu  EFI_HII_HANDLE                 FeHiiHandle;
3765c08e1173703234cc2913757f237ee916087498aklu  EFI_HANDLE                     FeDriverHandle;
3775c08e1173703234cc2913757f237ee916087498aklu  EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess;
3785c08e1173703234cc2913757f237ee916087498aklu  FILE_EXPLORER_STATE            FeCurrentState;
3795c08e1173703234cc2913757f237ee916087498aklu  FILE_EXPLORER_DISPLAY_CONTEXT  FeDisplayContext;
3805c08e1173703234cc2913757f237ee916087498aklu  FILE_EXPLORER_NV_DATA          FeFakeNvData;
3815c08e1173703234cc2913757f237ee916087498aklu} BMM_CALLBACK_DATA;
3825c08e1173703234cc2913757f237ee916087498aklu
38313078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef struct _STRING_LIST_NODE STRING_LIST_NODE;
38413078b3fadb4aaae2d6975ab96a7ad649017589fklu
38513078b3fadb4aaae2d6975ab96a7ad649017589fklustruct _STRING_LIST_NODE {
3865c08e1173703234cc2913757f237ee916087498aklu  EFI_STRING_ID             StringToken;
38713078b3fadb4aaae2d6975ab96a7ad649017589fklu  STRING_LIST_NODE          *Next;
38813078b3fadb4aaae2d6975ab96a7ad649017589fklu};
3895c08e1173703234cc2913757f237ee916087498aklu
3905c08e1173703234cc2913757f237ee916087498aklutypedef struct _STRING_DEPOSITORY {
3915c08e1173703234cc2913757f237ee916087498aklu  UINTN             TotalNodeNumber;
3925c08e1173703234cc2913757f237ee916087498aklu  STRING_LIST_NODE  *CurrentNode;
3935c08e1173703234cc2913757f237ee916087498aklu  STRING_LIST_NODE  *ListHead;
3945c08e1173703234cc2913757f237ee916087498aklu} STRING_DEPOSITORY;
3955c08e1173703234cc2913757f237ee916087498aklu
3965c08e1173703234cc2913757f237ee916087498aklu//
3975c08e1173703234cc2913757f237ee916087498aklu// #pragma pack()
3985c08e1173703234cc2913757f237ee916087498aklu//
3995c08e1173703234cc2913757f237ee916087498aklu// For initializing File System menu
4005c08e1173703234cc2913757f237ee916087498aklu//
4015c08e1173703234cc2913757f237ee916087498aklu
4025c08e1173703234cc2913757f237ee916087498aklu/**
4035c08e1173703234cc2913757f237ee916087498aklu  This function build the FsOptionMenu list which records all
4045c08e1173703234cc2913757f237ee916087498aklu  available file system in the system. They includes all instances
4055c08e1173703234cc2913757f237ee916087498aklu  of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, all instances of EFI_LOAD_FILE_SYSTEM
4065c08e1173703234cc2913757f237ee916087498aklu  and all type of legacy boot device.
4075c08e1173703234cc2913757f237ee916087498aklu
4085c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    BMM context data
4095c08e1173703234cc2913757f237ee916087498aklu
4105c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS             Success find the file system
4115c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_OUT_OF_RESOURCES    Can not create menu entry
4125c08e1173703234cc2913757f237ee916087498aklu
4135c08e1173703234cc2913757f237ee916087498aklu**/
4145c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4155c08e1173703234cc2913757f237ee916087498akluBOpt_FindFileSystem (
4165c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA          *CallbackData
4175c08e1173703234cc2913757f237ee916087498aklu  );
4185c08e1173703234cc2913757f237ee916087498aklu
4195c08e1173703234cc2913757f237ee916087498aklu/**
4205c08e1173703234cc2913757f237ee916087498aklu  Find files under current directory
4215c08e1173703234cc2913757f237ee916087498aklu  All files and sub-directories in current directory
4225c08e1173703234cc2913757f237ee916087498aklu  will be stored in DirectoryMenu for future use.
4235c08e1173703234cc2913757f237ee916087498aklu
4245c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData  The BMM context data.
4255c08e1173703234cc2913757f237ee916087498aklu  @param MenuEntry     The Menu Entry.
4265c08e1173703234cc2913757f237ee916087498aklu
4275c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS         Get files from current dir successfully.
4285c08e1173703234cc2913757f237ee916087498aklu  @return Other value if can't get files from current dir.
4295c08e1173703234cc2913757f237ee916087498aklu
4305c08e1173703234cc2913757f237ee916087498aklu**/
4315c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4325c08e1173703234cc2913757f237ee916087498akluBOpt_FindFiles (
4335c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA          *CallbackData,
4345c08e1173703234cc2913757f237ee916087498aklu  IN BM_MENU_ENTRY              *MenuEntry
4355c08e1173703234cc2913757f237ee916087498aklu  );
4365c08e1173703234cc2913757f237ee916087498aklu
4375c08e1173703234cc2913757f237ee916087498aklu/**
4385c08e1173703234cc2913757f237ee916087498aklu
4395c08e1173703234cc2913757f237ee916087498aklu  Find drivers that will be added as Driver#### variables from handles
4405c08e1173703234cc2913757f237ee916087498aklu  in current system environment
4415c08e1173703234cc2913757f237ee916087498aklu  All valid handles in the system except those consume SimpleFs, LoadFile
4425c08e1173703234cc2913757f237ee916087498aklu  are stored in DriverMenu for future use.
4435c08e1173703234cc2913757f237ee916087498aklu
4445c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS The function complets successfully.
4455c08e1173703234cc2913757f237ee916087498aklu  @return Other value if failed to build the DriverMenu.
4465c08e1173703234cc2913757f237ee916087498aklu
4475c08e1173703234cc2913757f237ee916087498aklu**/
4485c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4495c08e1173703234cc2913757f237ee916087498akluBOpt_FindDrivers (
4505c08e1173703234cc2913757f237ee916087498aklu  VOID
4515c08e1173703234cc2913757f237ee916087498aklu  );
4525c08e1173703234cc2913757f237ee916087498aklu
4535c08e1173703234cc2913757f237ee916087498aklu/**
4545c08e1173703234cc2913757f237ee916087498aklu
4555c08e1173703234cc2913757f237ee916087498aklu  Build the BootOptionMenu according to BootOrder Variable.
4565c08e1173703234cc2913757f237ee916087498aklu  This Routine will access the Boot#### to get EFI_LOAD_OPTION.
4575c08e1173703234cc2913757f237ee916087498aklu
4585c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData The BMM context data.
4595c08e1173703234cc2913757f237ee916087498aklu
4605c08e1173703234cc2913757f237ee916087498aklu  @return The number of the Var Boot####.
4615c08e1173703234cc2913757f237ee916087498aklu
4625c08e1173703234cc2913757f237ee916087498aklu**/
4635c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4645c08e1173703234cc2913757f237ee916087498akluBOpt_GetBootOptions (
4655c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA         *CallbackData
4665c08e1173703234cc2913757f237ee916087498aklu  );
4675c08e1173703234cc2913757f237ee916087498aklu
4685c08e1173703234cc2913757f237ee916087498aklu/**
4695c08e1173703234cc2913757f237ee916087498aklu
4705c08e1173703234cc2913757f237ee916087498aklu  Build up all DriverOptionMenu
4715c08e1173703234cc2913757f237ee916087498aklu
4725c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData The BMM context data.
4735c08e1173703234cc2913757f237ee916087498aklu
4745c08e1173703234cc2913757f237ee916087498aklu  @return EFI_SUCESS The functin completes successfully.
4755c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation.
4765c08e1173703234cc2913757f237ee916087498aklu
4775c08e1173703234cc2913757f237ee916087498aklu
4785c08e1173703234cc2913757f237ee916087498aklu**/
4795c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4805c08e1173703234cc2913757f237ee916087498akluBOpt_GetDriverOptions (
4815c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA         *CallbackData
4825c08e1173703234cc2913757f237ee916087498aklu  );
4835c08e1173703234cc2913757f237ee916087498aklu
4845c08e1173703234cc2913757f237ee916087498aklu
4855c08e1173703234cc2913757f237ee916087498aklu/**
4865c08e1173703234cc2913757f237ee916087498aklu  Build the LegacyFDMenu LegacyHDMenu LegacyCDMenu according to LegacyBios.GetBbsInfo().
4875c08e1173703234cc2913757f237ee916087498aklu
4885c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS The function complete successfully.
4895c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES No enough memory to complete this function.
4905c08e1173703234cc2913757f237ee916087498aklu
4915c08e1173703234cc2913757f237ee916087498aklu**/
4925c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
4935c08e1173703234cc2913757f237ee916087498akluBOpt_GetLegacyOptions (
4945c08e1173703234cc2913757f237ee916087498aklu  VOID
4955c08e1173703234cc2913757f237ee916087498aklu  );
4965c08e1173703234cc2913757f237ee916087498aklu
4975c08e1173703234cc2913757f237ee916087498aklu/**
4985c08e1173703234cc2913757f237ee916087498aklu  Free out resouce allocated from Legacy Boot Options.
4995c08e1173703234cc2913757f237ee916087498aklu
5005c08e1173703234cc2913757f237ee916087498aklu**/
5015c08e1173703234cc2913757f237ee916087498akluVOID
5025c08e1173703234cc2913757f237ee916087498akluBOpt_FreeLegacyOptions (
5035c08e1173703234cc2913757f237ee916087498aklu  VOID
5045c08e1173703234cc2913757f237ee916087498aklu  );
5055c08e1173703234cc2913757f237ee916087498aklu
5065c08e1173703234cc2913757f237ee916087498aklu/**
5075c08e1173703234cc2913757f237ee916087498aklu  Free resources allocated in Allocate Rountine.
5085c08e1173703234cc2913757f237ee916087498aklu
5095c08e1173703234cc2913757f237ee916087498aklu  @param FreeMenu        Menu to be freed
5105c08e1173703234cc2913757f237ee916087498aklu
5115c08e1173703234cc2913757f237ee916087498aklu**/
5125c08e1173703234cc2913757f237ee916087498akluVOID
5135c08e1173703234cc2913757f237ee916087498akluBOpt_FreeMenu (
5145c08e1173703234cc2913757f237ee916087498aklu  BM_MENU_OPTION        *FreeMenu
5155c08e1173703234cc2913757f237ee916087498aklu  );
5165c08e1173703234cc2913757f237ee916087498aklu
5175c08e1173703234cc2913757f237ee916087498aklu
5185c08e1173703234cc2913757f237ee916087498aklu/**
5195c08e1173703234cc2913757f237ee916087498aklu
5205c08e1173703234cc2913757f237ee916087498aklu  Append file name to existing file name.
5215c08e1173703234cc2913757f237ee916087498aklu
5225c08e1173703234cc2913757f237ee916087498aklu  @param Str1  The existing file name
5235c08e1173703234cc2913757f237ee916087498aklu  @param Str2  The file name to be appended
5245c08e1173703234cc2913757f237ee916087498aklu
5255c08e1173703234cc2913757f237ee916087498aklu  @return Allocate a new string to hold the appended result.
5265c08e1173703234cc2913757f237ee916087498aklu          Caller is responsible to free the returned string.
5275c08e1173703234cc2913757f237ee916087498aklu
5285c08e1173703234cc2913757f237ee916087498aklu**/
5295c08e1173703234cc2913757f237ee916087498akluCHAR16*
5305c08e1173703234cc2913757f237ee916087498akluBOpt_AppendFileName (
5315c08e1173703234cc2913757f237ee916087498aklu  IN  CHAR16  *Str1,
5325c08e1173703234cc2913757f237ee916087498aklu  IN  CHAR16  *Str2
5335c08e1173703234cc2913757f237ee916087498aklu  );
5345c08e1173703234cc2913757f237ee916087498aklu
5355c08e1173703234cc2913757f237ee916087498aklu/**
5365c08e1173703234cc2913757f237ee916087498aklu
5375c08e1173703234cc2913757f237ee916087498aklu  Check whether current FileName point to a valid
5385c08e1173703234cc2913757f237ee916087498aklu  Efi Image File.
5395c08e1173703234cc2913757f237ee916087498aklu
5405c08e1173703234cc2913757f237ee916087498aklu  @param FileName  File need to be checked.
5415c08e1173703234cc2913757f237ee916087498aklu
5425c08e1173703234cc2913757f237ee916087498aklu  @retval TRUE  Is Efi Image
5435c08e1173703234cc2913757f237ee916087498aklu  @retval FALSE Not a valid Efi Image
5445c08e1173703234cc2913757f237ee916087498aklu
5455c08e1173703234cc2913757f237ee916087498aklu**/
5465c08e1173703234cc2913757f237ee916087498akluBOOLEAN
5475c08e1173703234cc2913757f237ee916087498akluBOpt_IsEfiImageName (
5485c08e1173703234cc2913757f237ee916087498aklu  IN UINT16  *FileName
5495c08e1173703234cc2913757f237ee916087498aklu  );
5505c08e1173703234cc2913757f237ee916087498aklu
5515c08e1173703234cc2913757f237ee916087498aklu/**
5525c08e1173703234cc2913757f237ee916087498aklu
5535c08e1173703234cc2913757f237ee916087498aklu  Check whether current FileName point to a valid Efi Application
5545c08e1173703234cc2913757f237ee916087498aklu
5555c08e1173703234cc2913757f237ee916087498aklu  @param Dir       Pointer to current Directory
5565c08e1173703234cc2913757f237ee916087498aklu  @param FileName  Pointer to current File name.
5575c08e1173703234cc2913757f237ee916087498aklu
5585c08e1173703234cc2913757f237ee916087498aklu  @retval TRUE      Is a valid Efi Application
5595c08e1173703234cc2913757f237ee916087498aklu  @retval FALSE     not a valid Efi Application
5605c08e1173703234cc2913757f237ee916087498aklu
5615c08e1173703234cc2913757f237ee916087498aklu**/
5625c08e1173703234cc2913757f237ee916087498akluBOOLEAN
5635c08e1173703234cc2913757f237ee916087498akluBOpt_IsEfiApp (
5645c08e1173703234cc2913757f237ee916087498aklu  IN EFI_FILE_HANDLE Dir,
5655c08e1173703234cc2913757f237ee916087498aklu  IN UINT16          *FileName
5665c08e1173703234cc2913757f237ee916087498aklu  );
5675c08e1173703234cc2913757f237ee916087498aklu
5685c08e1173703234cc2913757f237ee916087498aklu/**
5695c08e1173703234cc2913757f237ee916087498aklu
5705c08e1173703234cc2913757f237ee916087498aklu  Get the Option Number that has not been allocated for use.
5715c08e1173703234cc2913757f237ee916087498aklu
572a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy  @param Type  The type of Option.
573a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy
574a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy  @return The available Option Number.
575a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy
576a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy**/
577a5c3c546ea912177eb3ce3f82662718a3204d16fgikidyUINT16
578a5c3c546ea912177eb3ce3f82662718a3204d16fgikidyBOpt_GetOptionNumber (
579a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy  CHAR16        *Type
580a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy  );
581a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy
582a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy/**
583a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy
584a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy  Get the Option Number for Boot#### that does not used.
585a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy
5865c08e1173703234cc2913757f237ee916087498aklu  @return The available Option Number.
5875c08e1173703234cc2913757f237ee916087498aklu
5885c08e1173703234cc2913757f237ee916087498aklu**/
5895c08e1173703234cc2913757f237ee916087498akluUINT16
5905c08e1173703234cc2913757f237ee916087498akluBOpt_GetBootOptionNumber (
5915c08e1173703234cc2913757f237ee916087498aklu  VOID
5925c08e1173703234cc2913757f237ee916087498aklu  );
5935c08e1173703234cc2913757f237ee916087498aklu
5945c08e1173703234cc2913757f237ee916087498aklu/**
5955c08e1173703234cc2913757f237ee916087498aklu
596a5c3c546ea912177eb3ce3f82662718a3204d16fgikidyGet the Option Number for Driver#### that does not used.
5975c08e1173703234cc2913757f237ee916087498aklu
598a5c3c546ea912177eb3ce3f82662718a3204d16fgikidy@return The unused Option Number.
5995c08e1173703234cc2913757f237ee916087498aklu
6005c08e1173703234cc2913757f237ee916087498aklu**/
6015c08e1173703234cc2913757f237ee916087498akluUINT16
6025c08e1173703234cc2913757f237ee916087498akluBOpt_GetDriverOptionNumber (
6035c08e1173703234cc2913757f237ee916087498aklu  VOID
6045c08e1173703234cc2913757f237ee916087498aklu  );
6055c08e1173703234cc2913757f237ee916087498aklu
6065c08e1173703234cc2913757f237ee916087498aklu/**
6075c08e1173703234cc2913757f237ee916087498aklu  Create a menu entry give a Menu type.
6085c08e1173703234cc2913757f237ee916087498aklu
6095c08e1173703234cc2913757f237ee916087498aklu  @param MenuType        The Menu type to be created.
6105c08e1173703234cc2913757f237ee916087498aklu
6115c08e1173703234cc2913757f237ee916087498aklu
6125c08e1173703234cc2913757f237ee916087498aklu  @retval NULL           If failed to create the menu.
6135c08e1173703234cc2913757f237ee916087498aklu  @return                The menu.
6145c08e1173703234cc2913757f237ee916087498aklu
6155c08e1173703234cc2913757f237ee916087498aklu**/
6165c08e1173703234cc2913757f237ee916087498akluBM_MENU_ENTRY                     *
6175c08e1173703234cc2913757f237ee916087498akluBOpt_CreateMenuEntry (
6185c08e1173703234cc2913757f237ee916087498aklu  UINTN           MenuType
6195c08e1173703234cc2913757f237ee916087498aklu  );
6205c08e1173703234cc2913757f237ee916087498aklu
6215c08e1173703234cc2913757f237ee916087498aklu/**
6225c08e1173703234cc2913757f237ee916087498aklu  Free up all resource allocated for a BM_MENU_ENTRY.
6235c08e1173703234cc2913757f237ee916087498aklu
6245c08e1173703234cc2913757f237ee916087498aklu  @param MenuEntry   A pointer to BM_MENU_ENTRY.
6255c08e1173703234cc2913757f237ee916087498aklu
6265c08e1173703234cc2913757f237ee916087498aklu**/
6275c08e1173703234cc2913757f237ee916087498akluVOID
6285c08e1173703234cc2913757f237ee916087498akluBOpt_DestroyMenuEntry (
6295c08e1173703234cc2913757f237ee916087498aklu  BM_MENU_ENTRY         *MenuEntry
6305c08e1173703234cc2913757f237ee916087498aklu  );
6315c08e1173703234cc2913757f237ee916087498aklu
6325c08e1173703234cc2913757f237ee916087498aklu/**
6335c08e1173703234cc2913757f237ee916087498aklu  Get the Menu Entry from the list in Menu Entry List.
6345c08e1173703234cc2913757f237ee916087498aklu
6355c08e1173703234cc2913757f237ee916087498aklu  If MenuNumber is great or equal to the number of Menu
6365c08e1173703234cc2913757f237ee916087498aklu  Entry in the list, then ASSERT.
6375c08e1173703234cc2913757f237ee916087498aklu
6385c08e1173703234cc2913757f237ee916087498aklu  @param MenuOption      The Menu Entry List to read the menu entry.
6395c08e1173703234cc2913757f237ee916087498aklu  @param MenuNumber      The index of Menu Entry.
6405c08e1173703234cc2913757f237ee916087498aklu
6415c08e1173703234cc2913757f237ee916087498aklu  @return The Menu Entry.
6425c08e1173703234cc2913757f237ee916087498aklu
6435c08e1173703234cc2913757f237ee916087498aklu**/
6445c08e1173703234cc2913757f237ee916087498akluBM_MENU_ENTRY                     *
6455c08e1173703234cc2913757f237ee916087498akluBOpt_GetMenuEntry (
6465c08e1173703234cc2913757f237ee916087498aklu  BM_MENU_OPTION      *MenuOption,
6475c08e1173703234cc2913757f237ee916087498aklu  UINTN               MenuNumber
6485c08e1173703234cc2913757f237ee916087498aklu  );
6495c08e1173703234cc2913757f237ee916087498aklu
6505c08e1173703234cc2913757f237ee916087498aklu//
6515c08e1173703234cc2913757f237ee916087498aklu// Locate all serial io devices for console
6525c08e1173703234cc2913757f237ee916087498aklu//
6535c08e1173703234cc2913757f237ee916087498aklu/**
6545c08e1173703234cc2913757f237ee916087498aklu  Build a list containing all serial devices.
6555c08e1173703234cc2913757f237ee916087498aklu
6565c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS The function complete successfully.
6575c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_UNSUPPORTED No serial ports present.
6585c08e1173703234cc2913757f237ee916087498aklu
6595c08e1173703234cc2913757f237ee916087498aklu**/
6605c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
6615c08e1173703234cc2913757f237ee916087498akluLocateSerialIo (
6625c08e1173703234cc2913757f237ee916087498aklu  VOID
6635c08e1173703234cc2913757f237ee916087498aklu  );
6645c08e1173703234cc2913757f237ee916087498aklu
6655c08e1173703234cc2913757f237ee916087498aklu//
6665c08e1173703234cc2913757f237ee916087498aklu// Initializing Console menu
6675c08e1173703234cc2913757f237ee916087498aklu//
6685c08e1173703234cc2913757f237ee916087498aklu/**
6695c08e1173703234cc2913757f237ee916087498aklu  Build up ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
6705c08e1173703234cc2913757f237ee916087498aklu
6715c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function always complete successfully.
6725c08e1173703234cc2913757f237ee916087498aklu
6735c08e1173703234cc2913757f237ee916087498aklu**/
6745c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
6755c08e1173703234cc2913757f237ee916087498akluGetAllConsoles(
6765c08e1173703234cc2913757f237ee916087498aklu  VOID
6775c08e1173703234cc2913757f237ee916087498aklu  );
6785c08e1173703234cc2913757f237ee916087498aklu
6795c08e1173703234cc2913757f237ee916087498aklu//
6805c08e1173703234cc2913757f237ee916087498aklu// Get current mode information
6815c08e1173703234cc2913757f237ee916087498aklu//
6825c08e1173703234cc2913757f237ee916087498aklu/**
6835c08e1173703234cc2913757f237ee916087498aklu  Get mode number according to column and row
6845c08e1173703234cc2913757f237ee916087498aklu
6855c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
6865c08e1173703234cc2913757f237ee916087498aklu**/
6875c08e1173703234cc2913757f237ee916087498akluVOID
6885c08e1173703234cc2913757f237ee916087498akluGetConsoleOutMode (
6895c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA    *CallbackData
6905c08e1173703234cc2913757f237ee916087498aklu  );
6915c08e1173703234cc2913757f237ee916087498aklu
6925c08e1173703234cc2913757f237ee916087498aklu//
6935c08e1173703234cc2913757f237ee916087498aklu// Cleaning up console menu
6945c08e1173703234cc2913757f237ee916087498aklu//
6955c08e1173703234cc2913757f237ee916087498aklu/**
6965c08e1173703234cc2913757f237ee916087498aklu  Free ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
6975c08e1173703234cc2913757f237ee916087498aklu
6985c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function always complete successfully.
6995c08e1173703234cc2913757f237ee916087498aklu**/
7005c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
7015c08e1173703234cc2913757f237ee916087498akluFreeAllConsoles (
7025c08e1173703234cc2913757f237ee916087498aklu  VOID
7035c08e1173703234cc2913757f237ee916087498aklu  );
7045c08e1173703234cc2913757f237ee916087498aklu
7055c08e1173703234cc2913757f237ee916087498aklu/**
7065c08e1173703234cc2913757f237ee916087498aklu  Update the device path that describing a terminal device
7075c08e1173703234cc2913757f237ee916087498aklu  based on the new BaudRate, Data Bits, parity and Stop Bits
7085c08e1173703234cc2913757f237ee916087498aklu  set.
7095c08e1173703234cc2913757f237ee916087498aklu
7105c08e1173703234cc2913757f237ee916087498aklu  @param DevicePath     The devicepath protocol instance wanted to be updated.
7115c08e1173703234cc2913757f237ee916087498aklu
7125c08e1173703234cc2913757f237ee916087498aklu**/
7135c08e1173703234cc2913757f237ee916087498akluVOID
7145c08e1173703234cc2913757f237ee916087498akluChangeVariableDevicePath (
7155c08e1173703234cc2913757f237ee916087498aklu  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath
7165c08e1173703234cc2913757f237ee916087498aklu  );
7175c08e1173703234cc2913757f237ee916087498aklu
7185c08e1173703234cc2913757f237ee916087498aklu/**
7195c08e1173703234cc2913757f237ee916087498aklu  Update the multi-instance device path of Terminal Device based on
7205c08e1173703234cc2913757f237ee916087498aklu  the global TerminalMenu. If ChangeTernimal is TRUE, the terminal
7215c08e1173703234cc2913757f237ee916087498aklu  device path in the Terminal Device in TerminalMenu is also updated.
7225c08e1173703234cc2913757f237ee916087498aklu
7235c08e1173703234cc2913757f237ee916087498aklu  @param DevicePath      The multi-instance device path.
7245c08e1173703234cc2913757f237ee916087498aklu  @param ChangeTerminal  TRUE, then device path in the Terminal Device
7255c08e1173703234cc2913757f237ee916087498aklu                         in TerminalMenu is also updated; FALSE, no update.
7265c08e1173703234cc2913757f237ee916087498aklu
7275c08e1173703234cc2913757f237ee916087498aklu  @return EFI_SUCCESS    The function completes successfully.
7285c08e1173703234cc2913757f237ee916087498aklu
7295c08e1173703234cc2913757f237ee916087498aklu**/
7305c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
7315c08e1173703234cc2913757f237ee916087498akluChangeTerminalDevicePath (
7328e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydong  IN OUT EFI_DEVICE_PATH_PROTOCOL  **DevicePath,
7335c08e1173703234cc2913757f237ee916087498aklu  IN BOOLEAN                   ChangeTerminal
7345c08e1173703234cc2913757f237ee916087498aklu  );
7355c08e1173703234cc2913757f237ee916087498aklu
7365c08e1173703234cc2913757f237ee916087498aklu//
7375c08e1173703234cc2913757f237ee916087498aklu// Variable operation by menu selection
7385c08e1173703234cc2913757f237ee916087498aklu//
7395c08e1173703234cc2913757f237ee916087498aklu/**
7405c08e1173703234cc2913757f237ee916087498aklu  This function create a currently loaded Boot Option from
7415c08e1173703234cc2913757f237ee916087498aklu  the BMM. It then appends this Boot Option to the end of
7425c08e1173703234cc2913757f237ee916087498aklu  the "BootOrder" list. It also append this Boot Opotion to the end
7435c08e1173703234cc2913757f237ee916087498aklu  of BootOptionMenu.
7445c08e1173703234cc2913757f237ee916087498aklu
7455c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData           The BMM context data.
7465c08e1173703234cc2913757f237ee916087498aklu  @param NvRamMap               The file explorer formset internal state.
7475c08e1173703234cc2913757f237ee916087498aklu
7485c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES  If not enought memory to complete the operation.
7495c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS           If function completes successfully.
7505c08e1173703234cc2913757f237ee916087498aklu
7515c08e1173703234cc2913757f237ee916087498aklu**/
7525c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
7535c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootOption (
7545c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA                   *CallbackData,
7555c08e1173703234cc2913757f237ee916087498aklu  IN  FILE_EXPLORER_NV_DATA               *NvRamMap
7565c08e1173703234cc2913757f237ee916087498aklu  );
7575c08e1173703234cc2913757f237ee916087498aklu
7585c08e1173703234cc2913757f237ee916087498aklu/**
7595c08e1173703234cc2913757f237ee916087498aklu  Delete Boot Option that represent a Deleted state in BootOptionMenu.
7605c08e1173703234cc2913757f237ee916087498aklu  After deleting this boot option, call Var_ChangeBootOrder to
7615c08e1173703234cc2913757f237ee916087498aklu  make sure BootOrder is in valid state.
7625c08e1173703234cc2913757f237ee916087498aklu
7635c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS   If all boot load option EFI Variables corresponding to
7645c08e1173703234cc2913757f237ee916087498aklu                        BM_LOAD_CONTEXT marked for deletion is deleted
7655c08e1173703234cc2913757f237ee916087498aklu  @return Others        If failed to update the "BootOrder" variable after deletion.
7665c08e1173703234cc2913757f237ee916087498aklu
7675c08e1173703234cc2913757f237ee916087498aklu**/
7685c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
7695c08e1173703234cc2913757f237ee916087498akluVar_DelBootOption (
7705c08e1173703234cc2913757f237ee916087498aklu  VOID
7715c08e1173703234cc2913757f237ee916087498aklu  );
7725c08e1173703234cc2913757f237ee916087498aklu
7735c08e1173703234cc2913757f237ee916087498aklu/**
7745c08e1173703234cc2913757f237ee916087498aklu  After any operation on Boot####, there will be a discrepancy in BootOrder.
7755c08e1173703234cc2913757f237ee916087498aklu  Since some are missing but in BootOrder, while some are present but are
7765c08e1173703234cc2913757f237ee916087498aklu  not reflected by BootOrder. Then a function rebuild BootOrder from
7775c08e1173703234cc2913757f237ee916087498aklu  scratch by content from BootOptionMenu is needed.
7785c08e1173703234cc2913757f237ee916087498aklu
7795c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS  The boot order is updated successfully.
7805c08e1173703234cc2913757f237ee916087498aklu  @return  other than EFI_SUCCESS if failed to change the "BootOrder" EFI Variable.
7815c08e1173703234cc2913757f237ee916087498aklu
7825c08e1173703234cc2913757f237ee916087498aklu**/
7835c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
7845c08e1173703234cc2913757f237ee916087498akluVar_ChangeBootOrder (
7855c08e1173703234cc2913757f237ee916087498aklu  VOID
7865c08e1173703234cc2913757f237ee916087498aklu  );
7875c08e1173703234cc2913757f237ee916087498aklu
7885c08e1173703234cc2913757f237ee916087498aklu/**
7895c08e1173703234cc2913757f237ee916087498aklu  This function create a currently loaded Drive Option from
7905c08e1173703234cc2913757f237ee916087498aklu  the BMM. It then appends this Driver Option to the end of
7915c08e1173703234cc2913757f237ee916087498aklu  the "DriverOrder" list. It append this Driver Opotion to the end
7925c08e1173703234cc2913757f237ee916087498aklu  of DriverOptionMenu.
7935c08e1173703234cc2913757f237ee916087498aklu
7945c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
7955c08e1173703234cc2913757f237ee916087498aklu  @param HiiHandle       The HII handle associated with the BMM formset.
7965c08e1173703234cc2913757f237ee916087498aklu  @param DescriptionData The description of this driver option.
7975c08e1173703234cc2913757f237ee916087498aklu  @param OptionalData    The optional load option.
7985c08e1173703234cc2913757f237ee916087498aklu  @param ForceReconnect  If to force reconnect.
7995c08e1173703234cc2913757f237ee916087498aklu
8005c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES If not enought memory to complete the operation.
8015c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS          If function completes successfully.
8025c08e1173703234cc2913757f237ee916087498aklu
8035c08e1173703234cc2913757f237ee916087498aklu**/
8045c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8055c08e1173703234cc2913757f237ee916087498akluVar_UpdateDriverOption (
8065c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA         *CallbackData,
8075c08e1173703234cc2913757f237ee916087498aklu  IN  EFI_HII_HANDLE            HiiHandle,
8085c08e1173703234cc2913757f237ee916087498aklu  IN  UINT16                    *DescriptionData,
8095c08e1173703234cc2913757f237ee916087498aklu  IN  UINT16                    *OptionalData,
8105c08e1173703234cc2913757f237ee916087498aklu  IN  UINT8                     ForceReconnect
8115c08e1173703234cc2913757f237ee916087498aklu  );
8125c08e1173703234cc2913757f237ee916087498aklu
8135c08e1173703234cc2913757f237ee916087498aklu/**
8145c08e1173703234cc2913757f237ee916087498aklu  Delete Load Option that represent a Deleted state in BootOptionMenu.
8155c08e1173703234cc2913757f237ee916087498aklu  After deleting this Driver option, call Var_ChangeDriverOrder to
8165c08e1173703234cc2913757f237ee916087498aklu  make sure DriverOrder is in valid state.
8175c08e1173703234cc2913757f237ee916087498aklu
8185c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS Load Option is successfully updated.
8195c08e1173703234cc2913757f237ee916087498aklu  @return Other value than EFI_SUCCESS if failed to update "Driver Order" EFI
8205c08e1173703234cc2913757f237ee916087498aklu          Variable.
8215c08e1173703234cc2913757f237ee916087498aklu
8225c08e1173703234cc2913757f237ee916087498aklu**/
8235c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8245c08e1173703234cc2913757f237ee916087498akluVar_DelDriverOption (
8255c08e1173703234cc2913757f237ee916087498aklu  VOID
8265c08e1173703234cc2913757f237ee916087498aklu  );
8275c08e1173703234cc2913757f237ee916087498aklu
8285c08e1173703234cc2913757f237ee916087498aklu/**
8295c08e1173703234cc2913757f237ee916087498aklu  After any operation on Driver####, there will be a discrepancy in
8305c08e1173703234cc2913757f237ee916087498aklu  DriverOrder. Since some are missing but in DriverOrder, while some
8315c08e1173703234cc2913757f237ee916087498aklu  are present but are not reflected by DriverOrder. Then a function
8325c08e1173703234cc2913757f237ee916087498aklu  rebuild DriverOrder from scratch by content from DriverOptionMenu is
8335c08e1173703234cc2913757f237ee916087498aklu  needed.
8345c08e1173703234cc2913757f237ee916087498aklu
8355c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS  The driver order is updated successfully.
8365c08e1173703234cc2913757f237ee916087498aklu  @return  other than EFI_SUCCESS if failed to set the "DriverOrder" EFI Variable.
8375c08e1173703234cc2913757f237ee916087498aklu
8385c08e1173703234cc2913757f237ee916087498aklu**/
8395c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8405c08e1173703234cc2913757f237ee916087498akluVar_ChangeDriverOrder (
8415c08e1173703234cc2913757f237ee916087498aklu  VOID
8425c08e1173703234cc2913757f237ee916087498aklu  );
8435c08e1173703234cc2913757f237ee916087498aklu
8445c08e1173703234cc2913757f237ee916087498aklu/**
8455c08e1173703234cc2913757f237ee916087498aklu  This function delete and build multi-instance device path ConIn
8465c08e1173703234cc2913757f237ee916087498aklu  console device.
8475c08e1173703234cc2913757f237ee916087498aklu
8485c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function complete successfully.
8495c08e1173703234cc2913757f237ee916087498aklu  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8505c08e1173703234cc2913757f237ee916087498aklu**/
8515c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8525c08e1173703234cc2913757f237ee916087498akluVar_UpdateConsoleInpOption (
8535c08e1173703234cc2913757f237ee916087498aklu  VOID
8545c08e1173703234cc2913757f237ee916087498aklu  );
8555c08e1173703234cc2913757f237ee916087498aklu
8565c08e1173703234cc2913757f237ee916087498aklu/**
8575c08e1173703234cc2913757f237ee916087498aklu  This function delete and build multi-instance device path ConOut console device.
8585c08e1173703234cc2913757f237ee916087498aklu
8595c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function complete successfully.
8605c08e1173703234cc2913757f237ee916087498aklu  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8615c08e1173703234cc2913757f237ee916087498aklu**/
8625c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8635c08e1173703234cc2913757f237ee916087498akluVar_UpdateConsoleOutOption (
8645c08e1173703234cc2913757f237ee916087498aklu  VOID
8655c08e1173703234cc2913757f237ee916087498aklu  );
8665c08e1173703234cc2913757f237ee916087498aklu
8675c08e1173703234cc2913757f237ee916087498aklu/**
8685c08e1173703234cc2913757f237ee916087498aklu  This function delete and build multi-instance device path ErrOut console device.
8695c08e1173703234cc2913757f237ee916087498aklu
8705c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function complete successfully.
8715c08e1173703234cc2913757f237ee916087498aklu  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8725c08e1173703234cc2913757f237ee916087498aklu**/
8735c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
8745c08e1173703234cc2913757f237ee916087498akluVar_UpdateErrorOutOption (
8755c08e1173703234cc2913757f237ee916087498aklu  VOID
8765c08e1173703234cc2913757f237ee916087498aklu  );
8775c08e1173703234cc2913757f237ee916087498aklu
8785c08e1173703234cc2913757f237ee916087498aklu/**
8795c08e1173703234cc2913757f237ee916087498aklu  Update the device path of "ConOut", "ConIn" and "ErrOut" based on the new BaudRate, Data Bits,
8805c08e1173703234cc2913757f237ee916087498aklu  parity and stop Bits set.
8815c08e1173703234cc2913757f237ee916087498aklu
8825c08e1173703234cc2913757f237ee916087498aklu**/
8835c08e1173703234cc2913757f237ee916087498akluVOID
8845c08e1173703234cc2913757f237ee916087498akluVar_UpdateAllConsoleOption (
8855c08e1173703234cc2913757f237ee916087498aklu  VOID
8865c08e1173703234cc2913757f237ee916087498aklu  );
8875c08e1173703234cc2913757f237ee916087498aklu
8885c08e1173703234cc2913757f237ee916087498aklu/**
8895c08e1173703234cc2913757f237ee916087498aklu  This function update the "BootNext" EFI Variable. If there is no "BootNex" specified in BMM,
8905c08e1173703234cc2913757f237ee916087498aklu  this EFI Variable is deleted.
8915c08e1173703234cc2913757f237ee916087498aklu  It also update the BMM context data specified the "BootNext" value.
8925c08e1173703234cc2913757f237ee916087498aklu
8935c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
8945c08e1173703234cc2913757f237ee916087498aklu
8955c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function complete successfully.
8965c08e1173703234cc2913757f237ee916087498aklu  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
8975c08e1173703234cc2913757f237ee916087498aklu
8985c08e1173703234cc2913757f237ee916087498aklu**/
8995c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
9005c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootNext (
9015c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA            *CallbackData
9025c08e1173703234cc2913757f237ee916087498aklu  );
9035c08e1173703234cc2913757f237ee916087498aklu
9045c08e1173703234cc2913757f237ee916087498aklu/**
9055c08e1173703234cc2913757f237ee916087498aklu  This function update the "BootOrder" EFI Variable based on BMM Formset's NV map. It then refresh
9065c08e1173703234cc2913757f237ee916087498aklu  BootOptionMenu with the new "BootOrder" list.
9075c08e1173703234cc2913757f237ee916087498aklu
9085c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData           The BMM context data.
9095c08e1173703234cc2913757f237ee916087498aklu
9105c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS           The function complete successfully.
9115c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
9125c08e1173703234cc2913757f237ee916087498aklu  @return not The EFI variable can not be saved. See gRT->SetVariable for detail return information.
9135c08e1173703234cc2913757f237ee916087498aklu
9145c08e1173703234cc2913757f237ee916087498aklu**/
9155c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
9165c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootOrder (
9175c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA            *CallbackData
9185c08e1173703234cc2913757f237ee916087498aklu  );
9195c08e1173703234cc2913757f237ee916087498aklu
9205c08e1173703234cc2913757f237ee916087498aklu/**
9215c08e1173703234cc2913757f237ee916087498aklu  This function update the "DriverOrder" EFI Variable based on
9225c08e1173703234cc2913757f237ee916087498aklu  BMM Formset's NV map. It then refresh DriverOptionMenu
9235c08e1173703234cc2913757f237ee916087498aklu  with the new "DriverOrder" list.
9245c08e1173703234cc2913757f237ee916087498aklu
9255c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
9265c08e1173703234cc2913757f237ee916087498aklu
9275c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS           The function complete successfully.
9285c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
9295c08e1173703234cc2913757f237ee916087498aklu  @return The EFI variable can not be saved. See gRT->SetVariable for detail return information.
9305c08e1173703234cc2913757f237ee916087498aklu
9315c08e1173703234cc2913757f237ee916087498aklu**/
9325c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
9335c08e1173703234cc2913757f237ee916087498akluVar_UpdateDriverOrder (
9345c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA            *CallbackData
9355c08e1173703234cc2913757f237ee916087498aklu  );
9365c08e1173703234cc2913757f237ee916087498aklu
9375c08e1173703234cc2913757f237ee916087498aklu/**
938e24fc1032db5d5d2395260f6d7af94aa5a2a0802lgao  Update the legacy BBS boot option. VAR_LEGACY_DEV_ORDER and gEfiLegacyDevOrderVariableGuid EFI Variable
9395c08e1173703234cc2913757f237ee916087498aklu  is udpated with the new Legacy Boot order. The EFI Variable of "Boot####" and gEfiGlobalVariableGuid
9405c08e1173703234cc2913757f237ee916087498aklu  is also updated.
9415c08e1173703234cc2913757f237ee916087498aklu
9425c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The context data for BMM.
943720624cce0e74cdec8547a8d31b24b39210bf007Eric Dong  @param FormId          The form id.
9445c08e1173703234cc2913757f237ee916087498aklu
9455c08e1173703234cc2913757f237ee916087498aklu  @return EFI_SUCCESS    The function completed successfully.
946e24fc1032db5d5d2395260f6d7af94aa5a2a0802lgao  @retval EFI_NOT_FOUND  If VAR_LEGACY_DEV_ORDER and gEfiLegacyDevOrderVariableGuid EFI Variable can not be found.
9475c08e1173703234cc2913757f237ee916087498aklu
9485c08e1173703234cc2913757f237ee916087498aklu**/
9495c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
9505c08e1173703234cc2913757f237ee916087498akluVar_UpdateBBSOption (
951be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN BMM_CALLBACK_DATA            *CallbackData,
952be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN EFI_FORM_ID                  FormId
9535c08e1173703234cc2913757f237ee916087498aklu  );
9545c08e1173703234cc2913757f237ee916087498aklu
9555c08e1173703234cc2913757f237ee916087498aklu/**
9565c08e1173703234cc2913757f237ee916087498aklu  Update the Text Mode of Console.
9575c08e1173703234cc2913757f237ee916087498aklu
9585c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData  The context data for BMM.
9595c08e1173703234cc2913757f237ee916087498aklu
9605c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCSS If the Text Mode of Console is updated.
9615c08e1173703234cc2913757f237ee916087498aklu  @return Other value if the Text Mode of Console is not updated.
9625c08e1173703234cc2913757f237ee916087498aklu
9635c08e1173703234cc2913757f237ee916087498aklu**/
9645c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
9655c08e1173703234cc2913757f237ee916087498akluVar_UpdateConMode (
9665c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA            *CallbackData
9675c08e1173703234cc2913757f237ee916087498aklu  );
9685c08e1173703234cc2913757f237ee916087498aklu
9695c08e1173703234cc2913757f237ee916087498aklu//
9705c08e1173703234cc2913757f237ee916087498aklu// Following are page create and refresh functions
9715c08e1173703234cc2913757f237ee916087498aklu//
9725c08e1173703234cc2913757f237ee916087498aklu/**
9735c08e1173703234cc2913757f237ee916087498aklu  Refresh the global UpdateData structure.
9745c08e1173703234cc2913757f237ee916087498aklu
9755c08e1173703234cc2913757f237ee916087498aklu**/
9765c08e1173703234cc2913757f237ee916087498akluVOID
9775c08e1173703234cc2913757f237ee916087498akluRefreshUpdateData (
9785c08e1173703234cc2913757f237ee916087498aklu  VOID
9795c08e1173703234cc2913757f237ee916087498aklu  );
9805c08e1173703234cc2913757f237ee916087498aklu
9815c08e1173703234cc2913757f237ee916087498aklu/**
9825c08e1173703234cc2913757f237ee916087498aklu  Clean up the dynamic opcode at label and form specified by
9835c08e1173703234cc2913757f237ee916087498aklu  both LabelId.
9845c08e1173703234cc2913757f237ee916087498aklu
9855c08e1173703234cc2913757f237ee916087498aklu  @param LabelId         It is both the Form ID and Label ID for
9865c08e1173703234cc2913757f237ee916087498aklu                         opcode deletion.
9875c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
9885c08e1173703234cc2913757f237ee916087498aklu
9895c08e1173703234cc2913757f237ee916087498aklu**/
9905c08e1173703234cc2913757f237ee916087498akluVOID
9915c08e1173703234cc2913757f237ee916087498akluCleanUpPage (
9925c08e1173703234cc2913757f237ee916087498aklu  IN UINT16                           LabelId,
9935c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
9945c08e1173703234cc2913757f237ee916087498aklu  );
9955c08e1173703234cc2913757f237ee916087498aklu
9965c08e1173703234cc2913757f237ee916087498aklu/**
9975c08e1173703234cc2913757f237ee916087498aklu  Create a lit of boot option from global BootOptionMenu. It
9985c08e1173703234cc2913757f237ee916087498aklu  allow user to delete the boot option.
9995c08e1173703234cc2913757f237ee916087498aklu
10005c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10015c08e1173703234cc2913757f237ee916087498aklu
10025c08e1173703234cc2913757f237ee916087498aklu**/
10035c08e1173703234cc2913757f237ee916087498akluVOID
10045c08e1173703234cc2913757f237ee916087498akluUpdateBootDelPage (
10055c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10065c08e1173703234cc2913757f237ee916087498aklu  );
10075c08e1173703234cc2913757f237ee916087498aklu
10085c08e1173703234cc2913757f237ee916087498aklu/**
10095c08e1173703234cc2913757f237ee916087498aklu  Create a lit of driver option from global DriverMenu.
10105c08e1173703234cc2913757f237ee916087498aklu
10115c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10125c08e1173703234cc2913757f237ee916087498aklu**/
10135c08e1173703234cc2913757f237ee916087498akluVOID
10145c08e1173703234cc2913757f237ee916087498akluUpdateDrvAddHandlePage (
10155c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10165c08e1173703234cc2913757f237ee916087498aklu  );
10175c08e1173703234cc2913757f237ee916087498aklu
10185c08e1173703234cc2913757f237ee916087498aklu/**
10195c08e1173703234cc2913757f237ee916087498aklu  Create a lit of driver option from global DriverOptionMenu. It
10205c08e1173703234cc2913757f237ee916087498aklu  allow user to delete the driver option.
10215c08e1173703234cc2913757f237ee916087498aklu
10225c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10235c08e1173703234cc2913757f237ee916087498aklu**/
10245c08e1173703234cc2913757f237ee916087498akluVOID
10255c08e1173703234cc2913757f237ee916087498akluUpdateDrvDelPage (
10265c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10275c08e1173703234cc2913757f237ee916087498aklu  );
10285c08e1173703234cc2913757f237ee916087498aklu
10295c08e1173703234cc2913757f237ee916087498aklu/**
10305c08e1173703234cc2913757f237ee916087498aklu  Prepare the page to allow user to add description for a Driver Option.
10315c08e1173703234cc2913757f237ee916087498aklu
10325c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10335c08e1173703234cc2913757f237ee916087498aklu**/
10345c08e1173703234cc2913757f237ee916087498akluVOID
10355c08e1173703234cc2913757f237ee916087498akluUpdateDriverAddHandleDescPage (
10365c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10375c08e1173703234cc2913757f237ee916087498aklu  );
10385c08e1173703234cc2913757f237ee916087498aklu
10395c08e1173703234cc2913757f237ee916087498aklu/**
10405c08e1173703234cc2913757f237ee916087498aklu  Dispatch the correct update page function to call based on the UpdatePageId.
10415c08e1173703234cc2913757f237ee916087498aklu
10425c08e1173703234cc2913757f237ee916087498aklu  @param UpdatePageId    The form ID.
10435c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10445c08e1173703234cc2913757f237ee916087498aklu**/
10455c08e1173703234cc2913757f237ee916087498akluVOID
10465c08e1173703234cc2913757f237ee916087498akluUpdatePageBody (
10475c08e1173703234cc2913757f237ee916087498aklu  IN UINT16                           UpdatePageId,
10485c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10495c08e1173703234cc2913757f237ee916087498aklu  );
10505c08e1173703234cc2913757f237ee916087498aklu
10515c08e1173703234cc2913757f237ee916087498aklu/**
10525c08e1173703234cc2913757f237ee916087498aklu  Create the dynamic page to allow user to set the "BootNext" vaule.
10535c08e1173703234cc2913757f237ee916087498aklu
10545c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10555c08e1173703234cc2913757f237ee916087498aklu**/
10565c08e1173703234cc2913757f237ee916087498akluVOID
10575c08e1173703234cc2913757f237ee916087498akluUpdateBootNextPage (
10585c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10595c08e1173703234cc2913757f237ee916087498aklu  );
10605c08e1173703234cc2913757f237ee916087498aklu
10615c08e1173703234cc2913757f237ee916087498aklu/**
10625c08e1173703234cc2913757f237ee916087498aklu  Create the dynamic page to allow user to set the "TimeOut" vaule.
10635c08e1173703234cc2913757f237ee916087498aklu
10645c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10655c08e1173703234cc2913757f237ee916087498aklu**/
10665c08e1173703234cc2913757f237ee916087498akluVOID
10675c08e1173703234cc2913757f237ee916087498akluUpdateTimeOutPage (
10685c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10695c08e1173703234cc2913757f237ee916087498aklu  );
10705c08e1173703234cc2913757f237ee916087498aklu
10715c08e1173703234cc2913757f237ee916087498aklu/**
10725c08e1173703234cc2913757f237ee916087498aklu  Create the dynamic page which allows user to set the property such as Baud Rate, Data Bits,
10735c08e1173703234cc2913757f237ee916087498aklu  Parity, Stop Bits, Terminal Type.
10745c08e1173703234cc2913757f237ee916087498aklu
10755c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10765c08e1173703234cc2913757f237ee916087498aklu**/
10775c08e1173703234cc2913757f237ee916087498akluVOID
10785c08e1173703234cc2913757f237ee916087498akluUpdateTerminalPage (
10795c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10805c08e1173703234cc2913757f237ee916087498aklu  );
10815c08e1173703234cc2913757f237ee916087498aklu
10825c08e1173703234cc2913757f237ee916087498aklu/**
10835c08e1173703234cc2913757f237ee916087498aklu  Refresh the text mode page
10845c08e1173703234cc2913757f237ee916087498aklu
10855c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10865c08e1173703234cc2913757f237ee916087498aklu**/
10875c08e1173703234cc2913757f237ee916087498akluVOID
10885c08e1173703234cc2913757f237ee916087498akluUpdateConModePage (
10895c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
10905c08e1173703234cc2913757f237ee916087498aklu  );
10915c08e1173703234cc2913757f237ee916087498aklu
10925c08e1173703234cc2913757f237ee916087498aklu/**
10935c08e1173703234cc2913757f237ee916087498aklu  Create a list of Goto Opcode for all terminal devices logged
10945c08e1173703234cc2913757f237ee916087498aklu  by TerminaMenu. This list will be inserted to form FORM_CON_COM_SETUP_ID.
10955c08e1173703234cc2913757f237ee916087498aklu
10965c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
10975c08e1173703234cc2913757f237ee916087498aklu**/
10985c08e1173703234cc2913757f237ee916087498akluVOID
10995c08e1173703234cc2913757f237ee916087498akluUpdateConCOMPage (
11005c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
11015c08e1173703234cc2913757f237ee916087498aklu  );
11025c08e1173703234cc2913757f237ee916087498aklu
11035c08e1173703234cc2913757f237ee916087498aklu/**
11045c08e1173703234cc2913757f237ee916087498aklu  Create a dynamic page so that Legacy Device boot order
11055c08e1173703234cc2913757f237ee916087498aklu  can be set for specified device type.
11065c08e1173703234cc2913757f237ee916087498aklu
11075c08e1173703234cc2913757f237ee916087498aklu  @param UpdatePageId    The form ID. It also spefies the legacy device type.
11085c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
11095c08e1173703234cc2913757f237ee916087498aklu**/
11105c08e1173703234cc2913757f237ee916087498akluVOID
11115c08e1173703234cc2913757f237ee916087498akluUpdateSetLegacyDeviceOrderPage (
11125c08e1173703234cc2913757f237ee916087498aklu  IN UINT16                           UpdatePageId,
11135c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData
11145c08e1173703234cc2913757f237ee916087498aklu  );
11155c08e1173703234cc2913757f237ee916087498aklu
11165c08e1173703234cc2913757f237ee916087498aklu
11175c08e1173703234cc2913757f237ee916087498aklu/**
11185c08e1173703234cc2913757f237ee916087498aklu  Function opens and returns a file handle to the root directory of a volume.
11195c08e1173703234cc2913757f237ee916087498aklu
11205c08e1173703234cc2913757f237ee916087498aklu  @param DeviceHandle    A handle for a device
11215c08e1173703234cc2913757f237ee916087498aklu  @return A valid file handle or NULL is returned
11225c08e1173703234cc2913757f237ee916087498aklu**/
11235c08e1173703234cc2913757f237ee916087498akluEFI_FILE_HANDLE
11245c08e1173703234cc2913757f237ee916087498akluEfiLibOpenRoot (
11255c08e1173703234cc2913757f237ee916087498aklu  IN EFI_HANDLE       DeviceHandle
11265c08e1173703234cc2913757f237ee916087498aklu  );
11275c08e1173703234cc2913757f237ee916087498aklu
11285c08e1173703234cc2913757f237ee916087498aklu/**
11295c08e1173703234cc2913757f237ee916087498aklu  Function gets the file system information from an open file descriptor,
11305c08e1173703234cc2913757f237ee916087498aklu  and stores it in a buffer allocated from pool.
11315c08e1173703234cc2913757f237ee916087498aklu
11325c08e1173703234cc2913757f237ee916087498aklu  @param FHand           The file handle.
11335c08e1173703234cc2913757f237ee916087498aklu
11345c08e1173703234cc2913757f237ee916087498aklu  @return                A pointer to a buffer with file information.
11355c08e1173703234cc2913757f237ee916087498aklu                         NULL is returned if failed to get Vaolume Label Info.
11365c08e1173703234cc2913757f237ee916087498aklu**/
11375c08e1173703234cc2913757f237ee916087498akluEFI_FILE_SYSTEM_VOLUME_LABEL *
11385c08e1173703234cc2913757f237ee916087498akluEfiLibFileSystemVolumeLabelInfo (
11395c08e1173703234cc2913757f237ee916087498aklu  IN EFI_FILE_HANDLE      FHand
11405c08e1173703234cc2913757f237ee916087498aklu  );
11415c08e1173703234cc2913757f237ee916087498aklu
11425c08e1173703234cc2913757f237ee916087498aklu/**
11435c08e1173703234cc2913757f237ee916087498aklu
11445c08e1173703234cc2913757f237ee916087498aklu  Function gets the file information from an open file descriptor, and stores it
11455c08e1173703234cc2913757f237ee916087498aklu  in a buffer allocated from pool.
11465c08e1173703234cc2913757f237ee916087498aklu
11475c08e1173703234cc2913757f237ee916087498aklu  @param FHand           File Handle.
11485c08e1173703234cc2913757f237ee916087498aklu
11495c08e1173703234cc2913757f237ee916087498aklu  @return                A pointer to a buffer with file information or NULL is returned
11505c08e1173703234cc2913757f237ee916087498aklu
11515c08e1173703234cc2913757f237ee916087498aklu**/
11525c08e1173703234cc2913757f237ee916087498akluEFI_FILE_INFO *
11535c08e1173703234cc2913757f237ee916087498akluEfiLibFileInfo (
11545c08e1173703234cc2913757f237ee916087498aklu  IN EFI_FILE_HANDLE      FHand
11555c08e1173703234cc2913757f237ee916087498aklu  );
11565c08e1173703234cc2913757f237ee916087498aklu
11575c08e1173703234cc2913757f237ee916087498aklu/**
11585c08e1173703234cc2913757f237ee916087498aklu  Adjusts the size of a previously allocated buffer.
11595c08e1173703234cc2913757f237ee916087498aklu
11605c08e1173703234cc2913757f237ee916087498aklu  @param OldPool         A pointer to the buffer whose size is being adjusted.
11615c08e1173703234cc2913757f237ee916087498aklu  @param OldSize         The size of the current buffer.
11625c08e1173703234cc2913757f237ee916087498aklu  @param NewSize         The size of the new buffer.
11635c08e1173703234cc2913757f237ee916087498aklu
11645c08e1173703234cc2913757f237ee916087498aklu  @return   The newly allocated buffer. if NULL, allocation failed.
11655c08e1173703234cc2913757f237ee916087498aklu
11665c08e1173703234cc2913757f237ee916087498aklu**/
11675c08e1173703234cc2913757f237ee916087498akluVOID*
11685c08e1173703234cc2913757f237ee916087498akluEfiReallocatePool (
11695c08e1173703234cc2913757f237ee916087498aklu  IN VOID                 *OldPool,
11705c08e1173703234cc2913757f237ee916087498aklu  IN UINTN                OldSize,
11715c08e1173703234cc2913757f237ee916087498aklu  IN UINTN                NewSize
11725c08e1173703234cc2913757f237ee916087498aklu  );
11735c08e1173703234cc2913757f237ee916087498aklu
11745c08e1173703234cc2913757f237ee916087498aklu/**
11755c08e1173703234cc2913757f237ee916087498aklu  Function deletes the variable specified by VarName and VarGuid.
11765c08e1173703234cc2913757f237ee916087498aklu
11775c08e1173703234cc2913757f237ee916087498aklu
11785c08e1173703234cc2913757f237ee916087498aklu  @param VarName            A Null-terminated Unicode string that is
11795c08e1173703234cc2913757f237ee916087498aklu                            the name of the vendor's variable.
11805c08e1173703234cc2913757f237ee916087498aklu
11815c08e1173703234cc2913757f237ee916087498aklu  @param VarGuid            A unique identifier for the vendor.
11825c08e1173703234cc2913757f237ee916087498aklu
11835c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS           The variable was found and removed
11845c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_UNSUPPORTED       The variable store was inaccessible
11855c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_OUT_OF_RESOURCES  The temporary buffer was not available
11865c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_NOT_FOUND         The variable was not found
11875c08e1173703234cc2913757f237ee916087498aklu
11885c08e1173703234cc2913757f237ee916087498aklu**/
11895c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
11905c08e1173703234cc2913757f237ee916087498akluEfiLibDeleteVariable (
11915c08e1173703234cc2913757f237ee916087498aklu  IN CHAR16   *VarName,
11925c08e1173703234cc2913757f237ee916087498aklu  IN EFI_GUID *VarGuid
11935c08e1173703234cc2913757f237ee916087498aklu  );
11945c08e1173703234cc2913757f237ee916087498aklu
11955c08e1173703234cc2913757f237ee916087498aklu/**
11965c08e1173703234cc2913757f237ee916087498aklu  Duplicate a string.
11975c08e1173703234cc2913757f237ee916087498aklu
11985c08e1173703234cc2913757f237ee916087498aklu  @param Src             The source.
11995c08e1173703234cc2913757f237ee916087498aklu
12005c08e1173703234cc2913757f237ee916087498aklu  @return A new string which is duplicated copy of the source.
12015c08e1173703234cc2913757f237ee916087498aklu  @retval NULL If there is not enough memory.
12025c08e1173703234cc2913757f237ee916087498aklu
12035c08e1173703234cc2913757f237ee916087498aklu**/
12045c08e1173703234cc2913757f237ee916087498akluCHAR16                            *
12055c08e1173703234cc2913757f237ee916087498akluEfiStrDuplicate (
12065c08e1173703234cc2913757f237ee916087498aklu  IN CHAR16   *Src
12075c08e1173703234cc2913757f237ee916087498aklu  );
12085c08e1173703234cc2913757f237ee916087498aklu
12095c08e1173703234cc2913757f237ee916087498aklu/**
12105c08e1173703234cc2913757f237ee916087498aklu  Function is used to determine the number of device path instances
12115c08e1173703234cc2913757f237ee916087498aklu  that exist in a device path.
12125c08e1173703234cc2913757f237ee916087498aklu
12135c08e1173703234cc2913757f237ee916087498aklu
12145c08e1173703234cc2913757f237ee916087498aklu  @param DevicePath      A pointer to a device path data structure.
12155c08e1173703234cc2913757f237ee916087498aklu
12165c08e1173703234cc2913757f237ee916087498aklu  @return This function counts and returns the number of device path instances
12175c08e1173703234cc2913757f237ee916087498aklu          in DevicePath.
12185c08e1173703234cc2913757f237ee916087498aklu
12195c08e1173703234cc2913757f237ee916087498aklu**/
12205c08e1173703234cc2913757f237ee916087498akluUINTN
12215c08e1173703234cc2913757f237ee916087498akluEfiDevicePathInstanceCount (
12225c08e1173703234cc2913757f237ee916087498aklu  IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath
12235c08e1173703234cc2913757f237ee916087498aklu  );
12245c08e1173703234cc2913757f237ee916087498aklu
12255c08e1173703234cc2913757f237ee916087498aklu/**
12265c08e1173703234cc2913757f237ee916087498aklu  Create string tokens for a menu from its help strings and display strings
12275c08e1173703234cc2913757f237ee916087498aklu
12285c08e1173703234cc2913757f237ee916087498aklu
12295c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
12305c08e1173703234cc2913757f237ee916087498aklu  @param HiiHandle       Hii Handle of the package to be updated.
12315c08e1173703234cc2913757f237ee916087498aklu  @param MenuOption      The Menu whose string tokens need to be created
12325c08e1173703234cc2913757f237ee916087498aklu
12335c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS      string tokens created successfully
12345c08e1173703234cc2913757f237ee916087498aklu  @retval  others           contain some errors
12355c08e1173703234cc2913757f237ee916087498aklu
12365c08e1173703234cc2913757f237ee916087498aklu**/
12375c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
12385c08e1173703234cc2913757f237ee916087498akluCreateMenuStringToken (
12395c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA                *CallbackData,
12405c08e1173703234cc2913757f237ee916087498aklu  IN EFI_HII_HANDLE                   HiiHandle,
12415c08e1173703234cc2913757f237ee916087498aklu  IN BM_MENU_OPTION                   *MenuOption
12425c08e1173703234cc2913757f237ee916087498aklu  );
12435c08e1173703234cc2913757f237ee916087498aklu
12445c08e1173703234cc2913757f237ee916087498aklu/**
12455c08e1173703234cc2913757f237ee916087498aklu  Get a string from the Data Hub record based on
12465c08e1173703234cc2913757f237ee916087498aklu  a device path.
12475c08e1173703234cc2913757f237ee916087498aklu
12485c08e1173703234cc2913757f237ee916087498aklu  @param DevPath         The device Path.
12495c08e1173703234cc2913757f237ee916087498aklu
12505c08e1173703234cc2913757f237ee916087498aklu  @return A string located from the Data Hub records based on
12515c08e1173703234cc2913757f237ee916087498aklu          the device path.
12525c08e1173703234cc2913757f237ee916087498aklu  @retval NULL  If failed to get the String from Data Hub.
12535c08e1173703234cc2913757f237ee916087498aklu
12545c08e1173703234cc2913757f237ee916087498aklu**/
12555c08e1173703234cc2913757f237ee916087498akluUINT16 *
12565c08e1173703234cc2913757f237ee916087498akluEfiLibStrFromDatahub (
12575c08e1173703234cc2913757f237ee916087498aklu  IN EFI_DEVICE_PATH_PROTOCOL                 *DevPath
12585c08e1173703234cc2913757f237ee916087498aklu  );
12595c08e1173703234cc2913757f237ee916087498aklu
12605c08e1173703234cc2913757f237ee916087498aklu/**
12615c08e1173703234cc2913757f237ee916087498aklu  Initialize the Boot Maintenance Utitliy.
12625c08e1173703234cc2913757f237ee916087498aklu
12635c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS      utility ended successfully.
12645c08e1173703234cc2913757f237ee916087498aklu  @retval  others           contain some errors.
12655c08e1173703234cc2913757f237ee916087498aklu
12665c08e1173703234cc2913757f237ee916087498aklu**/
12675c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
12685c08e1173703234cc2913757f237ee916087498akluInitializeBM (
12695c08e1173703234cc2913757f237ee916087498aklu  VOID
12705c08e1173703234cc2913757f237ee916087498aklu  );
12715c08e1173703234cc2913757f237ee916087498aklu
12725c08e1173703234cc2913757f237ee916087498aklu/**
12735c08e1173703234cc2913757f237ee916087498aklu  Start boot maintenance manager
12745c08e1173703234cc2913757f237ee916087498aklu
12755c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS If BMM is invoked successfully.
12765c08e1173703234cc2913757f237ee916087498aklu  @return Other value if BMM return unsuccessfully.
12775c08e1173703234cc2913757f237ee916087498aklu
12785c08e1173703234cc2913757f237ee916087498aklu**/
12795c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
12805c08e1173703234cc2913757f237ee916087498akluBdsStartBootMaint (
12815c08e1173703234cc2913757f237ee916087498aklu  VOID
12825c08e1173703234cc2913757f237ee916087498aklu  );
12835c08e1173703234cc2913757f237ee916087498aklu
12845c08e1173703234cc2913757f237ee916087498aklu/**
12855c08e1173703234cc2913757f237ee916087498aklu  Intialize all the string depositories.
12865c08e1173703234cc2913757f237ee916087498aklu
12875c08e1173703234cc2913757f237ee916087498aklu**/
12885c08e1173703234cc2913757f237ee916087498akluVOID
12895c08e1173703234cc2913757f237ee916087498akluInitializeStringDepository (
12905c08e1173703234cc2913757f237ee916087498aklu  VOID
12915c08e1173703234cc2913757f237ee916087498aklu  );
12925c08e1173703234cc2913757f237ee916087498aklu
12935c08e1173703234cc2913757f237ee916087498aklu/**
12945c08e1173703234cc2913757f237ee916087498aklu  Fetch a usable string node from the string depository and return the string token.
12955c08e1173703234cc2913757f237ee916087498aklu
12965c08e1173703234cc2913757f237ee916087498aklu
12975c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData       The BMM context data.
12985c08e1173703234cc2913757f237ee916087498aklu  @param StringDepository   Pointer of the string depository.
12995c08e1173703234cc2913757f237ee916087498aklu
13005c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_STRING_ID    String token.
13015c08e1173703234cc2913757f237ee916087498aklu
13025c08e1173703234cc2913757f237ee916087498aklu**/
13035c08e1173703234cc2913757f237ee916087498akluEFI_STRING_ID
13045c08e1173703234cc2913757f237ee916087498akluGetStringTokenFromDepository (
13055c08e1173703234cc2913757f237ee916087498aklu  IN   BMM_CALLBACK_DATA     *CallbackData,
13065c08e1173703234cc2913757f237ee916087498aklu  IN   STRING_DEPOSITORY     *StringDepository
13075c08e1173703234cc2913757f237ee916087498aklu  );
13085c08e1173703234cc2913757f237ee916087498aklu
13095c08e1173703234cc2913757f237ee916087498aklu/**
13105c08e1173703234cc2913757f237ee916087498aklu  Reclaim string depositories by moving the current node pointer to list head..
13115c08e1173703234cc2913757f237ee916087498aklu**/
13125c08e1173703234cc2913757f237ee916087498akluVOID
13135c08e1173703234cc2913757f237ee916087498akluReclaimStringDepository (
13145c08e1173703234cc2913757f237ee916087498aklu  VOID
13155c08e1173703234cc2913757f237ee916087498aklu  );
13165c08e1173703234cc2913757f237ee916087498aklu
13175c08e1173703234cc2913757f237ee916087498aklu/**
13185c08e1173703234cc2913757f237ee916087498aklu  Release resource for all the string depositories.
13195c08e1173703234cc2913757f237ee916087498aklu
13205c08e1173703234cc2913757f237ee916087498aklu**/
13215c08e1173703234cc2913757f237ee916087498akluVOID
13225c08e1173703234cc2913757f237ee916087498akluCleanUpStringDepository (
13235c08e1173703234cc2913757f237ee916087498aklu  VOID
13245c08e1173703234cc2913757f237ee916087498aklu  );
13255c08e1173703234cc2913757f237ee916087498aklu
13265c08e1173703234cc2913757f237ee916087498aklu/**
13275c08e1173703234cc2913757f237ee916087498aklu  Function handling request to apply changes for BMM pages.
13285c08e1173703234cc2913757f237ee916087498aklu
13295c08e1173703234cc2913757f237ee916087498aklu  @param Private            Pointer to callback data buffer.
13305c08e1173703234cc2913757f237ee916087498aklu  @param CurrentFakeNVMap   Pointer to buffer holding data of various values used by BMM
13315c08e1173703234cc2913757f237ee916087498aklu  @param FormId             ID of the form which has sent the request to apply change.
13325c08e1173703234cc2913757f237ee916087498aklu
13335c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS      Change successfully applied.
13345c08e1173703234cc2913757f237ee916087498aklu  @retval  Other            Error occurs while trying to apply changes.
13355c08e1173703234cc2913757f237ee916087498aklu
13365c08e1173703234cc2913757f237ee916087498aklu**/
13375c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
13385c08e1173703234cc2913757f237ee916087498akluApplyChangeHandler (
13395c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA               *Private,
13405c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap,
13415c08e1173703234cc2913757f237ee916087498aklu  IN  EFI_FORM_ID                     FormId
13425c08e1173703234cc2913757f237ee916087498aklu  );
13435c08e1173703234cc2913757f237ee916087498aklu
13445c08e1173703234cc2913757f237ee916087498aklu/**
13455c08e1173703234cc2913757f237ee916087498aklu  Discard all changes done to the BMM pages such as Boot Order change,
13465c08e1173703234cc2913757f237ee916087498aklu  Driver order change.
13475c08e1173703234cc2913757f237ee916087498aklu
13485c08e1173703234cc2913757f237ee916087498aklu  @param Private         The BMM context data.
13495c08e1173703234cc2913757f237ee916087498aklu  @param CurrentFakeNVMap The current Fack NV Map.
13505c08e1173703234cc2913757f237ee916087498aklu
13515c08e1173703234cc2913757f237ee916087498aklu**/
13525c08e1173703234cc2913757f237ee916087498akluVOID
13535c08e1173703234cc2913757f237ee916087498akluDiscardChangeHandler (
13545c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA               *Private,
13555c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap
13565c08e1173703234cc2913757f237ee916087498aklu  );
13575c08e1173703234cc2913757f237ee916087498aklu
13585c08e1173703234cc2913757f237ee916087498aklu/**
13595c08e1173703234cc2913757f237ee916087498aklu  Dispatch the display to the next page based on NewPageId.
13605c08e1173703234cc2913757f237ee916087498aklu
13615c08e1173703234cc2913757f237ee916087498aklu  @param Private         The BMM context data.
13625c08e1173703234cc2913757f237ee916087498aklu  @param NewPageId       The original page ID.
13635c08e1173703234cc2913757f237ee916087498aklu
13645c08e1173703234cc2913757f237ee916087498aklu**/
13655c08e1173703234cc2913757f237ee916087498akluVOID
13665c08e1173703234cc2913757f237ee916087498akluUpdatePageId (
13675c08e1173703234cc2913757f237ee916087498aklu  BMM_CALLBACK_DATA              *Private,
13685c08e1173703234cc2913757f237ee916087498aklu  UINT16                         NewPageId
13695c08e1173703234cc2913757f237ee916087498aklu  );
13705c08e1173703234cc2913757f237ee916087498aklu
13715c08e1173703234cc2913757f237ee916087498aklu/**
13725c08e1173703234cc2913757f237ee916087498aklu  Boot a file selected by user at File Expoloer of BMM.
13735c08e1173703234cc2913757f237ee916087498aklu
13745c08e1173703234cc2913757f237ee916087498aklu  @param FileContext     The file context data, which contains the device path
13755c08e1173703234cc2913757f237ee916087498aklu                         of the file to be boot from.
13765c08e1173703234cc2913757f237ee916087498aklu
13775c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS    The function completed successfull.
13785c08e1173703234cc2913757f237ee916087498aklu  @return                 Other value if the boot from the file fails.
13795c08e1173703234cc2913757f237ee916087498aklu
13805c08e1173703234cc2913757f237ee916087498aklu**/
13815c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
13825c08e1173703234cc2913757f237ee916087498akluBootThisFile (
13835c08e1173703234cc2913757f237ee916087498aklu  IN BM_FILE_CONTEXT                   *FileContext
13845c08e1173703234cc2913757f237ee916087498aklu  );
13855c08e1173703234cc2913757f237ee916087498aklu
13865c08e1173703234cc2913757f237ee916087498aklu/**
13875c08e1173703234cc2913757f237ee916087498aklu  Update the file explower page with the refershed file system.
13885c08e1173703234cc2913757f237ee916087498aklu
13895c08e1173703234cc2913757f237ee916087498aklu
13905c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    BMM context data
13915c08e1173703234cc2913757f237ee916087498aklu  @param KeyValue        Key value to identify the type of data to expect.
13925c08e1173703234cc2913757f237ee916087498aklu
13935c08e1173703234cc2913757f237ee916087498aklu  @retval  TRUE           Inform the caller to create a callback packet to exit file explorer.
13945c08e1173703234cc2913757f237ee916087498aklu  @retval  FALSE          Indicate that there is no need to exit file explorer.
13955c08e1173703234cc2913757f237ee916087498aklu
13965c08e1173703234cc2913757f237ee916087498aklu**/
13975c08e1173703234cc2913757f237ee916087498akluBOOLEAN
13985c08e1173703234cc2913757f237ee916087498akluUpdateFileExplorer (
13995c08e1173703234cc2913757f237ee916087498aklu  IN BMM_CALLBACK_DATA            *CallbackData,
14005c08e1173703234cc2913757f237ee916087498aklu  IN UINT16                       KeyValue
14015c08e1173703234cc2913757f237ee916087498aklu  );
14025c08e1173703234cc2913757f237ee916087498aklu
14035c08e1173703234cc2913757f237ee916087498aklu/**
14045c08e1173703234cc2913757f237ee916087498aklu  This function processes the results of changes in configuration.
14055c08e1173703234cc2913757f237ee916087498aklu  When user select a interactive opcode, this callback will be triggered.
14065c08e1173703234cc2913757f237ee916087498aklu  Based on the Question(QuestionId) that triggers the callback, the corresponding
14075c08e1173703234cc2913757f237ee916087498aklu  actions is performed. It handles:
14085c08e1173703234cc2913757f237ee916087498aklu
14095c08e1173703234cc2913757f237ee916087498aklu  1) the addition of boot option.
14105c08e1173703234cc2913757f237ee916087498aklu  2) the addition of driver option.
14115c08e1173703234cc2913757f237ee916087498aklu  3) exit from file browser
14125c08e1173703234cc2913757f237ee916087498aklu  4) update of file content if a dir is selected.
14135c08e1173703234cc2913757f237ee916087498aklu  5) boot the file if a file is selected in "boot from file"
14145c08e1173703234cc2913757f237ee916087498aklu
14155c08e1173703234cc2913757f237ee916087498aklu
14165c08e1173703234cc2913757f237ee916087498aklu  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
14175c08e1173703234cc2913757f237ee916087498aklu  @param Action          Specifies the type of action taken by the browser.
14185c08e1173703234cc2913757f237ee916087498aklu  @param QuestionId      A unique value which is sent to the original exporting driver
14195c08e1173703234cc2913757f237ee916087498aklu                         so that it can identify the type of data to expect.
14205c08e1173703234cc2913757f237ee916087498aklu  @param Type            The type of value for the question.
14215c08e1173703234cc2913757f237ee916087498aklu  @param Value           A pointer to the data being sent to the original exporting driver.
14225c08e1173703234cc2913757f237ee916087498aklu  @param ActionRequest   On return, points to the action requested by the callback function.
14235c08e1173703234cc2913757f237ee916087498aklu
14245c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_SUCCESS           The callback successfully handled the action.
14255c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the variable and its data.
14265c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_DEVICE_ERROR      The variable could not be saved.
14275c08e1173703234cc2913757f237ee916087498aklu  @retval  EFI_UNSUPPORTED       The specified Action is not supported by the callback.
14285c08e1173703234cc2913757f237ee916087498aklu
14295c08e1173703234cc2913757f237ee916087498aklu**/
14305c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
14315c08e1173703234cc2913757f237ee916087498akluEFIAPI
14325c08e1173703234cc2913757f237ee916087498akluFileExplorerCallback (
14335c08e1173703234cc2913757f237ee916087498aklu  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
14345c08e1173703234cc2913757f237ee916087498aklu  IN  EFI_BROWSER_ACTION                     Action,
14355c08e1173703234cc2913757f237ee916087498aklu  IN  EFI_QUESTION_ID                        QuestionId,
14365c08e1173703234cc2913757f237ee916087498aklu  IN  UINT8                                  Type,
14375c08e1173703234cc2913757f237ee916087498aklu  IN  EFI_IFR_TYPE_VALUE                     *Value,
14385c08e1173703234cc2913757f237ee916087498aklu  OUT EFI_BROWSER_ACTION_REQUEST             *ActionRequest
14395c08e1173703234cc2913757f237ee916087498aklu  );
14405c08e1173703234cc2913757f237ee916087498aklu
14415c08e1173703234cc2913757f237ee916087498aklu/**
1442be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  This function applies changes in a driver's configuration.
1443be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Input is a Configuration, which has the routing data for this
1444be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  driver followed by name / value configuration pairs. The driver
1445be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  must apply those pairs to its configurable storage. If the
1446be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  driver's configuration is stored in a linear block of data
1447be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  and the driver's name / value pairs are in <BlockConfig>
1448be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  format, it may use the ConfigToBlock helper function (above) to
1449be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  simplify the job. Currently not implemented.
1450be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1451be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param[in]  This                Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
1452be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param[in]  Configuration       A null-terminated Unicode string in
1453be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  <ConfigString> format.
1454be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param[out] Progress            A pointer to a string filled in with the
1455be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  offset of the most recent '&' before the
1456be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  first failing name / value pair (or the
1457be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  beginn ing of the string if the failure
1458be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  is in the first name / value pair) or
1459be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  the terminating NULL if all was
1460be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  successful.
1461be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1462be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval EFI_SUCCESS             The results have been distributed or are
1463be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  awaiting distribution.
1464be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the
1465be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  parts of the results that must be
1466be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  stored awaiting possible future
1467be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  protocols.
1468be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the
1469be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  Results parameter would result
1470be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  in this type of error.
1471be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval EFI_NOT_FOUND           Target for the specified routing data
1472be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                                  was not found.
1473be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1474be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongEFI_STATUS
1475be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongEFIAPI
1476be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongFileExplorerRouteConfig (
1477be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
1478be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN CONST EFI_STRING                     Configuration,
1479be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  OUT EFI_STRING                          *Progress
1480be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1481be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1482be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
14835c08e1173703234cc2913757f237ee916087498aklu  Dispatch BMM formset and FileExplorer formset.
14845c08e1173703234cc2913757f237ee916087498aklu
14855c08e1173703234cc2913757f237ee916087498aklu
14865c08e1173703234cc2913757f237ee916087498aklu  @param CallbackData    The BMM context data.
14875c08e1173703234cc2913757f237ee916087498aklu
14885c08e1173703234cc2913757f237ee916087498aklu  @retval EFI_SUCCESS If function complete successfully.
14895c08e1173703234cc2913757f237ee916087498aklu  @return Other value if the Setup Browser process BMM's pages and
14905c08e1173703234cc2913757f237ee916087498aklu           return unsuccessfully.
14915c08e1173703234cc2913757f237ee916087498aklu
14925c08e1173703234cc2913757f237ee916087498aklu**/
14935c08e1173703234cc2913757f237ee916087498akluEFI_STATUS
14945c08e1173703234cc2913757f237ee916087498akluFormSetDispatcher (
14955c08e1173703234cc2913757f237ee916087498aklu  IN  BMM_CALLBACK_DATA    *CallbackData
14965c08e1173703234cc2913757f237ee916087498aklu  );
14975c08e1173703234cc2913757f237ee916087498aklu
14985c08e1173703234cc2913757f237ee916087498aklu/**
14995c08e1173703234cc2913757f237ee916087498aklu  Function returns the value of the specified variable.
15005c08e1173703234cc2913757f237ee916087498aklu
15015c08e1173703234cc2913757f237ee916087498aklu  @param Name            A Null-terminated Unicode string that is
15025c08e1173703234cc2913757f237ee916087498aklu                         the name of the vendor's variable.
15035c08e1173703234cc2913757f237ee916087498aklu  @param VendorGuid      A unique identifier for the vendor.
15045c08e1173703234cc2913757f237ee916087498aklu
15055c08e1173703234cc2913757f237ee916087498aklu  @return               The payload of the variable.
15065c08e1173703234cc2913757f237ee916087498aklu  @retval NULL          If the variable can't be read.
15075c08e1173703234cc2913757f237ee916087498aklu
15085c08e1173703234cc2913757f237ee916087498aklu**/
15095c08e1173703234cc2913757f237ee916087498akluVOID *
15105c08e1173703234cc2913757f237ee916087498akluEfiLibGetVariable (
15115c08e1173703234cc2913757f237ee916087498aklu  IN CHAR16               *Name,
15125c08e1173703234cc2913757f237ee916087498aklu  IN EFI_GUID             *VendorGuid
15135c08e1173703234cc2913757f237ee916087498aklu  );
15145c08e1173703234cc2913757f237ee916087498aklu
1515be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1516be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Get option number according to Boot#### and BootOrder variable.
1517be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  The value is saved as #### + 1.
1518be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1519be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1520be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1521be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1522be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetBootOrder (
1523be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1524be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1525be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1526be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1527be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Get driver option order from globalc DriverOptionMenu.
1528be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1529be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1530be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1531be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1532be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1533be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetDriverOrder (
1534be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1535be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1536be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1537be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1538be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Intall BootMaint and FileExplorer HiiPackages.
1539be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1540be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1541be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongEFI_STATUS
1542be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongInitBMPackage (
1543be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  VOID
1544be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1545be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1546be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1547be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Remvoe the intalled BootMaint and FileExplorer HiiPackages.
1548be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1549be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1550be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1551be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongFreeBMPackage (
1552be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  VOID
1553be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1554be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1555be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1556be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  According to LegacyDevOrder variable to get legacy FD\HD\CD\NET\BEV
1557be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  devices list .
1558be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1559be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1560be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1561be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1562be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetLegacyDeviceOrder (
1563be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1564be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1565be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1566be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1567be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1568be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Initialize console input device check box to ConsoleInCheck[MAX_MENU_NUMBER]
1569be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  in BMM_FAKE_NV_DATA structure.
1570be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1571be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1572be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1573be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1574be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1575be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetConsoleInCheck (
1576be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1577be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1578be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1579be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1580be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1581be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Initialize console output device check box to ConsoleOutCheck[MAX_MENU_NUMBER]
1582be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  in BMM_FAKE_NV_DATA structure.
1583be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1584be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1585be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1586be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1587be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1588be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetConsoleOutCheck (
1589be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1590be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1591be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1592be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1593be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1594be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Initialize standard error output device check box to ConsoleErrCheck[MAX_MENU_NUMBER]
1595be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  in BMM_FAKE_NV_DATA structure.
1596be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1597be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1598be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1599be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1600be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1601be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetConsoleErrCheck (
1602be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1603be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1604be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1605be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1606be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1607be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Initialize terminal attributes (baudrate, data rate, stop bits, parity and terminal type)
1608be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  to BMM_FAKE_NV_DATA structure.
1609be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1610be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param CallbackData    The BMM context data.
1611be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1612be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1613be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongVOID
1614be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongGetTerminalAttribute (
1615be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  BMM_CALLBACK_DATA    *CallbackData
1616be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1617be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1618be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong/**
1619be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1620be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  Find the first instance of this Protocol
1621be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  in the system and return it's interface.
1622be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1623be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1624be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param ProtocolGuid    Provides the protocol to search for
1625be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @param Interface       On return, a pointer to the first interface
1626be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong                         that matches ProtocolGuid
1627be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1628be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval  EFI_SUCCESS      A protocol instance matching ProtocolGuid was found
1629be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  @retval  EFI_NOT_FOUND    No protocol instances were found that match ProtocolGuid
1630be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
1631be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong**/
1632be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongEFI_STATUS
1633be9304f33f78a645512e76e6d44a69198d5f3c06Eric DongEfiLibLocateProtocol (
1634be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  IN  EFI_GUID    *ProtocolGuid,
1635be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  OUT VOID        **Interface
1636be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong  );
1637be9304f33f78a645512e76e6d44a69198d5f3c06Eric Dong
16385c08e1173703234cc2913757f237ee916087498aklu//
16395c08e1173703234cc2913757f237ee916087498aklu// Global variable in this program (defined in data.c)
16405c08e1173703234cc2913757f237ee916087498aklu//
16415c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             BootOptionMenu;
16425c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             DriverOptionMenu;
16435c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             FsOptionMenu;
16445c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             ConsoleInpMenu;
16455c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             ConsoleOutMenu;
16465c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             ConsoleErrMenu;
16475c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             DirectoryMenu;
16485c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             DriverMenu;
16495c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             TerminalMenu;
16505c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             LegacyFDMenu;
16515c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             LegacyHDMenu;
16525c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             LegacyCDMenu;
16535c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             LegacyNETMenu;
16545c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION             LegacyBEVMenu;
16555c08e1173703234cc2913757f237ee916087498akluextern UINT16                     TerminalType[];
16565c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR                   BaudRateList[19];
16575c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR                   DataBitsList[4];
16585c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR                   ParityList[5];
16595c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR                   StopBitsList[3];
16605c08e1173703234cc2913757f237ee916087498akluextern EFI_GUID                   TerminalTypeGuid[4];
16615c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *FileOptionStrDepository;
16625c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *ConsoleOptionStrDepository;
16635c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *BootOptionStrDepository;
16645c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *BootOptionHelpStrDepository;
16655c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *DriverOptionStrDepository;
16665c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *DriverOptionHelpStrDepository;
16675c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY          *TerminalStrDepository;
16685c08e1173703234cc2913757f237ee916087498akluextern EFI_DEVICE_PATH_PROTOCOL   EndDevicePath[];
16698e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydongextern UINT16                     mFlowControlType[2];
16708e491a81e0d4c98fabb974ebc16c4cc77cc56ecaydongextern UINT32                     mFlowControlValue[2];
167175bf9d0ecca38dfec9b645a6eb1119c025892304lgao//
167275bf9d0ecca38dfec9b645a6eb1119c025892304lgao// Shared IFR form update data
167375bf9d0ecca38dfec9b645a6eb1119c025892304lgao//
167475bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern VOID                        *mStartOpCodeHandle;
167575bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern VOID                        *mEndOpCodeHandle;
167675bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern EFI_IFR_GUID_LABEL          *mStartLabel;
167775bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern EFI_IFR_GUID_LABEL          *mEndLabel;
167875bf9d0ecca38dfec9b645a6eb1119c025892304lgao
16795c08e1173703234cc2913757f237ee916087498aklu#endif
1680