BootMaint.h revision 13078b3fadb4aaae2d6975ab96a7ad649017589f
15c08e1173703234cc2913757f237ee916087498aklu/** @file 25c08e1173703234cc2913757f237ee916087498aklu Header file for boot maintenance module. 35c08e1173703234cc2913757f237ee916087498aklu 413078b3fadb4aaae2d6975ab96a7ad649017589fkluCopyright (c) 2004 - 2009, Intel Corporation. <BR> 55c08e1173703234cc2913757f237ee916087498akluAll rights reserved. This 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_LEGACY_DEV_ORDER L"LegacyDevOrder" 275c08e1173703234cc2913757f237ee916087498aklu 285c08e1173703234cc2913757f237ee916087498aklu#define VAR_CON_OUT_MODE L"ConOutMode" 295c08e1173703234cc2913757f237ee916087498aklu 305c08e1173703234cc2913757f237ee916087498aklu/// 315c08e1173703234cc2913757f237ee916087498aklu/// Guid of a NV Variable which store the information about the 325c08e1173703234cc2913757f237ee916087498aklu/// FD/HD/CD/NET/BEV order 335c08e1173703234cc2913757f237ee916087498aklu/// 345c08e1173703234cc2913757f237ee916087498aklu#define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \ 355c08e1173703234cc2913757f237ee916087498aklu { \ 365c08e1173703234cc2913757f237ee916087498aklu 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \ 375c08e1173703234cc2913757f237ee916087498aklu } 385c08e1173703234cc2913757f237ee916087498aklu 395c08e1173703234cc2913757f237ee916087498aklu// 405c08e1173703234cc2913757f237ee916087498aklu// String Contant 415c08e1173703234cc2913757f237ee916087498aklu// 425c08e1173703234cc2913757f237ee916087498aklu#define STR_FLOPPY L"Floppy Drive #%02x" 435c08e1173703234cc2913757f237ee916087498aklu#define STR_HARDDISK L"HardDisk Drive #%02x" 445c08e1173703234cc2913757f237ee916087498aklu#define STR_CDROM L"ATAPI CDROM Drive #%02x" 455c08e1173703234cc2913757f237ee916087498aklu#define STR_NET L"NET Drive #%02x" 465c08e1173703234cc2913757f237ee916087498aklu#define STR_BEV L"BEV Drive #%02x" 475c08e1173703234cc2913757f237ee916087498aklu#define STR_FLOPPY_HELP L"Select Floppy Drive #%02x" 485c08e1173703234cc2913757f237ee916087498aklu#define STR_HARDDISK_HELP L"Select HardDisk Drive #%02x" 495c08e1173703234cc2913757f237ee916087498aklu#define STR_CDROM_HELP L"Select ATAPI CDROM Drive #%02x" 505c08e1173703234cc2913757f237ee916087498aklu#define STR_NET_HELP L"NET Drive #%02x" 515c08e1173703234cc2913757f237ee916087498aklu#define STR_BEV_HELP L"BEV Drive #%02x" 525c08e1173703234cc2913757f237ee916087498aklu 535c08e1173703234cc2913757f237ee916087498aklu// 545c08e1173703234cc2913757f237ee916087498aklu// Variable created with this flag will be "Efi:...." 555c08e1173703234cc2913757f237ee916087498aklu// 565c08e1173703234cc2913757f237ee916087498aklu#define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE 575c08e1173703234cc2913757f237ee916087498aklu 585c08e1173703234cc2913757f237ee916087498aklu// 595c08e1173703234cc2913757f237ee916087498aklu// Define Maxmim characters that will be accepted 605c08e1173703234cc2913757f237ee916087498aklu// 615c08e1173703234cc2913757f237ee916087498aklu#define MAX_CHAR 480 625c08e1173703234cc2913757f237ee916087498aklu#define MAX_CHAR_SIZE (MAX_CHAR * 2) 635c08e1173703234cc2913757f237ee916087498aklu 645c08e1173703234cc2913757f237ee916087498akluextern EFI_GUID mBootMaintGuid; 655c08e1173703234cc2913757f237ee916087498akluextern EFI_GUID mFileExplorerGuid; 6675bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern CHAR16 mFileExplorerStorageName[]; 67dedfc3bbc97e726e259bfadbdf22502133faa8a8lgaoextern CHAR16 mBootMaintStorageName[]; 685c08e1173703234cc2913757f237ee916087498aklu// 695c08e1173703234cc2913757f237ee916087498aklu// These are the VFR compiler generated data representing our VFR data. 705c08e1173703234cc2913757f237ee916087498aklu// 715c08e1173703234cc2913757f237ee916087498akluextern UINT8 BmBin[]; 725c08e1173703234cc2913757f237ee916087498akluextern UINT8 FEBin[]; 735c08e1173703234cc2913757f237ee916087498aklu 745c08e1173703234cc2913757f237ee916087498aklu// 755c08e1173703234cc2913757f237ee916087498aklu// Below are the number of options in Baudrate, Databits, 765c08e1173703234cc2913757f237ee916087498aklu// Parity and Stopbits selection for serial ports. 775c08e1173703234cc2913757f237ee916087498aklu// 785c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_BUADRATE 19 795c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_DATABITS 4 805c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_PARITY 5 815c08e1173703234cc2913757f237ee916087498aklu#define BM_COM_ATTR_STOPBITS 3 825c08e1173703234cc2913757f237ee916087498aklu 835c08e1173703234cc2913757f237ee916087498aklu// 845c08e1173703234cc2913757f237ee916087498aklu// Callback function helper 855c08e1173703234cc2913757f237ee916087498aklu// 865c08e1173703234cc2913757f237ee916087498aklu#define BMM_CALLBACK_DATA_SIGNATURE SIGNATURE_32 ('C', 'b', 'c', 'k') 875c08e1173703234cc2913757f237ee916087498aklu#define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE) 885c08e1173703234cc2913757f237ee916087498aklu 895c08e1173703234cc2913757f237ee916087498aklu#define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE) 905c08e1173703234cc2913757f237ee916087498aklu 915c08e1173703234cc2913757f237ee916087498aklu// 925c08e1173703234cc2913757f237ee916087498aklu// Enumeration type definition 935c08e1173703234cc2913757f237ee916087498aklu// 945c08e1173703234cc2913757f237ee916087498aklutypedef UINT8 BBS_TYPE; 955c08e1173703234cc2913757f237ee916087498aklu 9613078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _TYPE_OF_TERMINAL { 9713078b3fadb4aaae2d6975ab96a7ad649017589fklu TerminalTypePcAnsi = 0, 9813078b3fadb4aaae2d6975ab96a7ad649017589fklu TerminalTypeVt100, 9913078b3fadb4aaae2d6975ab96a7ad649017589fklu TerminalTypeVt100Plus, 10013078b3fadb4aaae2d6975ab96a7ad649017589fklu TerminalTypeVtUtf8 1015c08e1173703234cc2913757f237ee916087498aklu} TYPE_OF_TERMINAL; 1025c08e1173703234cc2913757f237ee916087498aklu 10313078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _FILE_EXPLORER_STATE { 10413078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerStateInActive = 0, 10513078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerStateBootFromFile, 10613078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerStateAddBootOption, 10713078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerStateAddDriverOptionState, 10813078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerStateUnknown 1095c08e1173703234cc2913757f237ee916087498aklu} FILE_EXPLORER_STATE; 1105c08e1173703234cc2913757f237ee916087498aklu 11113078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef enum _FILE_EXPLORER_DISPLAY_CONTEXT { 11213078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerDisplayFileSystem, 11313078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerDisplayDirectory, 11413078b3fadb4aaae2d6975ab96a7ad649017589fklu FileExplorerDisplayUnknown 1155c08e1173703234cc2913757f237ee916087498aklu} FILE_EXPLORER_DISPLAY_CONTEXT; 1165c08e1173703234cc2913757f237ee916087498aklu 1175c08e1173703234cc2913757f237ee916087498aklu// 1185c08e1173703234cc2913757f237ee916087498aklu// All of the signatures that will be used in list structure 1195c08e1173703234cc2913757f237ee916087498aklu// 1205c08e1173703234cc2913757f237ee916087498aklu#define BM_MENU_OPTION_SIGNATURE SIGNATURE_32 ('m', 'e', 'n', 'u') 1215c08e1173703234cc2913757f237ee916087498aklu#define BM_LOAD_OPTION_SIGNATURE SIGNATURE_32 ('l', 'o', 'a', 'd') 1225c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_OPTION_SIGNATURE SIGNATURE_32 ('c', 'n', 's', 'l') 1235c08e1173703234cc2913757f237ee916087498aklu#define BM_FILE_OPTION_SIGNATURE SIGNATURE_32 ('f', 'i', 'l', 'e') 1245c08e1173703234cc2913757f237ee916087498aklu#define BM_HANDLE_OPTION_SIGNATURE SIGNATURE_32 ('h', 'n', 'd', 'l') 1255c08e1173703234cc2913757f237ee916087498aklu#define BM_TERMINAL_OPTION_SIGNATURE SIGNATURE_32 ('t', 'r', 'm', 'l') 1265c08e1173703234cc2913757f237ee916087498aklu#define BM_MENU_ENTRY_SIGNATURE SIGNATURE_32 ('e', 'n', 't', 'r') 1275c08e1173703234cc2913757f237ee916087498aklu 1285c08e1173703234cc2913757f237ee916087498aklu#define BM_LOAD_CONTEXT_SELECT 0x0 1295c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_CONTEXT_SELECT 0x1 1305c08e1173703234cc2913757f237ee916087498aklu#define BM_FILE_CONTEXT_SELECT 0x2 1315c08e1173703234cc2913757f237ee916087498aklu#define BM_HANDLE_CONTEXT_SELECT 0x3 1325c08e1173703234cc2913757f237ee916087498aklu#define BM_TERMINAL_CONTEXT_SELECT 0x5 1335c08e1173703234cc2913757f237ee916087498aklu 1345c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_IN_CONTEXT_SELECT 0x6 1355c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7 1365c08e1173703234cc2913757f237ee916087498aklu#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8 1375c08e1173703234cc2913757f237ee916087498aklu#define BM_LEGACY_DEV_CONTEXT_SELECT 0x9 1385c08e1173703234cc2913757f237ee916087498aklu 1395c08e1173703234cc2913757f237ee916087498aklu// 1405c08e1173703234cc2913757f237ee916087498aklu// Buffer size for update data 1415c08e1173703234cc2913757f237ee916087498aklu// 1425c08e1173703234cc2913757f237ee916087498aklu#define UPDATE_DATA_SIZE 0x100000 1435c08e1173703234cc2913757f237ee916087498aklu 1445c08e1173703234cc2913757f237ee916087498aklu// 1455c08e1173703234cc2913757f237ee916087498aklu// Namespace of callback keys used in display and file system navigation 1465c08e1173703234cc2913757f237ee916087498aklu// 1475c08e1173703234cc2913757f237ee916087498aklu#define MAX_BBS_OFFSET 0xE000 1485c08e1173703234cc2913757f237ee916087498aklu#define NET_OPTION_OFFSET 0xD800 1495c08e1173703234cc2913757f237ee916087498aklu#define BEV_OPTION_OFFSET 0xD000 1505c08e1173703234cc2913757f237ee916087498aklu#define FD_OPTION_OFFSET 0xC000 1515c08e1173703234cc2913757f237ee916087498aklu#define HD_OPTION_OFFSET 0xB000 1525c08e1173703234cc2913757f237ee916087498aklu#define CD_OPTION_OFFSET 0xA000 1535c08e1173703234cc2913757f237ee916087498aklu#define FILE_OPTION_OFFSET 0x8000 1545c08e1173703234cc2913757f237ee916087498aklu#define FILE_OPTION_MASK 0x7FFF 1555c08e1173703234cc2913757f237ee916087498aklu#define HANDLE_OPTION_OFFSET 0x7000 1565c08e1173703234cc2913757f237ee916087498aklu#define CONSOLE_OPTION_OFFSET 0x6000 1575c08e1173703234cc2913757f237ee916087498aklu#define TERMINAL_OPTION_OFFSET 0x5000 1585c08e1173703234cc2913757f237ee916087498aklu#define CONFIG_OPTION_OFFSET 0x1200 1595c08e1173703234cc2913757f237ee916087498aklu#define KEY_VALUE_OFFSET 0x1100 1605c08e1173703234cc2913757f237ee916087498aklu#define FORM_ID_OFFSET 0x1000 1615c08e1173703234cc2913757f237ee916087498aklu 1625c08e1173703234cc2913757f237ee916087498aklu// 1635c08e1173703234cc2913757f237ee916087498aklu// VarOffset that will be used to create question 1645c08e1173703234cc2913757f237ee916087498aklu// all these values are computed from the structure 1655c08e1173703234cc2913757f237ee916087498aklu// defined below 1665c08e1173703234cc2913757f237ee916087498aklu// 1675c08e1173703234cc2913757f237ee916087498aklu#define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field))) 1685c08e1173703234cc2913757f237ee916087498aklu 1695c08e1173703234cc2913757f237ee916087498aklu// 1705c08e1173703234cc2913757f237ee916087498aklu// Question Id of Zero is invalid, so add an offset to it 1715c08e1173703234cc2913757f237ee916087498aklu// 1725c08e1173703234cc2913757f237ee916087498aklu#define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET) 1735c08e1173703234cc2913757f237ee916087498aklu 1745c08e1173703234cc2913757f237ee916087498aklu#define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut) 1755c08e1173703234cc2913757f237ee916087498aklu#define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext) 1765c08e1173703234cc2913757f237ee916087498aklu#define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate) 1775c08e1173703234cc2913757f237ee916087498aklu#define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate) 1785c08e1173703234cc2913757f237ee916087498aklu#define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits) 1795c08e1173703234cc2913757f237ee916087498aklu#define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity) 1805c08e1173703234cc2913757f237ee916087498aklu#define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType) 1815c08e1173703234cc2913757f237ee916087498aklu#define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate) 1825c08e1173703234cc2913757f237ee916087498aklu#define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate) 1835c08e1173703234cc2913757f237ee916087498aklu#define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits) 1845c08e1173703234cc2913757f237ee916087498aklu#define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity) 1855c08e1173703234cc2913757f237ee916087498aklu#define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType) 1865c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc) 1875c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive) 1885c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect) 1895c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1) 1905c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2) 1915c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1) 1925c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2) 1935c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1) 1945c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2) 1955c08e1173703234cc2913757f237ee916087498aklu#define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode) 1965c08e1173703234cc2913757f237ee916087498aklu#define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck) 1975c08e1173703234cc2913757f237ee916087498aklu#define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder) 1985c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted) 1995c08e1173703234cc2913757f237ee916087498aklu#define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel) 2005c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel) 2015c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData) 2025c08e1173703234cc2913757f237ee916087498aklu#define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate) 2035c08e1173703234cc2913757f237ee916087498aklu#define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate) 2045c08e1173703234cc2913757f237ee916087498aklu#define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits) 2055c08e1173703234cc2913757f237ee916087498aklu#define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity) 2065c08e1173703234cc2913757f237ee916087498aklu#define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType) 2075c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD) 2085c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD) 2095c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD) 2105c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET) 2115c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV) 2125c08e1173703234cc2913757f237ee916087498aklu 2135c08e1173703234cc2913757f237ee916087498aklu#define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut) 2145c08e1173703234cc2913757f237ee916087498aklu#define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext) 2155c08e1173703234cc2913757f237ee916087498aklu#define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate) 2165c08e1173703234cc2913757f237ee916087498aklu#define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate) 2175c08e1173703234cc2913757f237ee916087498aklu#define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits) 2185c08e1173703234cc2913757f237ee916087498aklu#define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity) 2195c08e1173703234cc2913757f237ee916087498aklu#define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType) 2205c08e1173703234cc2913757f237ee916087498aklu#define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate) 2215c08e1173703234cc2913757f237ee916087498aklu#define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate) 2225c08e1173703234cc2913757f237ee916087498aklu#define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits) 2235c08e1173703234cc2913757f237ee916087498aklu#define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity) 2245c08e1173703234cc2913757f237ee916087498aklu#define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType) 2255c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc) 2265c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive) 2275c08e1173703234cc2913757f237ee916087498aklu#define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect) 2285c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1) 2295c08e1173703234cc2913757f237ee916087498aklu#define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2) 2305c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1) 2315c08e1173703234cc2913757f237ee916087498aklu#define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2) 2325c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1) 2335c08e1173703234cc2913757f237ee916087498aklu#define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2) 2345c08e1173703234cc2913757f237ee916087498aklu#define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode) 2355c08e1173703234cc2913757f237ee916087498aklu#define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck) 2365c08e1173703234cc2913757f237ee916087498aklu#define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder) 2375c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted) 2385c08e1173703234cc2913757f237ee916087498aklu#define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel) 2395c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel) 2405c08e1173703234cc2913757f237ee916087498aklu#define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData) 2415c08e1173703234cc2913757f237ee916087498aklu#define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate) 2425c08e1173703234cc2913757f237ee916087498aklu#define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate) 2435c08e1173703234cc2913757f237ee916087498aklu#define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits) 2445c08e1173703234cc2913757f237ee916087498aklu#define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity) 2455c08e1173703234cc2913757f237ee916087498aklu#define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType) 2465c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD) 2475c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD) 2485c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD) 2495c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET) 2505c08e1173703234cc2913757f237ee916087498aklu#define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV) 2515c08e1173703234cc2913757f237ee916087498aklu 2525c08e1173703234cc2913757f237ee916087498aklu#define STRING_DEPOSITORY_NUMBER 8 2535c08e1173703234cc2913757f237ee916087498aklu 2545c08e1173703234cc2913757f237ee916087498aklu/// 2555c08e1173703234cc2913757f237ee916087498aklu/// Serial Ports attributes, first one is the value for 2565c08e1173703234cc2913757f237ee916087498aklu/// return from callback function, stringtoken is used to 2575c08e1173703234cc2913757f237ee916087498aklu/// display the value properly 2585c08e1173703234cc2913757f237ee916087498aklu/// 2595c08e1173703234cc2913757f237ee916087498aklutypedef struct { 2605c08e1173703234cc2913757f237ee916087498aklu UINTN Value; 2615c08e1173703234cc2913757f237ee916087498aklu UINT16 StringToken; 2625c08e1173703234cc2913757f237ee916087498aklu} COM_ATTR; 2635c08e1173703234cc2913757f237ee916087498aklu 2645c08e1173703234cc2913757f237ee916087498aklu#pragma pack(1) 2655c08e1173703234cc2913757f237ee916087498aklutypedef struct { 2665c08e1173703234cc2913757f237ee916087498aklu BBS_TYPE BbsType; 2675c08e1173703234cc2913757f237ee916087498aklu /// 2685c08e1173703234cc2913757f237ee916087498aklu /// Length = sizeof (UINT16) + SIZEOF (Data) 2695c08e1173703234cc2913757f237ee916087498aklu /// 2705c08e1173703234cc2913757f237ee916087498aklu UINT16 Length; 2715c08e1173703234cc2913757f237ee916087498aklu UINT16 *Data; 2725c08e1173703234cc2913757f237ee916087498aklu} BM_LEGACY_DEV_ORDER_CONTEXT; 2735c08e1173703234cc2913757f237ee916087498aklu#pragma pack() 2745c08e1173703234cc2913757f237ee916087498aklu 2755c08e1173703234cc2913757f237ee916087498aklutypedef struct { 2765c08e1173703234cc2913757f237ee916087498aklu UINT64 BaudRate; 2775c08e1173703234cc2913757f237ee916087498aklu UINT8 DataBits; 2785c08e1173703234cc2913757f237ee916087498aklu UINT8 Parity; 2795c08e1173703234cc2913757f237ee916087498aklu UINT8 StopBits; 2805c08e1173703234cc2913757f237ee916087498aklu 2815c08e1173703234cc2913757f237ee916087498aklu UINT8 BaudRateIndex; 2825c08e1173703234cc2913757f237ee916087498aklu UINT8 DataBitsIndex; 2835c08e1173703234cc2913757f237ee916087498aklu UINT8 ParityIndex; 2845c08e1173703234cc2913757f237ee916087498aklu UINT8 StopBitsIndex; 2855c08e1173703234cc2913757f237ee916087498aklu 2865c08e1173703234cc2913757f237ee916087498aklu UINT8 IsConIn; 2875c08e1173703234cc2913757f237ee916087498aklu UINT8 IsConOut; 2885c08e1173703234cc2913757f237ee916087498aklu UINT8 IsStdErr; 2895c08e1173703234cc2913757f237ee916087498aklu UINT8 TerminalType; 2905c08e1173703234cc2913757f237ee916087498aklu 2915c08e1173703234cc2913757f237ee916087498aklu EFI_DEVICE_PATH_PROTOCOL *DevicePath; 2925c08e1173703234cc2913757f237ee916087498aklu} BM_TERMINAL_CONTEXT; 2935c08e1173703234cc2913757f237ee916087498aklu 2945c08e1173703234cc2913757f237ee916087498aklutypedef struct { 2955c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsBootNext; 2965c08e1173703234cc2913757f237ee916087498aklu BOOLEAN LoadOptionModified; 2975c08e1173703234cc2913757f237ee916087498aklu BOOLEAN Deleted; 2985c08e1173703234cc2913757f237ee916087498aklu 2995c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsLegacy; 3005c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsActive; 3015c08e1173703234cc2913757f237ee916087498aklu BOOLEAN ForceReconnect; 3025c08e1173703234cc2913757f237ee916087498aklu UINTN OptionalDataSize; 3035c08e1173703234cc2913757f237ee916087498aklu 3045c08e1173703234cc2913757f237ee916087498aklu UINTN LoadOptionSize; 3055c08e1173703234cc2913757f237ee916087498aklu UINT8 *LoadOption; 3065c08e1173703234cc2913757f237ee916087498aklu 3075c08e1173703234cc2913757f237ee916087498aklu UINT32 Attributes; 3085c08e1173703234cc2913757f237ee916087498aklu UINT16 FilePathListLength; 3095c08e1173703234cc2913757f237ee916087498aklu UINT16 *Description; 3105c08e1173703234cc2913757f237ee916087498aklu EFI_DEVICE_PATH_PROTOCOL *FilePathList; 3115c08e1173703234cc2913757f237ee916087498aklu UINT8 *OptionalData; 3125c08e1173703234cc2913757f237ee916087498aklu 3135c08e1173703234cc2913757f237ee916087498aklu UINT16 BbsIndex; 3145c08e1173703234cc2913757f237ee916087498aklu} BM_LOAD_CONTEXT; 3155c08e1173703234cc2913757f237ee916087498aklu 3165c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3175c08e1173703234cc2913757f237ee916087498aklu BBS_TABLE *BbsTable; 3185c08e1173703234cc2913757f237ee916087498aklu UINTN Index; 3195c08e1173703234cc2913757f237ee916087498aklu UINTN BbsCount; 3205c08e1173703234cc2913757f237ee916087498aklu UINT16 *Description; 3215c08e1173703234cc2913757f237ee916087498aklu} BM_LEGACY_DEVICE_CONTEXT; 3225c08e1173703234cc2913757f237ee916087498aklu 3235c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3245c08e1173703234cc2913757f237ee916087498aklu 3255c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsActive; 3265c08e1173703234cc2913757f237ee916087498aklu 3275c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsTerminal; 3285c08e1173703234cc2913757f237ee916087498aklu 3295c08e1173703234cc2913757f237ee916087498aklu EFI_DEVICE_PATH_PROTOCOL *DevicePath; 3305c08e1173703234cc2913757f237ee916087498aklu} BM_CONSOLE_CONTEXT; 3315c08e1173703234cc2913757f237ee916087498aklu 3325c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3335c08e1173703234cc2913757f237ee916087498aklu UINTN Column; 3345c08e1173703234cc2913757f237ee916087498aklu UINTN Row; 3355c08e1173703234cc2913757f237ee916087498aklu} CONSOLE_OUT_MODE; 3365c08e1173703234cc2913757f237ee916087498aklu 3375c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3385c08e1173703234cc2913757f237ee916087498aklu EFI_HANDLE Handle; 3395c08e1173703234cc2913757f237ee916087498aklu EFI_DEVICE_PATH_PROTOCOL *DevicePath; 3405c08e1173703234cc2913757f237ee916087498aklu EFI_FILE_HANDLE FHandle; 3415c08e1173703234cc2913757f237ee916087498aklu UINT16 *FileName; 3425c08e1173703234cc2913757f237ee916087498aklu EFI_FILE_SYSTEM_VOLUME_LABEL *Info; 3435c08e1173703234cc2913757f237ee916087498aklu 3445c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsRoot; 3455c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsDir; 3465c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsRemovableMedia; 3475c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsLoadFile; 3485c08e1173703234cc2913757f237ee916087498aklu BOOLEAN IsBootLegacy; 3495c08e1173703234cc2913757f237ee916087498aklu} BM_FILE_CONTEXT; 3505c08e1173703234cc2913757f237ee916087498aklu 3515c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3525c08e1173703234cc2913757f237ee916087498aklu EFI_HANDLE Handle; 3535c08e1173703234cc2913757f237ee916087498aklu EFI_DEVICE_PATH_PROTOCOL *DevicePath; 3545c08e1173703234cc2913757f237ee916087498aklu} BM_HANDLE_CONTEXT; 3555c08e1173703234cc2913757f237ee916087498aklu 3565c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3575c08e1173703234cc2913757f237ee916087498aklu UINTN Signature; 3585c08e1173703234cc2913757f237ee916087498aklu LIST_ENTRY Head; 3595c08e1173703234cc2913757f237ee916087498aklu UINTN MenuNumber; 3605c08e1173703234cc2913757f237ee916087498aklu} BM_MENU_OPTION; 3615c08e1173703234cc2913757f237ee916087498aklu 3625c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3635c08e1173703234cc2913757f237ee916087498aklu UINTN Signature; 3645c08e1173703234cc2913757f237ee916087498aklu LIST_ENTRY Link; 3655c08e1173703234cc2913757f237ee916087498aklu UINTN OptionNumber; 3665c08e1173703234cc2913757f237ee916087498aklu UINT16 *DisplayString; 3675c08e1173703234cc2913757f237ee916087498aklu UINT16 *HelpString; 3685c08e1173703234cc2913757f237ee916087498aklu EFI_STRING_ID DisplayStringToken; 3695c08e1173703234cc2913757f237ee916087498aklu EFI_STRING_ID HelpStringToken; 3705c08e1173703234cc2913757f237ee916087498aklu UINTN ContextSelection; 3715c08e1173703234cc2913757f237ee916087498aklu VOID *VariableContext; 3725c08e1173703234cc2913757f237ee916087498aklu} BM_MENU_ENTRY; 3735c08e1173703234cc2913757f237ee916087498aklu 3745c08e1173703234cc2913757f237ee916087498aklutypedef struct { 3755c08e1173703234cc2913757f237ee916087498aklu // 3765c08e1173703234cc2913757f237ee916087498aklu // Shared callback data. 3775c08e1173703234cc2913757f237ee916087498aklu // 3785c08e1173703234cc2913757f237ee916087498aklu UINTN Signature; 3795c08e1173703234cc2913757f237ee916087498aklu 3805c08e1173703234cc2913757f237ee916087498aklu BM_MENU_ENTRY *MenuEntry; 3815c08e1173703234cc2913757f237ee916087498aklu BM_HANDLE_CONTEXT *HandleContext; 3825c08e1173703234cc2913757f237ee916087498aklu BM_FILE_CONTEXT *FileContext; 3835c08e1173703234cc2913757f237ee916087498aklu BM_LOAD_CONTEXT *LoadContext; 3845c08e1173703234cc2913757f237ee916087498aklu BM_TERMINAL_CONTEXT *TerminalContext; 3855c08e1173703234cc2913757f237ee916087498aklu UINTN CurrentTerminal; 3865c08e1173703234cc2913757f237ee916087498aklu BBS_TYPE BbsType; 3875c08e1173703234cc2913757f237ee916087498aklu 3885c08e1173703234cc2913757f237ee916087498aklu // 3895c08e1173703234cc2913757f237ee916087498aklu // BMM main formset callback data. 3905c08e1173703234cc2913757f237ee916087498aklu // 3915c08e1173703234cc2913757f237ee916087498aklu EFI_HII_HANDLE BmmHiiHandle; 3925c08e1173703234cc2913757f237ee916087498aklu EFI_HANDLE BmmDriverHandle; 3935c08e1173703234cc2913757f237ee916087498aklu EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess; 3945c08e1173703234cc2913757f237ee916087498aklu EFI_FORM_ID BmmCurrentPageId; 3955c08e1173703234cc2913757f237ee916087498aklu EFI_FORM_ID BmmPreviousPageId; 3965c08e1173703234cc2913757f237ee916087498aklu BOOLEAN BmmAskSaveOrNot; 3975c08e1173703234cc2913757f237ee916087498aklu BMM_FAKE_NV_DATA BmmFakeNvData; 3985c08e1173703234cc2913757f237ee916087498aklu BMM_FAKE_NV_DATA BmmOldFakeNVData; 3995c08e1173703234cc2913757f237ee916087498aklu 4005c08e1173703234cc2913757f237ee916087498aklu // 4015c08e1173703234cc2913757f237ee916087498aklu // File explorer formset callback data. 4025c08e1173703234cc2913757f237ee916087498aklu // 4035c08e1173703234cc2913757f237ee916087498aklu EFI_HII_HANDLE FeHiiHandle; 4045c08e1173703234cc2913757f237ee916087498aklu EFI_HANDLE FeDriverHandle; 4055c08e1173703234cc2913757f237ee916087498aklu EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess; 4065c08e1173703234cc2913757f237ee916087498aklu FILE_EXPLORER_STATE FeCurrentState; 4075c08e1173703234cc2913757f237ee916087498aklu FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext; 4085c08e1173703234cc2913757f237ee916087498aklu FILE_EXPLORER_NV_DATA FeFakeNvData; 4095c08e1173703234cc2913757f237ee916087498aklu} BMM_CALLBACK_DATA; 4105c08e1173703234cc2913757f237ee916087498aklu 41113078b3fadb4aaae2d6975ab96a7ad649017589fklutypedef struct _STRING_LIST_NODE STRING_LIST_NODE; 41213078b3fadb4aaae2d6975ab96a7ad649017589fklu 41313078b3fadb4aaae2d6975ab96a7ad649017589fklustruct _STRING_LIST_NODE { 4145c08e1173703234cc2913757f237ee916087498aklu EFI_STRING_ID StringToken; 41513078b3fadb4aaae2d6975ab96a7ad649017589fklu STRING_LIST_NODE *Next; 41613078b3fadb4aaae2d6975ab96a7ad649017589fklu}; 4175c08e1173703234cc2913757f237ee916087498aklu 4185c08e1173703234cc2913757f237ee916087498aklutypedef struct _STRING_DEPOSITORY { 4195c08e1173703234cc2913757f237ee916087498aklu UINTN TotalNodeNumber; 4205c08e1173703234cc2913757f237ee916087498aklu STRING_LIST_NODE *CurrentNode; 4215c08e1173703234cc2913757f237ee916087498aklu STRING_LIST_NODE *ListHead; 4225c08e1173703234cc2913757f237ee916087498aklu} STRING_DEPOSITORY; 4235c08e1173703234cc2913757f237ee916087498aklu 4245c08e1173703234cc2913757f237ee916087498aklu// 4255c08e1173703234cc2913757f237ee916087498aklu// #pragma pack() 4265c08e1173703234cc2913757f237ee916087498aklu// 4275c08e1173703234cc2913757f237ee916087498aklu// For initializing File System menu 4285c08e1173703234cc2913757f237ee916087498aklu// 4295c08e1173703234cc2913757f237ee916087498aklu 4305c08e1173703234cc2913757f237ee916087498aklu/** 4315c08e1173703234cc2913757f237ee916087498aklu This function build the FsOptionMenu list which records all 4325c08e1173703234cc2913757f237ee916087498aklu available file system in the system. They includes all instances 4335c08e1173703234cc2913757f237ee916087498aklu of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, all instances of EFI_LOAD_FILE_SYSTEM 4345c08e1173703234cc2913757f237ee916087498aklu and all type of legacy boot device. 4355c08e1173703234cc2913757f237ee916087498aklu 4365c08e1173703234cc2913757f237ee916087498aklu @param CallbackData BMM context data 4375c08e1173703234cc2913757f237ee916087498aklu 4385c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS Success find the file system 4395c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES Can not create menu entry 4405c08e1173703234cc2913757f237ee916087498aklu 4415c08e1173703234cc2913757f237ee916087498aklu**/ 4425c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 4435c08e1173703234cc2913757f237ee916087498akluBOpt_FindFileSystem ( 4445c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 4455c08e1173703234cc2913757f237ee916087498aklu ); 4465c08e1173703234cc2913757f237ee916087498aklu 4475c08e1173703234cc2913757f237ee916087498aklu/** 4485c08e1173703234cc2913757f237ee916087498aklu Find files under current directory 4495c08e1173703234cc2913757f237ee916087498aklu All files and sub-directories in current directory 4505c08e1173703234cc2913757f237ee916087498aklu will be stored in DirectoryMenu for future use. 4515c08e1173703234cc2913757f237ee916087498aklu 4525c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 4535c08e1173703234cc2913757f237ee916087498aklu @param MenuEntry The Menu Entry. 4545c08e1173703234cc2913757f237ee916087498aklu 4555c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS Get files from current dir successfully. 4565c08e1173703234cc2913757f237ee916087498aklu @return Other value if can't get files from current dir. 4575c08e1173703234cc2913757f237ee916087498aklu 4585c08e1173703234cc2913757f237ee916087498aklu**/ 4595c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 4605c08e1173703234cc2913757f237ee916087498akluBOpt_FindFiles ( 4615c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 4625c08e1173703234cc2913757f237ee916087498aklu IN BM_MENU_ENTRY *MenuEntry 4635c08e1173703234cc2913757f237ee916087498aklu ); 4645c08e1173703234cc2913757f237ee916087498aklu 4655c08e1173703234cc2913757f237ee916087498aklu/** 4665c08e1173703234cc2913757f237ee916087498aklu 4675c08e1173703234cc2913757f237ee916087498aklu Find drivers that will be added as Driver#### variables from handles 4685c08e1173703234cc2913757f237ee916087498aklu in current system environment 4695c08e1173703234cc2913757f237ee916087498aklu All valid handles in the system except those consume SimpleFs, LoadFile 4705c08e1173703234cc2913757f237ee916087498aklu are stored in DriverMenu for future use. 4715c08e1173703234cc2913757f237ee916087498aklu 4725c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complets successfully. 4735c08e1173703234cc2913757f237ee916087498aklu @return Other value if failed to build the DriverMenu. 4745c08e1173703234cc2913757f237ee916087498aklu 4755c08e1173703234cc2913757f237ee916087498aklu**/ 4765c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 4775c08e1173703234cc2913757f237ee916087498akluBOpt_FindDrivers ( 4785c08e1173703234cc2913757f237ee916087498aklu VOID 4795c08e1173703234cc2913757f237ee916087498aklu ); 4805c08e1173703234cc2913757f237ee916087498aklu 4815c08e1173703234cc2913757f237ee916087498aklu/** 4825c08e1173703234cc2913757f237ee916087498aklu 4835c08e1173703234cc2913757f237ee916087498aklu Build the BootOptionMenu according to BootOrder Variable. 4845c08e1173703234cc2913757f237ee916087498aklu This Routine will access the Boot#### to get EFI_LOAD_OPTION. 4855c08e1173703234cc2913757f237ee916087498aklu 4865c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 4875c08e1173703234cc2913757f237ee916087498aklu 4885c08e1173703234cc2913757f237ee916087498aklu @return The number of the Var Boot####. 4895c08e1173703234cc2913757f237ee916087498aklu 4905c08e1173703234cc2913757f237ee916087498aklu**/ 4915c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 4925c08e1173703234cc2913757f237ee916087498akluBOpt_GetBootOptions ( 4935c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 4945c08e1173703234cc2913757f237ee916087498aklu ); 4955c08e1173703234cc2913757f237ee916087498aklu 4965c08e1173703234cc2913757f237ee916087498aklu/** 4975c08e1173703234cc2913757f237ee916087498aklu 4985c08e1173703234cc2913757f237ee916087498aklu Build up all DriverOptionMenu 4995c08e1173703234cc2913757f237ee916087498aklu 5005c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 5015c08e1173703234cc2913757f237ee916087498aklu 5025c08e1173703234cc2913757f237ee916087498aklu @return EFI_SUCESS The functin completes successfully. 5035c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation. 5045c08e1173703234cc2913757f237ee916087498aklu 5055c08e1173703234cc2913757f237ee916087498aklu 5065c08e1173703234cc2913757f237ee916087498aklu**/ 5075c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 5085c08e1173703234cc2913757f237ee916087498akluBOpt_GetDriverOptions ( 5095c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 5105c08e1173703234cc2913757f237ee916087498aklu ); 5115c08e1173703234cc2913757f237ee916087498aklu 5125c08e1173703234cc2913757f237ee916087498aklu 5135c08e1173703234cc2913757f237ee916087498aklu/** 5145c08e1173703234cc2913757f237ee916087498aklu Build the LegacyFDMenu LegacyHDMenu LegacyCDMenu according to LegacyBios.GetBbsInfo(). 5155c08e1173703234cc2913757f237ee916087498aklu 5165c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 5175c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES No enough memory to complete this function. 5185c08e1173703234cc2913757f237ee916087498aklu 5195c08e1173703234cc2913757f237ee916087498aklu**/ 5205c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 5215c08e1173703234cc2913757f237ee916087498akluBOpt_GetLegacyOptions ( 5225c08e1173703234cc2913757f237ee916087498aklu VOID 5235c08e1173703234cc2913757f237ee916087498aklu ); 5245c08e1173703234cc2913757f237ee916087498aklu 5255c08e1173703234cc2913757f237ee916087498aklu/** 5265c08e1173703234cc2913757f237ee916087498aklu Free out resouce allocated from Legacy Boot Options. 5275c08e1173703234cc2913757f237ee916087498aklu 5285c08e1173703234cc2913757f237ee916087498aklu**/ 5295c08e1173703234cc2913757f237ee916087498akluVOID 5305c08e1173703234cc2913757f237ee916087498akluBOpt_FreeLegacyOptions ( 5315c08e1173703234cc2913757f237ee916087498aklu VOID 5325c08e1173703234cc2913757f237ee916087498aklu ); 5335c08e1173703234cc2913757f237ee916087498aklu 5345c08e1173703234cc2913757f237ee916087498aklu/** 5355c08e1173703234cc2913757f237ee916087498aklu Free resources allocated in Allocate Rountine. 5365c08e1173703234cc2913757f237ee916087498aklu 5375c08e1173703234cc2913757f237ee916087498aklu @param FreeMenu Menu to be freed 5385c08e1173703234cc2913757f237ee916087498aklu 5395c08e1173703234cc2913757f237ee916087498aklu**/ 5405c08e1173703234cc2913757f237ee916087498akluVOID 5415c08e1173703234cc2913757f237ee916087498akluBOpt_FreeMenu ( 5425c08e1173703234cc2913757f237ee916087498aklu BM_MENU_OPTION *FreeMenu 5435c08e1173703234cc2913757f237ee916087498aklu ); 5445c08e1173703234cc2913757f237ee916087498aklu 5455c08e1173703234cc2913757f237ee916087498aklu 5465c08e1173703234cc2913757f237ee916087498aklu/** 5475c08e1173703234cc2913757f237ee916087498aklu 5485c08e1173703234cc2913757f237ee916087498aklu Append file name to existing file name. 5495c08e1173703234cc2913757f237ee916087498aklu 5505c08e1173703234cc2913757f237ee916087498aklu @param Str1 The existing file name 5515c08e1173703234cc2913757f237ee916087498aklu @param Str2 The file name to be appended 5525c08e1173703234cc2913757f237ee916087498aklu 5535c08e1173703234cc2913757f237ee916087498aklu @return Allocate a new string to hold the appended result. 5545c08e1173703234cc2913757f237ee916087498aklu Caller is responsible to free the returned string. 5555c08e1173703234cc2913757f237ee916087498aklu 5565c08e1173703234cc2913757f237ee916087498aklu**/ 5575c08e1173703234cc2913757f237ee916087498akluCHAR16* 5585c08e1173703234cc2913757f237ee916087498akluBOpt_AppendFileName ( 5595c08e1173703234cc2913757f237ee916087498aklu IN CHAR16 *Str1, 5605c08e1173703234cc2913757f237ee916087498aklu IN CHAR16 *Str2 5615c08e1173703234cc2913757f237ee916087498aklu ); 5625c08e1173703234cc2913757f237ee916087498aklu 5635c08e1173703234cc2913757f237ee916087498aklu/** 5645c08e1173703234cc2913757f237ee916087498aklu 5655c08e1173703234cc2913757f237ee916087498aklu Check whether current FileName point to a valid 5665c08e1173703234cc2913757f237ee916087498aklu Efi Image File. 5675c08e1173703234cc2913757f237ee916087498aklu 5685c08e1173703234cc2913757f237ee916087498aklu @param FileName File need to be checked. 5695c08e1173703234cc2913757f237ee916087498aklu 5705c08e1173703234cc2913757f237ee916087498aklu @retval TRUE Is Efi Image 5715c08e1173703234cc2913757f237ee916087498aklu @retval FALSE Not a valid Efi Image 5725c08e1173703234cc2913757f237ee916087498aklu 5735c08e1173703234cc2913757f237ee916087498aklu**/ 5745c08e1173703234cc2913757f237ee916087498akluBOOLEAN 5755c08e1173703234cc2913757f237ee916087498akluBOpt_IsEfiImageName ( 5765c08e1173703234cc2913757f237ee916087498aklu IN UINT16 *FileName 5775c08e1173703234cc2913757f237ee916087498aklu ); 5785c08e1173703234cc2913757f237ee916087498aklu 5795c08e1173703234cc2913757f237ee916087498aklu/** 5805c08e1173703234cc2913757f237ee916087498aklu 5815c08e1173703234cc2913757f237ee916087498aklu Check whether current FileName point to a valid Efi Application 5825c08e1173703234cc2913757f237ee916087498aklu 5835c08e1173703234cc2913757f237ee916087498aklu @param Dir Pointer to current Directory 5845c08e1173703234cc2913757f237ee916087498aklu @param FileName Pointer to current File name. 5855c08e1173703234cc2913757f237ee916087498aklu 5865c08e1173703234cc2913757f237ee916087498aklu @retval TRUE Is a valid Efi Application 5875c08e1173703234cc2913757f237ee916087498aklu @retval FALSE not a valid Efi Application 5885c08e1173703234cc2913757f237ee916087498aklu 5895c08e1173703234cc2913757f237ee916087498aklu**/ 5905c08e1173703234cc2913757f237ee916087498akluBOOLEAN 5915c08e1173703234cc2913757f237ee916087498akluBOpt_IsEfiApp ( 5925c08e1173703234cc2913757f237ee916087498aklu IN EFI_FILE_HANDLE Dir, 5935c08e1173703234cc2913757f237ee916087498aklu IN UINT16 *FileName 5945c08e1173703234cc2913757f237ee916087498aklu ); 5955c08e1173703234cc2913757f237ee916087498aklu 5965c08e1173703234cc2913757f237ee916087498aklu/** 5975c08e1173703234cc2913757f237ee916087498aklu 5985c08e1173703234cc2913757f237ee916087498aklu Get the Option Number that has not been allocated for use. 5995c08e1173703234cc2913757f237ee916087498aklu 6005c08e1173703234cc2913757f237ee916087498aklu @return The available Option Number. 6015c08e1173703234cc2913757f237ee916087498aklu 6025c08e1173703234cc2913757f237ee916087498aklu**/ 6035c08e1173703234cc2913757f237ee916087498akluUINT16 6045c08e1173703234cc2913757f237ee916087498akluBOpt_GetBootOptionNumber ( 6055c08e1173703234cc2913757f237ee916087498aklu VOID 6065c08e1173703234cc2913757f237ee916087498aklu ); 6075c08e1173703234cc2913757f237ee916087498aklu 6085c08e1173703234cc2913757f237ee916087498aklu/** 6095c08e1173703234cc2913757f237ee916087498aklu 6105c08e1173703234cc2913757f237ee916087498aklu Get the Option Number that is not in use. 6115c08e1173703234cc2913757f237ee916087498aklu 6125c08e1173703234cc2913757f237ee916087498aklu @return The unused Option Number. 6135c08e1173703234cc2913757f237ee916087498aklu 6145c08e1173703234cc2913757f237ee916087498aklu**/ 6155c08e1173703234cc2913757f237ee916087498akluUINT16 6165c08e1173703234cc2913757f237ee916087498akluBOpt_GetDriverOptionNumber ( 6175c08e1173703234cc2913757f237ee916087498aklu VOID 6185c08e1173703234cc2913757f237ee916087498aklu ); 6195c08e1173703234cc2913757f237ee916087498aklu 6205c08e1173703234cc2913757f237ee916087498aklu/** 6215c08e1173703234cc2913757f237ee916087498aklu Create a menu entry give a Menu type. 6225c08e1173703234cc2913757f237ee916087498aklu 6235c08e1173703234cc2913757f237ee916087498aklu @param MenuType The Menu type to be created. 6245c08e1173703234cc2913757f237ee916087498aklu 6255c08e1173703234cc2913757f237ee916087498aklu 6265c08e1173703234cc2913757f237ee916087498aklu @retval NULL If failed to create the menu. 6275c08e1173703234cc2913757f237ee916087498aklu @return The menu. 6285c08e1173703234cc2913757f237ee916087498aklu 6295c08e1173703234cc2913757f237ee916087498aklu**/ 6305c08e1173703234cc2913757f237ee916087498akluBM_MENU_ENTRY * 6315c08e1173703234cc2913757f237ee916087498akluBOpt_CreateMenuEntry ( 6325c08e1173703234cc2913757f237ee916087498aklu UINTN MenuType 6335c08e1173703234cc2913757f237ee916087498aklu ); 6345c08e1173703234cc2913757f237ee916087498aklu 6355c08e1173703234cc2913757f237ee916087498aklu/** 6365c08e1173703234cc2913757f237ee916087498aklu Free up all resource allocated for a BM_MENU_ENTRY. 6375c08e1173703234cc2913757f237ee916087498aklu 6385c08e1173703234cc2913757f237ee916087498aklu @param MenuEntry A pointer to BM_MENU_ENTRY. 6395c08e1173703234cc2913757f237ee916087498aklu 6405c08e1173703234cc2913757f237ee916087498aklu**/ 6415c08e1173703234cc2913757f237ee916087498akluVOID 6425c08e1173703234cc2913757f237ee916087498akluBOpt_DestroyMenuEntry ( 6435c08e1173703234cc2913757f237ee916087498aklu BM_MENU_ENTRY *MenuEntry 6445c08e1173703234cc2913757f237ee916087498aklu ); 6455c08e1173703234cc2913757f237ee916087498aklu 6465c08e1173703234cc2913757f237ee916087498aklu/** 6475c08e1173703234cc2913757f237ee916087498aklu Get the Menu Entry from the list in Menu Entry List. 6485c08e1173703234cc2913757f237ee916087498aklu 6495c08e1173703234cc2913757f237ee916087498aklu If MenuNumber is great or equal to the number of Menu 6505c08e1173703234cc2913757f237ee916087498aklu Entry in the list, then ASSERT. 6515c08e1173703234cc2913757f237ee916087498aklu 6525c08e1173703234cc2913757f237ee916087498aklu @param MenuOption The Menu Entry List to read the menu entry. 6535c08e1173703234cc2913757f237ee916087498aklu @param MenuNumber The index of Menu Entry. 6545c08e1173703234cc2913757f237ee916087498aklu 6555c08e1173703234cc2913757f237ee916087498aklu @return The Menu Entry. 6565c08e1173703234cc2913757f237ee916087498aklu 6575c08e1173703234cc2913757f237ee916087498aklu**/ 6585c08e1173703234cc2913757f237ee916087498akluBM_MENU_ENTRY * 6595c08e1173703234cc2913757f237ee916087498akluBOpt_GetMenuEntry ( 6605c08e1173703234cc2913757f237ee916087498aklu BM_MENU_OPTION *MenuOption, 6615c08e1173703234cc2913757f237ee916087498aklu UINTN MenuNumber 6625c08e1173703234cc2913757f237ee916087498aklu ); 6635c08e1173703234cc2913757f237ee916087498aklu 6645c08e1173703234cc2913757f237ee916087498aklu// 6655c08e1173703234cc2913757f237ee916087498aklu// Locate all serial io devices for console 6665c08e1173703234cc2913757f237ee916087498aklu// 6675c08e1173703234cc2913757f237ee916087498aklu/** 6685c08e1173703234cc2913757f237ee916087498aklu Build a list containing all serial devices. 6695c08e1173703234cc2913757f237ee916087498aklu 6705c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 6715c08e1173703234cc2913757f237ee916087498aklu @retval EFI_UNSUPPORTED No serial ports present. 6725c08e1173703234cc2913757f237ee916087498aklu 6735c08e1173703234cc2913757f237ee916087498aklu**/ 6745c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 6755c08e1173703234cc2913757f237ee916087498akluLocateSerialIo ( 6765c08e1173703234cc2913757f237ee916087498aklu VOID 6775c08e1173703234cc2913757f237ee916087498aklu ); 6785c08e1173703234cc2913757f237ee916087498aklu 6795c08e1173703234cc2913757f237ee916087498aklu// 6805c08e1173703234cc2913757f237ee916087498aklu// Initializing Console menu 6815c08e1173703234cc2913757f237ee916087498aklu// 6825c08e1173703234cc2913757f237ee916087498aklu/** 6835c08e1173703234cc2913757f237ee916087498aklu Build up ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu 6845c08e1173703234cc2913757f237ee916087498aklu 6855c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function always complete successfully. 6865c08e1173703234cc2913757f237ee916087498aklu 6875c08e1173703234cc2913757f237ee916087498aklu**/ 6885c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 6895c08e1173703234cc2913757f237ee916087498akluGetAllConsoles( 6905c08e1173703234cc2913757f237ee916087498aklu VOID 6915c08e1173703234cc2913757f237ee916087498aklu ); 6925c08e1173703234cc2913757f237ee916087498aklu 6935c08e1173703234cc2913757f237ee916087498aklu// 6945c08e1173703234cc2913757f237ee916087498aklu// Get current mode information 6955c08e1173703234cc2913757f237ee916087498aklu// 6965c08e1173703234cc2913757f237ee916087498aklu/** 6975c08e1173703234cc2913757f237ee916087498aklu Get mode number according to column and row 6985c08e1173703234cc2913757f237ee916087498aklu 6995c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 7005c08e1173703234cc2913757f237ee916087498aklu**/ 7015c08e1173703234cc2913757f237ee916087498akluVOID 7025c08e1173703234cc2913757f237ee916087498akluGetConsoleOutMode ( 7035c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 7045c08e1173703234cc2913757f237ee916087498aklu ); 7055c08e1173703234cc2913757f237ee916087498aklu 7065c08e1173703234cc2913757f237ee916087498aklu// 7075c08e1173703234cc2913757f237ee916087498aklu// Cleaning up console menu 7085c08e1173703234cc2913757f237ee916087498aklu// 7095c08e1173703234cc2913757f237ee916087498aklu/** 7105c08e1173703234cc2913757f237ee916087498aklu Free ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu 7115c08e1173703234cc2913757f237ee916087498aklu 7125c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function always complete successfully. 7135c08e1173703234cc2913757f237ee916087498aklu**/ 7145c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 7155c08e1173703234cc2913757f237ee916087498akluFreeAllConsoles ( 7165c08e1173703234cc2913757f237ee916087498aklu VOID 7175c08e1173703234cc2913757f237ee916087498aklu ); 7185c08e1173703234cc2913757f237ee916087498aklu 7195c08e1173703234cc2913757f237ee916087498aklu/** 7205c08e1173703234cc2913757f237ee916087498aklu Update the device path that describing a terminal device 7215c08e1173703234cc2913757f237ee916087498aklu based on the new BaudRate, Data Bits, parity and Stop Bits 7225c08e1173703234cc2913757f237ee916087498aklu set. 7235c08e1173703234cc2913757f237ee916087498aklu 7245c08e1173703234cc2913757f237ee916087498aklu @param DevicePath The devicepath protocol instance wanted to be updated. 7255c08e1173703234cc2913757f237ee916087498aklu 7265c08e1173703234cc2913757f237ee916087498aklu**/ 7275c08e1173703234cc2913757f237ee916087498akluVOID 7285c08e1173703234cc2913757f237ee916087498akluChangeVariableDevicePath ( 7295c08e1173703234cc2913757f237ee916087498aklu IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath 7305c08e1173703234cc2913757f237ee916087498aklu ); 7315c08e1173703234cc2913757f237ee916087498aklu 7325c08e1173703234cc2913757f237ee916087498aklu/** 7335c08e1173703234cc2913757f237ee916087498aklu Update the multi-instance device path of Terminal Device based on 7345c08e1173703234cc2913757f237ee916087498aklu the global TerminalMenu. If ChangeTernimal is TRUE, the terminal 7355c08e1173703234cc2913757f237ee916087498aklu device path in the Terminal Device in TerminalMenu is also updated. 7365c08e1173703234cc2913757f237ee916087498aklu 7375c08e1173703234cc2913757f237ee916087498aklu @param DevicePath The multi-instance device path. 7385c08e1173703234cc2913757f237ee916087498aklu @param ChangeTerminal TRUE, then device path in the Terminal Device 7395c08e1173703234cc2913757f237ee916087498aklu in TerminalMenu is also updated; FALSE, no update. 7405c08e1173703234cc2913757f237ee916087498aklu 7415c08e1173703234cc2913757f237ee916087498aklu @return EFI_SUCCESS The function completes successfully. 7425c08e1173703234cc2913757f237ee916087498aklu 7435c08e1173703234cc2913757f237ee916087498aklu**/ 7445c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 7455c08e1173703234cc2913757f237ee916087498akluChangeTerminalDevicePath ( 7465c08e1173703234cc2913757f237ee916087498aklu IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath, 7475c08e1173703234cc2913757f237ee916087498aklu IN BOOLEAN ChangeTerminal 7485c08e1173703234cc2913757f237ee916087498aklu ); 7495c08e1173703234cc2913757f237ee916087498aklu 7505c08e1173703234cc2913757f237ee916087498aklu// 7515c08e1173703234cc2913757f237ee916087498aklu// Variable operation by menu selection 7525c08e1173703234cc2913757f237ee916087498aklu// 7535c08e1173703234cc2913757f237ee916087498aklu/** 7545c08e1173703234cc2913757f237ee916087498aklu This function create a currently loaded Boot Option from 7555c08e1173703234cc2913757f237ee916087498aklu the BMM. It then appends this Boot Option to the end of 7565c08e1173703234cc2913757f237ee916087498aklu the "BootOrder" list. It also append this Boot Opotion to the end 7575c08e1173703234cc2913757f237ee916087498aklu of BootOptionMenu. 7585c08e1173703234cc2913757f237ee916087498aklu 7595c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 7605c08e1173703234cc2913757f237ee916087498aklu @param NvRamMap The file explorer formset internal state. 7615c08e1173703234cc2913757f237ee916087498aklu 7625c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES If not enought memory to complete the operation. 7635c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS If function completes successfully. 7645c08e1173703234cc2913757f237ee916087498aklu 7655c08e1173703234cc2913757f237ee916087498aklu**/ 7665c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 7675c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootOption ( 7685c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 7695c08e1173703234cc2913757f237ee916087498aklu IN FILE_EXPLORER_NV_DATA *NvRamMap 7705c08e1173703234cc2913757f237ee916087498aklu ); 7715c08e1173703234cc2913757f237ee916087498aklu 7725c08e1173703234cc2913757f237ee916087498aklu/** 7735c08e1173703234cc2913757f237ee916087498aklu Delete Boot Option that represent a Deleted state in BootOptionMenu. 7745c08e1173703234cc2913757f237ee916087498aklu After deleting this boot option, call Var_ChangeBootOrder to 7755c08e1173703234cc2913757f237ee916087498aklu make sure BootOrder is in valid state. 7765c08e1173703234cc2913757f237ee916087498aklu 7775c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS If all boot load option EFI Variables corresponding to 7785c08e1173703234cc2913757f237ee916087498aklu BM_LOAD_CONTEXT marked for deletion is deleted 7795c08e1173703234cc2913757f237ee916087498aklu @return Others If failed to update the "BootOrder" variable after deletion. 7805c08e1173703234cc2913757f237ee916087498aklu 7815c08e1173703234cc2913757f237ee916087498aklu**/ 7825c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 7835c08e1173703234cc2913757f237ee916087498akluVar_DelBootOption ( 7845c08e1173703234cc2913757f237ee916087498aklu VOID 7855c08e1173703234cc2913757f237ee916087498aklu ); 7865c08e1173703234cc2913757f237ee916087498aklu 7875c08e1173703234cc2913757f237ee916087498aklu/** 7885c08e1173703234cc2913757f237ee916087498aklu After any operation on Boot####, there will be a discrepancy in BootOrder. 7895c08e1173703234cc2913757f237ee916087498aklu Since some are missing but in BootOrder, while some are present but are 7905c08e1173703234cc2913757f237ee916087498aklu not reflected by BootOrder. Then a function rebuild BootOrder from 7915c08e1173703234cc2913757f237ee916087498aklu scratch by content from BootOptionMenu is needed. 7925c08e1173703234cc2913757f237ee916087498aklu 7935c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The boot order is updated successfully. 7945c08e1173703234cc2913757f237ee916087498aklu @return other than EFI_SUCCESS if failed to change the "BootOrder" EFI Variable. 7955c08e1173703234cc2913757f237ee916087498aklu 7965c08e1173703234cc2913757f237ee916087498aklu**/ 7975c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 7985c08e1173703234cc2913757f237ee916087498akluVar_ChangeBootOrder ( 7995c08e1173703234cc2913757f237ee916087498aklu VOID 8005c08e1173703234cc2913757f237ee916087498aklu ); 8015c08e1173703234cc2913757f237ee916087498aklu 8025c08e1173703234cc2913757f237ee916087498aklu/** 8035c08e1173703234cc2913757f237ee916087498aklu This function create a currently loaded Drive Option from 8045c08e1173703234cc2913757f237ee916087498aklu the BMM. It then appends this Driver Option to the end of 8055c08e1173703234cc2913757f237ee916087498aklu the "DriverOrder" list. It append this Driver Opotion to the end 8065c08e1173703234cc2913757f237ee916087498aklu of DriverOptionMenu. 8075c08e1173703234cc2913757f237ee916087498aklu 8085c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 8095c08e1173703234cc2913757f237ee916087498aklu @param HiiHandle The HII handle associated with the BMM formset. 8105c08e1173703234cc2913757f237ee916087498aklu @param DescriptionData The description of this driver option. 8115c08e1173703234cc2913757f237ee916087498aklu @param OptionalData The optional load option. 8125c08e1173703234cc2913757f237ee916087498aklu @param ForceReconnect If to force reconnect. 8135c08e1173703234cc2913757f237ee916087498aklu 8145c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES If not enought memory to complete the operation. 8155c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS If function completes successfully. 8165c08e1173703234cc2913757f237ee916087498aklu 8175c08e1173703234cc2913757f237ee916087498aklu**/ 8185c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8195c08e1173703234cc2913757f237ee916087498akluVar_UpdateDriverOption ( 8205c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 8215c08e1173703234cc2913757f237ee916087498aklu IN EFI_HII_HANDLE HiiHandle, 8225c08e1173703234cc2913757f237ee916087498aklu IN UINT16 *DescriptionData, 8235c08e1173703234cc2913757f237ee916087498aklu IN UINT16 *OptionalData, 8245c08e1173703234cc2913757f237ee916087498aklu IN UINT8 ForceReconnect 8255c08e1173703234cc2913757f237ee916087498aklu ); 8265c08e1173703234cc2913757f237ee916087498aklu 8275c08e1173703234cc2913757f237ee916087498aklu/** 8285c08e1173703234cc2913757f237ee916087498aklu Delete Load Option that represent a Deleted state in BootOptionMenu. 8295c08e1173703234cc2913757f237ee916087498aklu After deleting this Driver option, call Var_ChangeDriverOrder to 8305c08e1173703234cc2913757f237ee916087498aklu make sure DriverOrder is in valid state. 8315c08e1173703234cc2913757f237ee916087498aklu 8325c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS Load Option is successfully updated. 8335c08e1173703234cc2913757f237ee916087498aklu @return Other value than EFI_SUCCESS if failed to update "Driver Order" EFI 8345c08e1173703234cc2913757f237ee916087498aklu Variable. 8355c08e1173703234cc2913757f237ee916087498aklu 8365c08e1173703234cc2913757f237ee916087498aklu**/ 8375c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8385c08e1173703234cc2913757f237ee916087498akluVar_DelDriverOption ( 8395c08e1173703234cc2913757f237ee916087498aklu VOID 8405c08e1173703234cc2913757f237ee916087498aklu ); 8415c08e1173703234cc2913757f237ee916087498aklu 8425c08e1173703234cc2913757f237ee916087498aklu/** 8435c08e1173703234cc2913757f237ee916087498aklu After any operation on Driver####, there will be a discrepancy in 8445c08e1173703234cc2913757f237ee916087498aklu DriverOrder. Since some are missing but in DriverOrder, while some 8455c08e1173703234cc2913757f237ee916087498aklu are present but are not reflected by DriverOrder. Then a function 8465c08e1173703234cc2913757f237ee916087498aklu rebuild DriverOrder from scratch by content from DriverOptionMenu is 8475c08e1173703234cc2913757f237ee916087498aklu needed. 8485c08e1173703234cc2913757f237ee916087498aklu 8495c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The driver order is updated successfully. 8505c08e1173703234cc2913757f237ee916087498aklu @return other than EFI_SUCCESS if failed to set the "DriverOrder" EFI Variable. 8515c08e1173703234cc2913757f237ee916087498aklu 8525c08e1173703234cc2913757f237ee916087498aklu**/ 8535c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8545c08e1173703234cc2913757f237ee916087498akluVar_ChangeDriverOrder ( 8555c08e1173703234cc2913757f237ee916087498aklu VOID 8565c08e1173703234cc2913757f237ee916087498aklu ); 8575c08e1173703234cc2913757f237ee916087498aklu 8585c08e1173703234cc2913757f237ee916087498aklu/** 8595c08e1173703234cc2913757f237ee916087498aklu This function delete and build multi-instance device path ConIn 8605c08e1173703234cc2913757f237ee916087498aklu console device. 8615c08e1173703234cc2913757f237ee916087498aklu 8625c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 8635c08e1173703234cc2913757f237ee916087498aklu @return The EFI variable can not be saved. See gRT->SetVariable for detail return information. 8645c08e1173703234cc2913757f237ee916087498aklu**/ 8655c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8665c08e1173703234cc2913757f237ee916087498akluVar_UpdateConsoleInpOption ( 8675c08e1173703234cc2913757f237ee916087498aklu VOID 8685c08e1173703234cc2913757f237ee916087498aklu ); 8695c08e1173703234cc2913757f237ee916087498aklu 8705c08e1173703234cc2913757f237ee916087498aklu/** 8715c08e1173703234cc2913757f237ee916087498aklu This function delete and build multi-instance device path ConOut console device. 8725c08e1173703234cc2913757f237ee916087498aklu 8735c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 8745c08e1173703234cc2913757f237ee916087498aklu @return The EFI variable can not be saved. See gRT->SetVariable for detail return information. 8755c08e1173703234cc2913757f237ee916087498aklu**/ 8765c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8775c08e1173703234cc2913757f237ee916087498akluVar_UpdateConsoleOutOption ( 8785c08e1173703234cc2913757f237ee916087498aklu VOID 8795c08e1173703234cc2913757f237ee916087498aklu ); 8805c08e1173703234cc2913757f237ee916087498aklu 8815c08e1173703234cc2913757f237ee916087498aklu/** 8825c08e1173703234cc2913757f237ee916087498aklu This function delete and build multi-instance device path ErrOut console device. 8835c08e1173703234cc2913757f237ee916087498aklu 8845c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 8855c08e1173703234cc2913757f237ee916087498aklu @return The EFI variable can not be saved. See gRT->SetVariable for detail return information. 8865c08e1173703234cc2913757f237ee916087498aklu**/ 8875c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 8885c08e1173703234cc2913757f237ee916087498akluVar_UpdateErrorOutOption ( 8895c08e1173703234cc2913757f237ee916087498aklu VOID 8905c08e1173703234cc2913757f237ee916087498aklu ); 8915c08e1173703234cc2913757f237ee916087498aklu 8925c08e1173703234cc2913757f237ee916087498aklu/** 8935c08e1173703234cc2913757f237ee916087498aklu Update the device path of "ConOut", "ConIn" and "ErrOut" based on the new BaudRate, Data Bits, 8945c08e1173703234cc2913757f237ee916087498aklu parity and stop Bits set. 8955c08e1173703234cc2913757f237ee916087498aklu 8965c08e1173703234cc2913757f237ee916087498aklu**/ 8975c08e1173703234cc2913757f237ee916087498akluVOID 8985c08e1173703234cc2913757f237ee916087498akluVar_UpdateAllConsoleOption ( 8995c08e1173703234cc2913757f237ee916087498aklu VOID 9005c08e1173703234cc2913757f237ee916087498aklu ); 9015c08e1173703234cc2913757f237ee916087498aklu 9025c08e1173703234cc2913757f237ee916087498aklu/** 9035c08e1173703234cc2913757f237ee916087498aklu This function update the "BootNext" EFI Variable. If there is no "BootNex" specified in BMM, 9045c08e1173703234cc2913757f237ee916087498aklu this EFI Variable is deleted. 9055c08e1173703234cc2913757f237ee916087498aklu It also update the BMM context data specified the "BootNext" value. 9065c08e1173703234cc2913757f237ee916087498aklu 9075c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 9085c08e1173703234cc2913757f237ee916087498aklu 9095c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 9105c08e1173703234cc2913757f237ee916087498aklu @return The EFI variable can not be saved. See gRT->SetVariable for detail return information. 9115c08e1173703234cc2913757f237ee916087498aklu 9125c08e1173703234cc2913757f237ee916087498aklu**/ 9135c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 9145c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootNext ( 9155c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 9165c08e1173703234cc2913757f237ee916087498aklu ); 9175c08e1173703234cc2913757f237ee916087498aklu 9185c08e1173703234cc2913757f237ee916087498aklu/** 9195c08e1173703234cc2913757f237ee916087498aklu This function update the "BootOrder" EFI Variable based on BMM Formset's NV map. It then refresh 9205c08e1173703234cc2913757f237ee916087498aklu BootOptionMenu with the new "BootOrder" list. 9215c08e1173703234cc2913757f237ee916087498aklu 9225c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 9235c08e1173703234cc2913757f237ee916087498aklu 9245c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 9255c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES Not enough memory to complete the function. 9265c08e1173703234cc2913757f237ee916087498aklu @return not The EFI variable can not be saved. See gRT->SetVariable for detail return information. 9275c08e1173703234cc2913757f237ee916087498aklu 9285c08e1173703234cc2913757f237ee916087498aklu**/ 9295c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 9305c08e1173703234cc2913757f237ee916087498akluVar_UpdateBootOrder ( 9315c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 9325c08e1173703234cc2913757f237ee916087498aklu ); 9335c08e1173703234cc2913757f237ee916087498aklu 9345c08e1173703234cc2913757f237ee916087498aklu/** 9355c08e1173703234cc2913757f237ee916087498aklu This function update the "DriverOrder" EFI Variable based on 9365c08e1173703234cc2913757f237ee916087498aklu BMM Formset's NV map. It then refresh DriverOptionMenu 9375c08e1173703234cc2913757f237ee916087498aklu with the new "DriverOrder" list. 9385c08e1173703234cc2913757f237ee916087498aklu 9395c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 9405c08e1173703234cc2913757f237ee916087498aklu 9415c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function complete successfully. 9425c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES Not enough memory to complete the function. 9435c08e1173703234cc2913757f237ee916087498aklu @return The EFI variable can not be saved. See gRT->SetVariable for detail return information. 9445c08e1173703234cc2913757f237ee916087498aklu 9455c08e1173703234cc2913757f237ee916087498aklu**/ 9465c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 9475c08e1173703234cc2913757f237ee916087498akluVar_UpdateDriverOrder ( 9485c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 9495c08e1173703234cc2913757f237ee916087498aklu ); 9505c08e1173703234cc2913757f237ee916087498aklu 9515c08e1173703234cc2913757f237ee916087498aklu/** 9525c08e1173703234cc2913757f237ee916087498aklu Update the legacy BBS boot option. L"LegacyDevOrder" and EfiLegacyDevOrderGuid EFI Variable 9535c08e1173703234cc2913757f237ee916087498aklu is udpated with the new Legacy Boot order. The EFI Variable of "Boot####" and gEfiGlobalVariableGuid 9545c08e1173703234cc2913757f237ee916087498aklu is also updated. 9555c08e1173703234cc2913757f237ee916087498aklu 9565c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The context data for BMM. 9575c08e1173703234cc2913757f237ee916087498aklu 9585c08e1173703234cc2913757f237ee916087498aklu @return EFI_SUCCESS The function completed successfully. 9595c08e1173703234cc2913757f237ee916087498aklu @retval EFI_NOT_FOUND If L"LegacyDevOrder" and EfiLegacyDevOrderGuid EFI Variable can not be found. 9605c08e1173703234cc2913757f237ee916087498aklu 9615c08e1173703234cc2913757f237ee916087498aklu**/ 9625c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 9635c08e1173703234cc2913757f237ee916087498akluVar_UpdateBBSOption ( 9645c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 9655c08e1173703234cc2913757f237ee916087498aklu ); 9665c08e1173703234cc2913757f237ee916087498aklu 9675c08e1173703234cc2913757f237ee916087498aklu/** 9685c08e1173703234cc2913757f237ee916087498aklu Update the Text Mode of Console. 9695c08e1173703234cc2913757f237ee916087498aklu 9705c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The context data for BMM. 9715c08e1173703234cc2913757f237ee916087498aklu 9725c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCSS If the Text Mode of Console is updated. 9735c08e1173703234cc2913757f237ee916087498aklu @return Other value if the Text Mode of Console is not updated. 9745c08e1173703234cc2913757f237ee916087498aklu 9755c08e1173703234cc2913757f237ee916087498aklu**/ 9765c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 9775c08e1173703234cc2913757f237ee916087498akluVar_UpdateConMode ( 9785c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 9795c08e1173703234cc2913757f237ee916087498aklu ); 9805c08e1173703234cc2913757f237ee916087498aklu 9815c08e1173703234cc2913757f237ee916087498aklu// 9825c08e1173703234cc2913757f237ee916087498aklu// Following are page create and refresh functions 9835c08e1173703234cc2913757f237ee916087498aklu// 9845c08e1173703234cc2913757f237ee916087498aklu/** 9855c08e1173703234cc2913757f237ee916087498aklu Refresh the global UpdateData structure. 9865c08e1173703234cc2913757f237ee916087498aklu 9875c08e1173703234cc2913757f237ee916087498aklu**/ 9885c08e1173703234cc2913757f237ee916087498akluVOID 9895c08e1173703234cc2913757f237ee916087498akluRefreshUpdateData ( 9905c08e1173703234cc2913757f237ee916087498aklu VOID 9915c08e1173703234cc2913757f237ee916087498aklu ); 9925c08e1173703234cc2913757f237ee916087498aklu 9935c08e1173703234cc2913757f237ee916087498aklu/** 9945c08e1173703234cc2913757f237ee916087498aklu Clean up the dynamic opcode at label and form specified by 9955c08e1173703234cc2913757f237ee916087498aklu both LabelId. 9965c08e1173703234cc2913757f237ee916087498aklu 9975c08e1173703234cc2913757f237ee916087498aklu @param LabelId It is both the Form ID and Label ID for 9985c08e1173703234cc2913757f237ee916087498aklu opcode deletion. 9995c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10005c08e1173703234cc2913757f237ee916087498aklu 10015c08e1173703234cc2913757f237ee916087498aklu**/ 10025c08e1173703234cc2913757f237ee916087498akluVOID 10035c08e1173703234cc2913757f237ee916087498akluCleanUpPage ( 10045c08e1173703234cc2913757f237ee916087498aklu IN UINT16 LabelId, 10055c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10065c08e1173703234cc2913757f237ee916087498aklu ); 10075c08e1173703234cc2913757f237ee916087498aklu 10085c08e1173703234cc2913757f237ee916087498aklu/** 10095c08e1173703234cc2913757f237ee916087498aklu Create a lit of boot option from global BootOptionMenu. It 10105c08e1173703234cc2913757f237ee916087498aklu allow user to delete the boot option. 10115c08e1173703234cc2913757f237ee916087498aklu 10125c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10135c08e1173703234cc2913757f237ee916087498aklu 10145c08e1173703234cc2913757f237ee916087498aklu**/ 10155c08e1173703234cc2913757f237ee916087498akluVOID 10165c08e1173703234cc2913757f237ee916087498akluUpdateBootDelPage ( 10175c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10185c08e1173703234cc2913757f237ee916087498aklu ); 10195c08e1173703234cc2913757f237ee916087498aklu 10205c08e1173703234cc2913757f237ee916087498aklu/** 10215c08e1173703234cc2913757f237ee916087498aklu Create a lit of driver option from global DriverMenu. 10225c08e1173703234cc2913757f237ee916087498aklu 10235c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10245c08e1173703234cc2913757f237ee916087498aklu**/ 10255c08e1173703234cc2913757f237ee916087498akluVOID 10265c08e1173703234cc2913757f237ee916087498akluUpdateDrvAddHandlePage ( 10275c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10285c08e1173703234cc2913757f237ee916087498aklu ); 10295c08e1173703234cc2913757f237ee916087498aklu 10305c08e1173703234cc2913757f237ee916087498aklu/** 10315c08e1173703234cc2913757f237ee916087498aklu Create a lit of driver option from global DriverOptionMenu. It 10325c08e1173703234cc2913757f237ee916087498aklu allow user to delete the driver option. 10335c08e1173703234cc2913757f237ee916087498aklu 10345c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10355c08e1173703234cc2913757f237ee916087498aklu**/ 10365c08e1173703234cc2913757f237ee916087498akluVOID 10375c08e1173703234cc2913757f237ee916087498akluUpdateDrvDelPage ( 10385c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10395c08e1173703234cc2913757f237ee916087498aklu ); 10405c08e1173703234cc2913757f237ee916087498aklu 10415c08e1173703234cc2913757f237ee916087498aklu/** 10425c08e1173703234cc2913757f237ee916087498aklu Prepare the page to allow user to add description for a Driver Option. 10435c08e1173703234cc2913757f237ee916087498aklu 10445c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10455c08e1173703234cc2913757f237ee916087498aklu**/ 10465c08e1173703234cc2913757f237ee916087498akluVOID 10475c08e1173703234cc2913757f237ee916087498akluUpdateDriverAddHandleDescPage ( 10485c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10495c08e1173703234cc2913757f237ee916087498aklu ); 10505c08e1173703234cc2913757f237ee916087498aklu 10515c08e1173703234cc2913757f237ee916087498aklu/** 10525c08e1173703234cc2913757f237ee916087498aklu Dispatch the correct update page function to call based on the UpdatePageId. 10535c08e1173703234cc2913757f237ee916087498aklu 10545c08e1173703234cc2913757f237ee916087498aklu @param UpdatePageId The form ID. 10555c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10565c08e1173703234cc2913757f237ee916087498aklu**/ 10575c08e1173703234cc2913757f237ee916087498akluVOID 10585c08e1173703234cc2913757f237ee916087498akluUpdatePageBody ( 10595c08e1173703234cc2913757f237ee916087498aklu IN UINT16 UpdatePageId, 10605c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10615c08e1173703234cc2913757f237ee916087498aklu ); 10625c08e1173703234cc2913757f237ee916087498aklu 10635c08e1173703234cc2913757f237ee916087498aklu/** 10645c08e1173703234cc2913757f237ee916087498aklu Create the dynamic page to allow user to set the "BootNext" vaule. 10655c08e1173703234cc2913757f237ee916087498aklu 10665c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10675c08e1173703234cc2913757f237ee916087498aklu**/ 10685c08e1173703234cc2913757f237ee916087498akluVOID 10695c08e1173703234cc2913757f237ee916087498akluUpdateBootNextPage ( 10705c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10715c08e1173703234cc2913757f237ee916087498aklu ); 10725c08e1173703234cc2913757f237ee916087498aklu 10735c08e1173703234cc2913757f237ee916087498aklu/** 10745c08e1173703234cc2913757f237ee916087498aklu Create the dynamic page to allow user to set the "TimeOut" vaule. 10755c08e1173703234cc2913757f237ee916087498aklu 10765c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10775c08e1173703234cc2913757f237ee916087498aklu**/ 10785c08e1173703234cc2913757f237ee916087498akluVOID 10795c08e1173703234cc2913757f237ee916087498akluUpdateTimeOutPage ( 10805c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10815c08e1173703234cc2913757f237ee916087498aklu ); 10825c08e1173703234cc2913757f237ee916087498aklu 10835c08e1173703234cc2913757f237ee916087498aklu/** 10845c08e1173703234cc2913757f237ee916087498aklu Create the dynamic page which allows user to set the property such as Baud Rate, Data Bits, 10855c08e1173703234cc2913757f237ee916087498aklu Parity, Stop Bits, Terminal Type. 10865c08e1173703234cc2913757f237ee916087498aklu 10875c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10885c08e1173703234cc2913757f237ee916087498aklu**/ 10895c08e1173703234cc2913757f237ee916087498akluVOID 10905c08e1173703234cc2913757f237ee916087498akluUpdateTerminalPage ( 10915c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 10925c08e1173703234cc2913757f237ee916087498aklu ); 10935c08e1173703234cc2913757f237ee916087498aklu 10945c08e1173703234cc2913757f237ee916087498aklu/** 10955c08e1173703234cc2913757f237ee916087498aklu Refresh the text mode page 10965c08e1173703234cc2913757f237ee916087498aklu 10975c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 10985c08e1173703234cc2913757f237ee916087498aklu**/ 10995c08e1173703234cc2913757f237ee916087498akluVOID 11005c08e1173703234cc2913757f237ee916087498akluUpdateConModePage ( 11015c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 11025c08e1173703234cc2913757f237ee916087498aklu ); 11035c08e1173703234cc2913757f237ee916087498aklu 11045c08e1173703234cc2913757f237ee916087498aklu/** 11055c08e1173703234cc2913757f237ee916087498aklu Create a list of Goto Opcode for all terminal devices logged 11065c08e1173703234cc2913757f237ee916087498aklu by TerminaMenu. This list will be inserted to form FORM_CON_COM_SETUP_ID. 11075c08e1173703234cc2913757f237ee916087498aklu 11085c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 11095c08e1173703234cc2913757f237ee916087498aklu**/ 11105c08e1173703234cc2913757f237ee916087498akluVOID 11115c08e1173703234cc2913757f237ee916087498akluUpdateConCOMPage ( 11125c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 11135c08e1173703234cc2913757f237ee916087498aklu ); 11145c08e1173703234cc2913757f237ee916087498aklu 11155c08e1173703234cc2913757f237ee916087498aklu/** 11165c08e1173703234cc2913757f237ee916087498aklu Create a dynamic page so that Legacy Device boot order 11175c08e1173703234cc2913757f237ee916087498aklu can be set for specified device type. 11185c08e1173703234cc2913757f237ee916087498aklu 11195c08e1173703234cc2913757f237ee916087498aklu @param UpdatePageId The form ID. It also spefies the legacy device type. 11205c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 11215c08e1173703234cc2913757f237ee916087498aklu**/ 11225c08e1173703234cc2913757f237ee916087498akluVOID 11235c08e1173703234cc2913757f237ee916087498akluUpdateSetLegacyDeviceOrderPage ( 11245c08e1173703234cc2913757f237ee916087498aklu IN UINT16 UpdatePageId, 11255c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 11265c08e1173703234cc2913757f237ee916087498aklu ); 11275c08e1173703234cc2913757f237ee916087498aklu 11285c08e1173703234cc2913757f237ee916087498aklu 11295c08e1173703234cc2913757f237ee916087498aklu/** 11305c08e1173703234cc2913757f237ee916087498aklu Function opens and returns a file handle to the root directory of a volume. 11315c08e1173703234cc2913757f237ee916087498aklu 11325c08e1173703234cc2913757f237ee916087498aklu @param DeviceHandle A handle for a device 11335c08e1173703234cc2913757f237ee916087498aklu @return A valid file handle or NULL is returned 11345c08e1173703234cc2913757f237ee916087498aklu**/ 11355c08e1173703234cc2913757f237ee916087498akluEFI_FILE_HANDLE 11365c08e1173703234cc2913757f237ee916087498akluEfiLibOpenRoot ( 11375c08e1173703234cc2913757f237ee916087498aklu IN EFI_HANDLE DeviceHandle 11385c08e1173703234cc2913757f237ee916087498aklu ); 11395c08e1173703234cc2913757f237ee916087498aklu 11405c08e1173703234cc2913757f237ee916087498aklu/** 11415c08e1173703234cc2913757f237ee916087498aklu Function gets the file system information from an open file descriptor, 11425c08e1173703234cc2913757f237ee916087498aklu and stores it in a buffer allocated from pool. 11435c08e1173703234cc2913757f237ee916087498aklu 11445c08e1173703234cc2913757f237ee916087498aklu @param FHand The file handle. 11455c08e1173703234cc2913757f237ee916087498aklu 11465c08e1173703234cc2913757f237ee916087498aklu @return A pointer to a buffer with file information. 11475c08e1173703234cc2913757f237ee916087498aklu NULL is returned if failed to get Vaolume Label Info. 11485c08e1173703234cc2913757f237ee916087498aklu**/ 11495c08e1173703234cc2913757f237ee916087498akluEFI_FILE_SYSTEM_VOLUME_LABEL * 11505c08e1173703234cc2913757f237ee916087498akluEfiLibFileSystemVolumeLabelInfo ( 11515c08e1173703234cc2913757f237ee916087498aklu IN EFI_FILE_HANDLE FHand 11525c08e1173703234cc2913757f237ee916087498aklu ); 11535c08e1173703234cc2913757f237ee916087498aklu 11545c08e1173703234cc2913757f237ee916087498aklu/** 11555c08e1173703234cc2913757f237ee916087498aklu 11565c08e1173703234cc2913757f237ee916087498aklu Function gets the file information from an open file descriptor, and stores it 11575c08e1173703234cc2913757f237ee916087498aklu in a buffer allocated from pool. 11585c08e1173703234cc2913757f237ee916087498aklu 11595c08e1173703234cc2913757f237ee916087498aklu @param FHand File Handle. 11605c08e1173703234cc2913757f237ee916087498aklu 11615c08e1173703234cc2913757f237ee916087498aklu @return A pointer to a buffer with file information or NULL is returned 11625c08e1173703234cc2913757f237ee916087498aklu 11635c08e1173703234cc2913757f237ee916087498aklu**/ 11645c08e1173703234cc2913757f237ee916087498akluEFI_FILE_INFO * 11655c08e1173703234cc2913757f237ee916087498akluEfiLibFileInfo ( 11665c08e1173703234cc2913757f237ee916087498aklu IN EFI_FILE_HANDLE FHand 11675c08e1173703234cc2913757f237ee916087498aklu ); 11685c08e1173703234cc2913757f237ee916087498aklu 11695c08e1173703234cc2913757f237ee916087498aklu/** 11705c08e1173703234cc2913757f237ee916087498aklu Find the first instance of this Protocol in the system and return it's interface. 11715c08e1173703234cc2913757f237ee916087498aklu 11725c08e1173703234cc2913757f237ee916087498aklu @param ProtocolGuid Provides the protocol to search for 11735c08e1173703234cc2913757f237ee916087498aklu @param Interface On return, a pointer to the first interface 11745c08e1173703234cc2913757f237ee916087498aklu that matches ProtocolGuid 11755c08e1173703234cc2913757f237ee916087498aklu 11765c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS A protocol instance matching ProtocolGuid was found 11775c08e1173703234cc2913757f237ee916087498aklu @retval EFI_NOT_FOUND No protocol instances were found that match ProtocolGuid 11785c08e1173703234cc2913757f237ee916087498aklu 11795c08e1173703234cc2913757f237ee916087498aklu**/ 11805c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 11815c08e1173703234cc2913757f237ee916087498akluEfiLibLocateProtocol ( 11825c08e1173703234cc2913757f237ee916087498aklu IN EFI_GUID *ProtocolGuid, 11835c08e1173703234cc2913757f237ee916087498aklu OUT VOID **Interface 11845c08e1173703234cc2913757f237ee916087498aklu ); 11855c08e1173703234cc2913757f237ee916087498aklu 11865c08e1173703234cc2913757f237ee916087498aklu/** 11875c08e1173703234cc2913757f237ee916087498aklu Adjusts the size of a previously allocated buffer. 11885c08e1173703234cc2913757f237ee916087498aklu 11895c08e1173703234cc2913757f237ee916087498aklu @param OldPool A pointer to the buffer whose size is being adjusted. 11905c08e1173703234cc2913757f237ee916087498aklu @param OldSize The size of the current buffer. 11915c08e1173703234cc2913757f237ee916087498aklu @param NewSize The size of the new buffer. 11925c08e1173703234cc2913757f237ee916087498aklu 11935c08e1173703234cc2913757f237ee916087498aklu @return The newly allocated buffer. if NULL, allocation failed. 11945c08e1173703234cc2913757f237ee916087498aklu 11955c08e1173703234cc2913757f237ee916087498aklu**/ 11965c08e1173703234cc2913757f237ee916087498akluVOID* 11975c08e1173703234cc2913757f237ee916087498akluEfiReallocatePool ( 11985c08e1173703234cc2913757f237ee916087498aklu IN VOID *OldPool, 11995c08e1173703234cc2913757f237ee916087498aklu IN UINTN OldSize, 12005c08e1173703234cc2913757f237ee916087498aklu IN UINTN NewSize 12015c08e1173703234cc2913757f237ee916087498aklu ); 12025c08e1173703234cc2913757f237ee916087498aklu 12035c08e1173703234cc2913757f237ee916087498aklu/** 12045c08e1173703234cc2913757f237ee916087498aklu Function deletes the variable specified by VarName and VarGuid. 12055c08e1173703234cc2913757f237ee916087498aklu 12065c08e1173703234cc2913757f237ee916087498aklu 12075c08e1173703234cc2913757f237ee916087498aklu @param VarName A Null-terminated Unicode string that is 12085c08e1173703234cc2913757f237ee916087498aklu the name of the vendor's variable. 12095c08e1173703234cc2913757f237ee916087498aklu 12105c08e1173703234cc2913757f237ee916087498aklu @param VarGuid A unique identifier for the vendor. 12115c08e1173703234cc2913757f237ee916087498aklu 12125c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The variable was found and removed 12135c08e1173703234cc2913757f237ee916087498aklu @retval EFI_UNSUPPORTED The variable store was inaccessible 12145c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES The temporary buffer was not available 12155c08e1173703234cc2913757f237ee916087498aklu @retval EFI_NOT_FOUND The variable was not found 12165c08e1173703234cc2913757f237ee916087498aklu 12175c08e1173703234cc2913757f237ee916087498aklu**/ 12185c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 12195c08e1173703234cc2913757f237ee916087498akluEfiLibDeleteVariable ( 12205c08e1173703234cc2913757f237ee916087498aklu IN CHAR16 *VarName, 12215c08e1173703234cc2913757f237ee916087498aklu IN EFI_GUID *VarGuid 12225c08e1173703234cc2913757f237ee916087498aklu ); 12235c08e1173703234cc2913757f237ee916087498aklu 12245c08e1173703234cc2913757f237ee916087498aklu/** 12255c08e1173703234cc2913757f237ee916087498aklu Duplicate a string. 12265c08e1173703234cc2913757f237ee916087498aklu 12275c08e1173703234cc2913757f237ee916087498aklu @param Src The source. 12285c08e1173703234cc2913757f237ee916087498aklu 12295c08e1173703234cc2913757f237ee916087498aklu @return A new string which is duplicated copy of the source. 12305c08e1173703234cc2913757f237ee916087498aklu @retval NULL If there is not enough memory. 12315c08e1173703234cc2913757f237ee916087498aklu 12325c08e1173703234cc2913757f237ee916087498aklu**/ 12335c08e1173703234cc2913757f237ee916087498akluCHAR16 * 12345c08e1173703234cc2913757f237ee916087498akluEfiStrDuplicate ( 12355c08e1173703234cc2913757f237ee916087498aklu IN CHAR16 *Src 12365c08e1173703234cc2913757f237ee916087498aklu ); 12375c08e1173703234cc2913757f237ee916087498aklu 12385c08e1173703234cc2913757f237ee916087498aklu/** 12395c08e1173703234cc2913757f237ee916087498aklu Function is used to determine the number of device path instances 12405c08e1173703234cc2913757f237ee916087498aklu that exist in a device path. 12415c08e1173703234cc2913757f237ee916087498aklu 12425c08e1173703234cc2913757f237ee916087498aklu 12435c08e1173703234cc2913757f237ee916087498aklu @param DevicePath A pointer to a device path data structure. 12445c08e1173703234cc2913757f237ee916087498aklu 12455c08e1173703234cc2913757f237ee916087498aklu @return This function counts and returns the number of device path instances 12465c08e1173703234cc2913757f237ee916087498aklu in DevicePath. 12475c08e1173703234cc2913757f237ee916087498aklu 12485c08e1173703234cc2913757f237ee916087498aklu**/ 12495c08e1173703234cc2913757f237ee916087498akluUINTN 12505c08e1173703234cc2913757f237ee916087498akluEfiDevicePathInstanceCount ( 12515c08e1173703234cc2913757f237ee916087498aklu IN EFI_DEVICE_PATH_PROTOCOL *DevicePath 12525c08e1173703234cc2913757f237ee916087498aklu ); 12535c08e1173703234cc2913757f237ee916087498aklu 12545c08e1173703234cc2913757f237ee916087498aklu/** 12555c08e1173703234cc2913757f237ee916087498aklu Create string tokens for a menu from its help strings and display strings 12565c08e1173703234cc2913757f237ee916087498aklu 12575c08e1173703234cc2913757f237ee916087498aklu 12585c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 12595c08e1173703234cc2913757f237ee916087498aklu @param HiiHandle Hii Handle of the package to be updated. 12605c08e1173703234cc2913757f237ee916087498aklu @param MenuOption The Menu whose string tokens need to be created 12615c08e1173703234cc2913757f237ee916087498aklu 12625c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS string tokens created successfully 12635c08e1173703234cc2913757f237ee916087498aklu @retval others contain some errors 12645c08e1173703234cc2913757f237ee916087498aklu 12655c08e1173703234cc2913757f237ee916087498aklu**/ 12665c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 12675c08e1173703234cc2913757f237ee916087498akluCreateMenuStringToken ( 12685c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 12695c08e1173703234cc2913757f237ee916087498aklu IN EFI_HII_HANDLE HiiHandle, 12705c08e1173703234cc2913757f237ee916087498aklu IN BM_MENU_OPTION *MenuOption 12715c08e1173703234cc2913757f237ee916087498aklu ); 12725c08e1173703234cc2913757f237ee916087498aklu 12735c08e1173703234cc2913757f237ee916087498aklu/** 12745c08e1173703234cc2913757f237ee916087498aklu Get a string from the Data Hub record based on 12755c08e1173703234cc2913757f237ee916087498aklu a device path. 12765c08e1173703234cc2913757f237ee916087498aklu 12775c08e1173703234cc2913757f237ee916087498aklu @param DevPath The device Path. 12785c08e1173703234cc2913757f237ee916087498aklu 12795c08e1173703234cc2913757f237ee916087498aklu @return A string located from the Data Hub records based on 12805c08e1173703234cc2913757f237ee916087498aklu the device path. 12815c08e1173703234cc2913757f237ee916087498aklu @retval NULL If failed to get the String from Data Hub. 12825c08e1173703234cc2913757f237ee916087498aklu 12835c08e1173703234cc2913757f237ee916087498aklu**/ 12845c08e1173703234cc2913757f237ee916087498akluUINT16 * 12855c08e1173703234cc2913757f237ee916087498akluEfiLibStrFromDatahub ( 12865c08e1173703234cc2913757f237ee916087498aklu IN EFI_DEVICE_PATH_PROTOCOL *DevPath 12875c08e1173703234cc2913757f237ee916087498aklu ); 12885c08e1173703234cc2913757f237ee916087498aklu 12895c08e1173703234cc2913757f237ee916087498aklu/** 12905c08e1173703234cc2913757f237ee916087498aklu Get the index number (#### in Boot####) for the boot option pointed to a BBS legacy device type 12915c08e1173703234cc2913757f237ee916087498aklu specified by DeviceType. 12925c08e1173703234cc2913757f237ee916087498aklu 12935c08e1173703234cc2913757f237ee916087498aklu @param DeviceType The legacy device type. It can be floppy, network, harddisk, cdrom, 12945c08e1173703234cc2913757f237ee916087498aklu etc. 12955c08e1173703234cc2913757f237ee916087498aklu @param OptionIndex Returns the index number (#### in Boot####). 12965c08e1173703234cc2913757f237ee916087498aklu @param OptionSize Return the size of the Boot### variable. 12975c08e1173703234cc2913757f237ee916087498aklu 12985c08e1173703234cc2913757f237ee916087498aklu**/ 12995c08e1173703234cc2913757f237ee916087498akluVOID * 13005c08e1173703234cc2913757f237ee916087498akluGetLegacyBootOptionVar ( 13015c08e1173703234cc2913757f237ee916087498aklu IN UINTN DeviceType, 13025c08e1173703234cc2913757f237ee916087498aklu OUT UINTN *OptionIndex, 13035c08e1173703234cc2913757f237ee916087498aklu OUT UINTN *OptionSize 13045c08e1173703234cc2913757f237ee916087498aklu ); 13055c08e1173703234cc2913757f237ee916087498aklu 13065c08e1173703234cc2913757f237ee916087498aklu/** 13075c08e1173703234cc2913757f237ee916087498aklu Initialize the Boot Maintenance Utitliy. 13085c08e1173703234cc2913757f237ee916087498aklu 13095c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS utility ended successfully. 13105c08e1173703234cc2913757f237ee916087498aklu @retval others contain some errors. 13115c08e1173703234cc2913757f237ee916087498aklu 13125c08e1173703234cc2913757f237ee916087498aklu**/ 13135c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 13145c08e1173703234cc2913757f237ee916087498akluInitializeBM ( 13155c08e1173703234cc2913757f237ee916087498aklu VOID 13165c08e1173703234cc2913757f237ee916087498aklu ); 13175c08e1173703234cc2913757f237ee916087498aklu 13185c08e1173703234cc2913757f237ee916087498aklu/** 13195c08e1173703234cc2913757f237ee916087498aklu Start boot maintenance manager 13205c08e1173703234cc2913757f237ee916087498aklu 13215c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS If BMM is invoked successfully. 13225c08e1173703234cc2913757f237ee916087498aklu @return Other value if BMM return unsuccessfully. 13235c08e1173703234cc2913757f237ee916087498aklu 13245c08e1173703234cc2913757f237ee916087498aklu**/ 13255c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 13265c08e1173703234cc2913757f237ee916087498akluBdsStartBootMaint ( 13275c08e1173703234cc2913757f237ee916087498aklu VOID 13285c08e1173703234cc2913757f237ee916087498aklu ); 13295c08e1173703234cc2913757f237ee916087498aklu 13305c08e1173703234cc2913757f237ee916087498aklu/** 13315c08e1173703234cc2913757f237ee916087498aklu Intialize all the string depositories. 13325c08e1173703234cc2913757f237ee916087498aklu 13335c08e1173703234cc2913757f237ee916087498aklu**/ 13345c08e1173703234cc2913757f237ee916087498akluVOID 13355c08e1173703234cc2913757f237ee916087498akluInitializeStringDepository ( 13365c08e1173703234cc2913757f237ee916087498aklu VOID 13375c08e1173703234cc2913757f237ee916087498aklu ); 13385c08e1173703234cc2913757f237ee916087498aklu 13395c08e1173703234cc2913757f237ee916087498aklu/** 13405c08e1173703234cc2913757f237ee916087498aklu Fetch a usable string node from the string depository and return the string token. 13415c08e1173703234cc2913757f237ee916087498aklu 13425c08e1173703234cc2913757f237ee916087498aklu 13435c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 13445c08e1173703234cc2913757f237ee916087498aklu @param StringDepository Pointer of the string depository. 13455c08e1173703234cc2913757f237ee916087498aklu 13465c08e1173703234cc2913757f237ee916087498aklu @retval EFI_STRING_ID String token. 13475c08e1173703234cc2913757f237ee916087498aklu 13485c08e1173703234cc2913757f237ee916087498aklu**/ 13495c08e1173703234cc2913757f237ee916087498akluEFI_STRING_ID 13505c08e1173703234cc2913757f237ee916087498akluGetStringTokenFromDepository ( 13515c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 13525c08e1173703234cc2913757f237ee916087498aklu IN STRING_DEPOSITORY *StringDepository 13535c08e1173703234cc2913757f237ee916087498aklu ); 13545c08e1173703234cc2913757f237ee916087498aklu 13555c08e1173703234cc2913757f237ee916087498aklu/** 13565c08e1173703234cc2913757f237ee916087498aklu Reclaim string depositories by moving the current node pointer to list head.. 13575c08e1173703234cc2913757f237ee916087498aklu**/ 13585c08e1173703234cc2913757f237ee916087498akluVOID 13595c08e1173703234cc2913757f237ee916087498akluReclaimStringDepository ( 13605c08e1173703234cc2913757f237ee916087498aklu VOID 13615c08e1173703234cc2913757f237ee916087498aklu ); 13625c08e1173703234cc2913757f237ee916087498aklu 13635c08e1173703234cc2913757f237ee916087498aklu/** 13645c08e1173703234cc2913757f237ee916087498aklu Release resource for all the string depositories. 13655c08e1173703234cc2913757f237ee916087498aklu 13665c08e1173703234cc2913757f237ee916087498aklu**/ 13675c08e1173703234cc2913757f237ee916087498akluVOID 13685c08e1173703234cc2913757f237ee916087498akluCleanUpStringDepository ( 13695c08e1173703234cc2913757f237ee916087498aklu VOID 13705c08e1173703234cc2913757f237ee916087498aklu ); 13715c08e1173703234cc2913757f237ee916087498aklu 13725c08e1173703234cc2913757f237ee916087498aklu/** 13735c08e1173703234cc2913757f237ee916087498aklu Function handling request to apply changes for BMM pages. 13745c08e1173703234cc2913757f237ee916087498aklu 13755c08e1173703234cc2913757f237ee916087498aklu @param Private Pointer to callback data buffer. 13765c08e1173703234cc2913757f237ee916087498aklu @param CurrentFakeNVMap Pointer to buffer holding data of various values used by BMM 13775c08e1173703234cc2913757f237ee916087498aklu @param FormId ID of the form which has sent the request to apply change. 13785c08e1173703234cc2913757f237ee916087498aklu 13795c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS Change successfully applied. 13805c08e1173703234cc2913757f237ee916087498aklu @retval Other Error occurs while trying to apply changes. 13815c08e1173703234cc2913757f237ee916087498aklu 13825c08e1173703234cc2913757f237ee916087498aklu**/ 13835c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 13845c08e1173703234cc2913757f237ee916087498akluApplyChangeHandler ( 13855c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *Private, 13865c08e1173703234cc2913757f237ee916087498aklu IN BMM_FAKE_NV_DATA *CurrentFakeNVMap, 13875c08e1173703234cc2913757f237ee916087498aklu IN EFI_FORM_ID FormId 13885c08e1173703234cc2913757f237ee916087498aklu ); 13895c08e1173703234cc2913757f237ee916087498aklu 13905c08e1173703234cc2913757f237ee916087498aklu/** 13915c08e1173703234cc2913757f237ee916087498aklu Discard all changes done to the BMM pages such as Boot Order change, 13925c08e1173703234cc2913757f237ee916087498aklu Driver order change. 13935c08e1173703234cc2913757f237ee916087498aklu 13945c08e1173703234cc2913757f237ee916087498aklu @param Private The BMM context data. 13955c08e1173703234cc2913757f237ee916087498aklu @param CurrentFakeNVMap The current Fack NV Map. 13965c08e1173703234cc2913757f237ee916087498aklu 13975c08e1173703234cc2913757f237ee916087498aklu**/ 13985c08e1173703234cc2913757f237ee916087498akluVOID 13995c08e1173703234cc2913757f237ee916087498akluDiscardChangeHandler ( 14005c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *Private, 14015c08e1173703234cc2913757f237ee916087498aklu IN BMM_FAKE_NV_DATA *CurrentFakeNVMap 14025c08e1173703234cc2913757f237ee916087498aklu ); 14035c08e1173703234cc2913757f237ee916087498aklu 14045c08e1173703234cc2913757f237ee916087498aklu/** 14055c08e1173703234cc2913757f237ee916087498aklu Dispatch the display to the next page based on NewPageId. 14065c08e1173703234cc2913757f237ee916087498aklu 14075c08e1173703234cc2913757f237ee916087498aklu @param Private The BMM context data. 14085c08e1173703234cc2913757f237ee916087498aklu @param NewPageId The original page ID. 14095c08e1173703234cc2913757f237ee916087498aklu 14105c08e1173703234cc2913757f237ee916087498aklu**/ 14115c08e1173703234cc2913757f237ee916087498akluVOID 14125c08e1173703234cc2913757f237ee916087498akluUpdatePageId ( 14135c08e1173703234cc2913757f237ee916087498aklu BMM_CALLBACK_DATA *Private, 14145c08e1173703234cc2913757f237ee916087498aklu UINT16 NewPageId 14155c08e1173703234cc2913757f237ee916087498aklu ); 14165c08e1173703234cc2913757f237ee916087498aklu 14175c08e1173703234cc2913757f237ee916087498aklu/** 14185c08e1173703234cc2913757f237ee916087498aklu Boot a file selected by user at File Expoloer of BMM. 14195c08e1173703234cc2913757f237ee916087498aklu 14205c08e1173703234cc2913757f237ee916087498aklu @param FileContext The file context data, which contains the device path 14215c08e1173703234cc2913757f237ee916087498aklu of the file to be boot from. 14225c08e1173703234cc2913757f237ee916087498aklu 14235c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The function completed successfull. 14245c08e1173703234cc2913757f237ee916087498aklu @return Other value if the boot from the file fails. 14255c08e1173703234cc2913757f237ee916087498aklu 14265c08e1173703234cc2913757f237ee916087498aklu**/ 14275c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 14285c08e1173703234cc2913757f237ee916087498akluBootThisFile ( 14295c08e1173703234cc2913757f237ee916087498aklu IN BM_FILE_CONTEXT *FileContext 14305c08e1173703234cc2913757f237ee916087498aklu ); 14315c08e1173703234cc2913757f237ee916087498aklu 14325c08e1173703234cc2913757f237ee916087498aklu/** 14335c08e1173703234cc2913757f237ee916087498aklu Update the file explower page with the refershed file system. 14345c08e1173703234cc2913757f237ee916087498aklu 14355c08e1173703234cc2913757f237ee916087498aklu 14365c08e1173703234cc2913757f237ee916087498aklu @param CallbackData BMM context data 14375c08e1173703234cc2913757f237ee916087498aklu @param KeyValue Key value to identify the type of data to expect. 14385c08e1173703234cc2913757f237ee916087498aklu 14395c08e1173703234cc2913757f237ee916087498aklu @retval TRUE Inform the caller to create a callback packet to exit file explorer. 14405c08e1173703234cc2913757f237ee916087498aklu @retval FALSE Indicate that there is no need to exit file explorer. 14415c08e1173703234cc2913757f237ee916087498aklu 14425c08e1173703234cc2913757f237ee916087498aklu**/ 14435c08e1173703234cc2913757f237ee916087498akluBOOLEAN 14445c08e1173703234cc2913757f237ee916087498akluUpdateFileExplorer ( 14455c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData, 14465c08e1173703234cc2913757f237ee916087498aklu IN UINT16 KeyValue 14475c08e1173703234cc2913757f237ee916087498aklu ); 14485c08e1173703234cc2913757f237ee916087498aklu 14495c08e1173703234cc2913757f237ee916087498aklu/** 14505c08e1173703234cc2913757f237ee916087498aklu This function processes the results of changes in configuration. 14515c08e1173703234cc2913757f237ee916087498aklu When user select a interactive opcode, this callback will be triggered. 14525c08e1173703234cc2913757f237ee916087498aklu Based on the Question(QuestionId) that triggers the callback, the corresponding 14535c08e1173703234cc2913757f237ee916087498aklu actions is performed. It handles: 14545c08e1173703234cc2913757f237ee916087498aklu 14555c08e1173703234cc2913757f237ee916087498aklu 1) the addition of boot option. 14565c08e1173703234cc2913757f237ee916087498aklu 2) the addition of driver option. 14575c08e1173703234cc2913757f237ee916087498aklu 3) exit from file browser 14585c08e1173703234cc2913757f237ee916087498aklu 4) update of file content if a dir is selected. 14595c08e1173703234cc2913757f237ee916087498aklu 5) boot the file if a file is selected in "boot from file" 14605c08e1173703234cc2913757f237ee916087498aklu 14615c08e1173703234cc2913757f237ee916087498aklu 14625c08e1173703234cc2913757f237ee916087498aklu @param This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL. 14635c08e1173703234cc2913757f237ee916087498aklu @param Action Specifies the type of action taken by the browser. 14645c08e1173703234cc2913757f237ee916087498aklu @param QuestionId A unique value which is sent to the original exporting driver 14655c08e1173703234cc2913757f237ee916087498aklu so that it can identify the type of data to expect. 14665c08e1173703234cc2913757f237ee916087498aklu @param Type The type of value for the question. 14675c08e1173703234cc2913757f237ee916087498aklu @param Value A pointer to the data being sent to the original exporting driver. 14685c08e1173703234cc2913757f237ee916087498aklu @param ActionRequest On return, points to the action requested by the callback function. 14695c08e1173703234cc2913757f237ee916087498aklu 14705c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS The callback successfully handled the action. 14715c08e1173703234cc2913757f237ee916087498aklu @retval EFI_OUT_OF_RESOURCES Not enough storage is available to hold the variable and its data. 14725c08e1173703234cc2913757f237ee916087498aklu @retval EFI_DEVICE_ERROR The variable could not be saved. 14735c08e1173703234cc2913757f237ee916087498aklu @retval EFI_UNSUPPORTED The specified Action is not supported by the callback. 14745c08e1173703234cc2913757f237ee916087498aklu 14755c08e1173703234cc2913757f237ee916087498aklu**/ 14765c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 14775c08e1173703234cc2913757f237ee916087498akluEFIAPI 14785c08e1173703234cc2913757f237ee916087498akluFileExplorerCallback ( 14795c08e1173703234cc2913757f237ee916087498aklu IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This, 14805c08e1173703234cc2913757f237ee916087498aklu IN EFI_BROWSER_ACTION Action, 14815c08e1173703234cc2913757f237ee916087498aklu IN EFI_QUESTION_ID QuestionId, 14825c08e1173703234cc2913757f237ee916087498aklu IN UINT8 Type, 14835c08e1173703234cc2913757f237ee916087498aklu IN EFI_IFR_TYPE_VALUE *Value, 14845c08e1173703234cc2913757f237ee916087498aklu OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest 14855c08e1173703234cc2913757f237ee916087498aklu ); 14865c08e1173703234cc2913757f237ee916087498aklu 14875c08e1173703234cc2913757f237ee916087498aklu/** 14885c08e1173703234cc2913757f237ee916087498aklu Dispatch BMM formset and FileExplorer formset. 14895c08e1173703234cc2913757f237ee916087498aklu 14905c08e1173703234cc2913757f237ee916087498aklu 14915c08e1173703234cc2913757f237ee916087498aklu @param CallbackData The BMM context data. 14925c08e1173703234cc2913757f237ee916087498aklu 14935c08e1173703234cc2913757f237ee916087498aklu @retval EFI_SUCCESS If function complete successfully. 14945c08e1173703234cc2913757f237ee916087498aklu @return Other value if the Setup Browser process BMM's pages and 14955c08e1173703234cc2913757f237ee916087498aklu return unsuccessfully. 14965c08e1173703234cc2913757f237ee916087498aklu 14975c08e1173703234cc2913757f237ee916087498aklu**/ 14985c08e1173703234cc2913757f237ee916087498akluEFI_STATUS 14995c08e1173703234cc2913757f237ee916087498akluFormSetDispatcher ( 15005c08e1173703234cc2913757f237ee916087498aklu IN BMM_CALLBACK_DATA *CallbackData 15015c08e1173703234cc2913757f237ee916087498aklu ); 15025c08e1173703234cc2913757f237ee916087498aklu 15035c08e1173703234cc2913757f237ee916087498aklu/** 15045c08e1173703234cc2913757f237ee916087498aklu Function returns the value of the specified variable. 15055c08e1173703234cc2913757f237ee916087498aklu 15065c08e1173703234cc2913757f237ee916087498aklu @param Name A Null-terminated Unicode string that is 15075c08e1173703234cc2913757f237ee916087498aklu the name of the vendor's variable. 15085c08e1173703234cc2913757f237ee916087498aklu @param VendorGuid A unique identifier for the vendor. 15095c08e1173703234cc2913757f237ee916087498aklu 15105c08e1173703234cc2913757f237ee916087498aklu @return The payload of the variable. 15115c08e1173703234cc2913757f237ee916087498aklu @retval NULL If the variable can't be read. 15125c08e1173703234cc2913757f237ee916087498aklu 15135c08e1173703234cc2913757f237ee916087498aklu**/ 15145c08e1173703234cc2913757f237ee916087498akluVOID * 15155c08e1173703234cc2913757f237ee916087498akluEfiLibGetVariable ( 15165c08e1173703234cc2913757f237ee916087498aklu IN CHAR16 *Name, 15175c08e1173703234cc2913757f237ee916087498aklu IN EFI_GUID *VendorGuid 15185c08e1173703234cc2913757f237ee916087498aklu ); 15195c08e1173703234cc2913757f237ee916087498aklu 15205c08e1173703234cc2913757f237ee916087498aklu// 15215c08e1173703234cc2913757f237ee916087498aklu// Global variable in this program (defined in data.c) 15225c08e1173703234cc2913757f237ee916087498aklu// 15235c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION BootOptionMenu; 15245c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION DriverOptionMenu; 15255c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION FsOptionMenu; 15265c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION ConsoleInpMenu; 15275c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION ConsoleOutMenu; 15285c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION ConsoleErrMenu; 15295c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION DirectoryMenu; 15305c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION DriverMenu; 15315c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION TerminalMenu; 15325c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION LegacyFDMenu; 15335c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION LegacyHDMenu; 15345c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION LegacyCDMenu; 15355c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION LegacyNETMenu; 15365c08e1173703234cc2913757f237ee916087498akluextern BM_MENU_OPTION LegacyBEVMenu; 15375c08e1173703234cc2913757f237ee916087498akluextern UINT16 TerminalType[]; 15385c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR BaudRateList[19]; 15395c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR DataBitsList[4]; 15405c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR ParityList[5]; 15415c08e1173703234cc2913757f237ee916087498akluextern COM_ATTR StopBitsList[3]; 15425c08e1173703234cc2913757f237ee916087498akluextern EFI_GUID TerminalTypeGuid[4]; 15435c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *FileOptionStrDepository; 15445c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *ConsoleOptionStrDepository; 15455c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *BootOptionStrDepository; 15465c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *BootOptionHelpStrDepository; 15475c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *DriverOptionStrDepository; 15485c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *DriverOptionHelpStrDepository; 15495c08e1173703234cc2913757f237ee916087498akluextern STRING_DEPOSITORY *TerminalStrDepository; 15505c08e1173703234cc2913757f237ee916087498akluextern EFI_DEVICE_PATH_PROTOCOL EndDevicePath[]; 15515c08e1173703234cc2913757f237ee916087498akluextern EFI_GUID EfiLegacyDevOrderGuid; 15525c08e1173703234cc2913757f237ee916087498aklu 155375bf9d0ecca38dfec9b645a6eb1119c025892304lgao// 155475bf9d0ecca38dfec9b645a6eb1119c025892304lgao// Shared IFR form update data 155575bf9d0ecca38dfec9b645a6eb1119c025892304lgao// 155675bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern VOID *mStartOpCodeHandle; 155775bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern VOID *mEndOpCodeHandle; 155875bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern EFI_IFR_GUID_LABEL *mStartLabel; 155975bf9d0ecca38dfec9b645a6eb1119c025892304lgaoextern EFI_IFR_GUID_LABEL *mEndLabel; 156075bf9d0ecca38dfec9b645a6eb1119c025892304lgao 15615c08e1173703234cc2913757f237ee916087498aklu#endif 1562