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