mirror of https://github.com/acidanthera/audk.git
1088 lines
28 KiB
C
1088 lines
28 KiB
C
/*++
|
|
|
|
Copyright (c) 2004 - 2008, Intel Corporation
|
|
All rights reserved. This program and the accompanying materials
|
|
are licensed and made available under the terms and conditions of the BSD License
|
|
which accompanies this distribution. The full text of the license may be found at
|
|
http://opensource.org/licenses/bsd-license.php
|
|
|
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
|
|
Module Name:
|
|
|
|
BootMaint.h
|
|
|
|
Abstract:
|
|
|
|
Revision History
|
|
|
|
--*/
|
|
|
|
#ifndef _BOOT_MAINT_H
|
|
#define _BOOT_MAINT_H
|
|
|
|
#include "Bds.h"
|
|
#include "BBSsupport.h"
|
|
#include "FormGuid.h"
|
|
#include "FrontPage.h"
|
|
|
|
//
|
|
// Constants which are variable names used to access variables
|
|
//
|
|
#define VarLegacyDevOrder L"LegacyDevOrder"
|
|
|
|
#define VarConOutMode L"ConOutMode"
|
|
|
|
//
|
|
// Guid of a NV Variable which store the information about the
|
|
// FD/HD/CD/NET/BEV order
|
|
//
|
|
#define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \
|
|
{ \
|
|
0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \
|
|
}
|
|
|
|
//
|
|
// String Contant
|
|
//
|
|
#define StrFloppy L"Floppy Drive #%02x"
|
|
#define StrHardDisk L"HardDisk Drive #%02x"
|
|
#define StrCDROM L"ATAPI CDROM Drive #%02x"
|
|
#define StrNET L"NET Drive #%02x"
|
|
#define StrBEV L"BEV Drive #%02x"
|
|
#define StrFloppyHelp L"Select Floppy Drive #%02x"
|
|
#define StrHardDiskHelp L"Select HardDisk Drive #%02x"
|
|
#define StrCDROMHelp L"Select ATAPI CDROM Drive #%02x"
|
|
#define StrNETHelp L"NET Drive #%02x"
|
|
#define StrBEVHelp L"BEV Drive #%02x"
|
|
|
|
//
|
|
// Variable created with this flag will be "Efi:...."
|
|
//
|
|
#define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
|
|
|
|
//
|
|
// Define Maxmim characters that will be accepted
|
|
//
|
|
#define MAX_CHAR 480
|
|
#define MAX_CHAR_SIZE (MAX_CHAR * 2)
|
|
|
|
//
|
|
// Check to see if current build support option active feature of
|
|
// some driver option
|
|
//
|
|
#ifndef LOAD_OPTION_ACTIVE
|
|
#define LOAD_OPTION_ACTIVE 0x00000001
|
|
#endif
|
|
|
|
//
|
|
// Check to see if current build support force reconnect feature of
|
|
// some driver option
|
|
//
|
|
#ifndef LOAD_OPTION_FORCE_RECONNECT
|
|
#define LOAD_OPTION_FORCE_RECONNECT 0x00000002
|
|
#endif
|
|
|
|
extern EFI_GUID mBootMaintGuid;
|
|
extern EFI_GUID mFileExplorerGuid;
|
|
|
|
//
|
|
// These are the VFR compiler generated data representing our VFR data.
|
|
//
|
|
extern UINT8 BmBin[];
|
|
extern UINT8 FEBin[];
|
|
|
|
//
|
|
// Below are the number of options in Baudrate, Databits,
|
|
// Parity and Stopbits selection for serial ports.
|
|
//
|
|
#define BM_COM_ATTR_BUADRATE 19
|
|
#define BM_COM_ATTR_DATABITS 4
|
|
#define BM_COM_ATTR_PARITY 5
|
|
#define BM_COM_ATTR_STOPBITS 3
|
|
|
|
//
|
|
// Callback function helper
|
|
//
|
|
#define BMM_CALLBACK_DATA_SIGNATURE EFI_SIGNATURE_32 ('C', 'b', 'c', 'k')
|
|
#define BMM_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
|
|
|
|
#define FE_CALLBACK_DATA_FROM_THIS(a) CR (a, BMM_CALLBACK_DATA, FeConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
|
|
|
|
//
|
|
// Enumeration type definition
|
|
//
|
|
typedef UINT8 BBS_TYPE;
|
|
|
|
typedef enum {
|
|
PC_ANSI = 0,
|
|
VT_100,
|
|
VT_100_PLUS,
|
|
VT_UTF8
|
|
} TYPE_OF_TERMINAL;
|
|
|
|
typedef enum {
|
|
COM1 = 0,
|
|
COM2,
|
|
UNKNOW_COM
|
|
} TYPE_OF_COM;
|
|
|
|
typedef enum {
|
|
CONIN = 0,
|
|
CONOUT,
|
|
CONERR,
|
|
UNKNOWN_CON
|
|
} TYPE_OF_CON;
|
|
|
|
typedef enum {
|
|
BAUDRATE = 0,
|
|
DATABITS,
|
|
PARITY,
|
|
STOPBITS,
|
|
UNKNOW_ATTR
|
|
} TYPE_OF_ATTRIBUTE;
|
|
|
|
typedef enum {
|
|
MANNER_GOTO = 0,
|
|
MANNER_CHECK,
|
|
MANNER_ONEOF,
|
|
MANNER_USER_DEFINE
|
|
} TYPE_OF_UPATE_MANNER;
|
|
|
|
typedef enum {
|
|
INACTIVE_STATE = 0,
|
|
BOOT_FROM_FILE_STATE,
|
|
ADD_BOOT_OPTION_STATE,
|
|
ADD_DRIVER_OPTION_STATE,
|
|
UNKNOWN_STATE
|
|
} FILE_EXPLORER_STATE;
|
|
|
|
typedef enum {
|
|
FILE_SYSTEM,
|
|
DIRECTORY,
|
|
UNKNOWN_CONTEXT
|
|
} FILE_EXPLORER_DISPLAY_CONTEXT;
|
|
|
|
//
|
|
// All of the signatures that will be used in list structure
|
|
//
|
|
#define BM_MENU_OPTION_SIGNATURE 'menu'
|
|
#define BM_LOAD_OPTION_SIGNATURE 'load'
|
|
#define BM_CONSOLE_OPTION_SIGNATURE 'cnsl'
|
|
#define BM_FILE_OPTION_SIGNATURE 'file'
|
|
#define BM_HANDLE_OPTION_SIGNATURE 'hndl'
|
|
#define BM_TERMINAL_OPTION_SIGNATURE 'trml'
|
|
#define BM_MENU_ENTRY_SIGNATURE 'entr'
|
|
|
|
#define BM_LOAD_CONTEXT_SELECT 0x0
|
|
#define BM_CONSOLE_CONTEXT_SELECT 0x1
|
|
#define BM_FILE_CONTEXT_SELECT 0x2
|
|
#define BM_HANDLE_CONTEXT_SELECT 0x3
|
|
#define BM_TERMINAL_CONTEXT_SELECT 0x5
|
|
|
|
#define BM_CONSOLE_IN_CONTEXT_SELECT 0x6
|
|
#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
|
|
#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
|
|
#define BM_LEGACY_DEV_CONTEXT_SELECT 0x9
|
|
|
|
//
|
|
// Buffer size for update data
|
|
//
|
|
#define UPDATE_DATA_SIZE 0x100000
|
|
|
|
//
|
|
// Namespace of callback keys used in display and file system navigation
|
|
//
|
|
#define MAX_BBS_OFFSET 0xE000
|
|
#define NET_OPTION_OFFSET 0xD800
|
|
#define BEV_OPTION_OFFSET 0xD000
|
|
#define FD_OPTION_OFFSET 0xC000
|
|
#define HD_OPTION_OFFSET 0xB000
|
|
#define CD_OPTION_OFFSET 0xA000
|
|
#define FILE_OPTION_OFFSET 0x8000
|
|
#define FILE_OPTION_MASK 0x7FFF
|
|
#define HANDLE_OPTION_OFFSET 0x7000
|
|
#define CONSOLE_OPTION_OFFSET 0x6000
|
|
#define TERMINAL_OPTION_OFFSET 0x5000
|
|
#define CONFIG_OPTION_OFFSET 0x1200
|
|
#define KEY_VALUE_OFFSET 0x1100
|
|
#define FORM_ID_OFFSET 0x1000
|
|
|
|
//
|
|
// VarOffset that will be used to create question
|
|
// all these values are computed from the structure
|
|
// defined below
|
|
//
|
|
#define VAR_OFFSET(Field) ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA *) 0)->Field)))
|
|
|
|
//
|
|
// Question Id of Zero is invalid, so add an offset to it
|
|
//
|
|
#define QUESTION_ID(Field) (VAR_OFFSET (Field) + CONFIG_OPTION_OFFSET)
|
|
|
|
#define BOOT_TIME_OUT_VAR_OFFSET VAR_OFFSET (BootTimeOut)
|
|
#define BOOT_NEXT_VAR_OFFSET VAR_OFFSET (BootNext)
|
|
#define COM1_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM1BaudRate)
|
|
#define COM1_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM1DataRate)
|
|
#define COM1_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM1StopBits)
|
|
#define COM1_PARITY_VAR_OFFSET VAR_OFFSET (COM1Parity)
|
|
#define COM1_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
|
|
#define COM2_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COM2BaudRate)
|
|
#define COM2_DATA_RATE_VAR_OFFSET VAR_OFFSET (COM2DataRate)
|
|
#define COM2_STOP_BITS_VAR_OFFSET VAR_OFFSET (COM2StopBits)
|
|
#define COM2_PARITY_VAR_OFFSET VAR_OFFSET (COM2Parity)
|
|
#define COM2_TERMINAL_VAR_OFFSET VAR_OFFSET (COM2TerminalType)
|
|
#define DRV_ADD_HANDLE_DESC_VAR_OFFSET VAR_OFFSET (DriverAddHandleDesc)
|
|
#define DRV_ADD_ACTIVE_VAR_OFFSET VAR_OFFSET (DriverAddActive)
|
|
#define DRV_ADD_RECON_VAR_OFFSET VAR_OFFSET (DriverAddForceReconnect)
|
|
#define CON_IN_COM1_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM1)
|
|
#define CON_IN_COM2_VAR_OFFSET VAR_OFFSET (ConsoleInputCOM2)
|
|
#define CON_OUT_COM1_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM1)
|
|
#define CON_OUT_COM2_VAR_OFFSET VAR_OFFSET (ConsoleOutputCOM2)
|
|
#define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)
|
|
#define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)
|
|
#define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)
|
|
#define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)
|
|
#define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)
|
|
#define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)
|
|
#define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)
|
|
#define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)
|
|
#define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)
|
|
#define COM_BAUD_RATE_VAR_OFFSET VAR_OFFSET (COMBaudRate)
|
|
#define COM_DATA_RATE_VAR_OFFSET VAR_OFFSET (COMDataRate)
|
|
#define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)
|
|
#define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)
|
|
#define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)
|
|
#define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)
|
|
#define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)
|
|
#define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)
|
|
#define LEGACY_NET_VAR_OFFSET VAR_OFFSET (LegacyNET)
|
|
#define LEGACY_BEV_VAR_OFFSET VAR_OFFSET (LegacyBEV)
|
|
|
|
#define BOOT_TIME_OUT_QUESTION_ID QUESTION_ID (BootTimeOut)
|
|
#define BOOT_NEXT_QUESTION_ID QUESTION_ID (BootNext)
|
|
#define COM1_BAUD_RATE_QUESTION_ID QUESTION_ID (COM1BaudRate)
|
|
#define COM1_DATA_RATE_QUESTION_ID QUESTION_ID (COM1DataRate)
|
|
#define COM1_STOP_BITS_QUESTION_ID QUESTION_ID (COM1StopBits)
|
|
#define COM1_PARITY_QUESTION_ID QUESTION_ID (COM1Parity)
|
|
#define COM1_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
|
|
#define COM2_BAUD_RATE_QUESTION_ID QUESTION_ID (COM2BaudRate)
|
|
#define COM2_DATA_RATE_QUESTION_ID QUESTION_ID (COM2DataRate)
|
|
#define COM2_STOP_BITS_QUESTION_ID QUESTION_ID (COM2StopBits)
|
|
#define COM2_PARITY_QUESTION_ID QUESTION_ID (COM2Parity)
|
|
#define COM2_TERMINAL_QUESTION_ID QUESTION_ID (COM2TerminalType)
|
|
#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
|
|
#define DRV_ADD_ACTIVE_QUESTION_ID QUESTION_ID (DriverAddActive)
|
|
#define DRV_ADD_RECON_QUESTION_ID QUESTION_ID (DriverAddForceReconnect)
|
|
#define CON_IN_COM1_QUESTION_ID QUESTION_ID (ConsoleInputCOM1)
|
|
#define CON_IN_COM2_QUESTION_ID QUESTION_ID (ConsoleInputCOM2)
|
|
#define CON_OUT_COM1_QUESTION_ID QUESTION_ID (ConsoleOutputCOM1)
|
|
#define CON_OUT_COM2_QUESTION_ID QUESTION_ID (ConsoleOutputCOM2)
|
|
#define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)
|
|
#define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)
|
|
#define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)
|
|
#define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)
|
|
#define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)
|
|
#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)
|
|
#define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)
|
|
#define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)
|
|
#define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)
|
|
#define COM_BAUD_RATE_QUESTION_ID QUESTION_ID (COMBaudRate)
|
|
#define COM_DATA_RATE_QUESTION_ID QUESTION_ID (COMDataRate)
|
|
#define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)
|
|
#define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)
|
|
#define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)
|
|
#define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)
|
|
#define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)
|
|
#define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)
|
|
#define LEGACY_NET_QUESTION_ID QUESTION_ID (LegacyNET)
|
|
#define LEGACY_BEV_QUESTION_ID QUESTION_ID (LegacyBEV)
|
|
|
|
#define STRING_DEPOSITORY_NUMBER 8
|
|
|
|
//
|
|
// #pragma pack(1)
|
|
//
|
|
// Serial Ports attributes, first one is the value for
|
|
// return from callback function, stringtoken is used to
|
|
// display the value properly
|
|
//
|
|
typedef struct {
|
|
UINTN Value;
|
|
UINT16 StringToken;
|
|
} COM_ATTR;
|
|
|
|
typedef struct {
|
|
BBS_TYPE BbsType;
|
|
//
|
|
// Length = sizeof (UINT16) + SIZEOF (Data)
|
|
//
|
|
UINT16 Length;
|
|
UINT16 *Data;
|
|
} BM_LEGACY_DEV_ORDER_CONTEXT;
|
|
|
|
typedef struct {
|
|
UINT64 BaudRate;
|
|
UINT8 DataBits;
|
|
UINT8 Parity;
|
|
UINT8 StopBits;
|
|
|
|
UINT8 BaudRateIndex;
|
|
UINT8 DataBitsIndex;
|
|
UINT8 ParityIndex;
|
|
UINT8 StopBitsIndex;
|
|
|
|
UINT8 IsConIn;
|
|
UINT8 IsConOut;
|
|
UINT8 IsStdErr;
|
|
UINT8 TerminalType;
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
} BM_TERMINAL_CONTEXT;
|
|
|
|
typedef struct {
|
|
BOOLEAN IsBootNext;
|
|
BOOLEAN LoadOptionModified;
|
|
BOOLEAN Deleted;
|
|
|
|
BOOLEAN IsLegacy;
|
|
BOOLEAN IsActive;
|
|
BOOLEAN ForceReconnect;
|
|
UINTN OptionalDataSize;
|
|
|
|
UINTN LoadOptionSize;
|
|
UINT8 *LoadOption;
|
|
|
|
UINT32 Attributes;
|
|
UINT16 FilePathListLength;
|
|
UINT16 *Description;
|
|
EFI_DEVICE_PATH_PROTOCOL *FilePathList;
|
|
UINT8 *OptionalData;
|
|
|
|
UINT16 BbsIndex;
|
|
} BM_LOAD_CONTEXT;
|
|
|
|
typedef struct {
|
|
BBS_TABLE *BbsTable;
|
|
UINTN Index;
|
|
UINTN BbsCount;
|
|
UINT16 *Description;
|
|
} BM_LEGACY_DEVICE_CONTEXT;
|
|
|
|
typedef struct {
|
|
|
|
BOOLEAN IsActive;
|
|
|
|
BOOLEAN IsTerminal;
|
|
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
} BM_CONSOLE_CONTEXT;
|
|
|
|
typedef struct {
|
|
UINTN Column;
|
|
UINTN Row;
|
|
} CONSOLE_OUT_MODE;
|
|
|
|
typedef struct {
|
|
EFI_HANDLE Handle;
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
EFI_FILE_HANDLE FHandle;
|
|
UINT16 *FileName;
|
|
EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *Info;
|
|
|
|
BOOLEAN IsRoot;
|
|
BOOLEAN IsDir;
|
|
BOOLEAN IsRemovableMedia;
|
|
BOOLEAN IsLoadFile;
|
|
BOOLEAN IsBootLegacy;
|
|
} BM_FILE_CONTEXT;
|
|
|
|
typedef struct {
|
|
EFI_HANDLE Handle;
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
} BM_HANDLE_CONTEXT;
|
|
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Head;
|
|
UINTN MenuNumber;
|
|
} BM_MENU_OPTION;
|
|
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
UINTN OptionNumber;
|
|
UINT16 *DisplayString;
|
|
UINT16 *HelpString;
|
|
EFI_STRING_ID DisplayStringToken;
|
|
EFI_STRING_ID HelpStringToken;
|
|
UINTN ContextSelection;
|
|
VOID *VariableContext;
|
|
} BM_MENU_ENTRY;
|
|
|
|
typedef struct {
|
|
//
|
|
// Shared callback data.
|
|
//
|
|
UINTN Signature;
|
|
|
|
BM_MENU_ENTRY *MenuEntry;
|
|
BM_HANDLE_CONTEXT *HandleContext;
|
|
BM_FILE_CONTEXT *FileContext;
|
|
BM_LOAD_CONTEXT *LoadContext;
|
|
BM_TERMINAL_CONTEXT *TerminalContext;
|
|
UINTN CurrentTerminal;
|
|
UINT8 BbsType;
|
|
|
|
//
|
|
// BMM main formset callback data.
|
|
//
|
|
EFI_HII_HANDLE BmmHiiHandle;
|
|
EFI_HANDLE BmmDriverHandle;
|
|
EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;
|
|
EFI_FORM_ID BmmCurrentPageId;
|
|
EFI_FORM_ID BmmPreviousPageId;
|
|
BOOLEAN BmmAskSaveOrNot;
|
|
BMM_FAKE_NV_DATA BmmFakeNvData;
|
|
BMM_FAKE_NV_DATA BmmOldFakeNVData;
|
|
|
|
//
|
|
// File explorer formset callback data.
|
|
//
|
|
EFI_HII_HANDLE FeHiiHandle;
|
|
EFI_HANDLE FeDriverHandle;
|
|
EFI_HII_CONFIG_ACCESS_PROTOCOL FeConfigAccess;
|
|
FILE_EXPLORER_STATE FeCurrentState;
|
|
FILE_EXPLORER_DISPLAY_CONTEXT FeDisplayContext;
|
|
FILE_EXPLORER_NV_DATA FeFakeNvData;
|
|
} BMM_CALLBACK_DATA;
|
|
|
|
typedef struct _STRING_LIST_NODE {
|
|
EFI_STRING_ID StringToken;
|
|
struct _STRING_LIST_NODE *Next;
|
|
} STRING_LIST_NODE;
|
|
|
|
typedef struct _STRING_DEPOSITORY {
|
|
UINTN TotalNodeNumber;
|
|
STRING_LIST_NODE *CurrentNode;
|
|
STRING_LIST_NODE *ListHead;
|
|
} STRING_DEPOSITORY;
|
|
|
|
//
|
|
// #pragma pack()
|
|
//
|
|
// For initializing File System menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_FindFileSystem (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
)
|
|
;
|
|
|
|
//
|
|
// For cleaning up File System menu
|
|
//
|
|
VOID
|
|
BOpt_FreeFileSystem (
|
|
VOID
|
|
)
|
|
;
|
|
|
|
//
|
|
// For initializing File Navigation menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_FindFiles (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN BM_MENU_ENTRY *MenuEntry
|
|
)
|
|
;
|
|
|
|
//
|
|
// For cleaning up File Navigation menu
|
|
//
|
|
VOID
|
|
BOpt_FreeFiles (
|
|
VOID
|
|
)
|
|
;
|
|
|
|
//
|
|
// For Initializing handle navigation menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_FindDrivers (
|
|
VOID
|
|
)
|
|
;
|
|
|
|
//
|
|
// For Cleaning up handle navigation menu
|
|
//
|
|
VOID
|
|
BOpt_FreeDrivers(VOID);
|
|
|
|
//
|
|
// For initializing Boot Option menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_GetBootOptions (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
//
|
|
// For Initializing Driver option menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_GetDriverOptions (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
//
|
|
// For Cleaning up boot option menu
|
|
//
|
|
VOID
|
|
BOpt_FreeBootOptions (VOID);
|
|
|
|
//
|
|
// For cleaning up driver option menu
|
|
//
|
|
VOID
|
|
BOpt_FreeDriverOptions(VOID);
|
|
|
|
//
|
|
// For Initializing HD/FD/CD/NET/BEV option menu
|
|
//
|
|
EFI_STATUS
|
|
BOpt_GetLegacyOptions(VOID);
|
|
|
|
//
|
|
// For cleaning up driver option menu
|
|
//
|
|
VOID
|
|
BOpt_FreeLegacyOptions(VOID);
|
|
|
|
//
|
|
// this function is used to take place of all other free menu actions
|
|
//
|
|
VOID
|
|
BOpt_FreeMenu (
|
|
BM_MENU_OPTION *FreeMenu
|
|
);
|
|
|
|
|
|
//
|
|
// Following are the helper functions used
|
|
//
|
|
CHAR16 *
|
|
BOpt_AppendFileName (
|
|
IN CHAR16 *Str1,
|
|
IN CHAR16 *Str2
|
|
);
|
|
|
|
BOOLEAN
|
|
BOpt_IsEfiImageName (
|
|
IN UINT16 *FileName
|
|
);
|
|
|
|
BOOLEAN
|
|
BOpt_IsEfiApp (
|
|
IN EFI_FILE_HANDLE Dir,
|
|
IN UINT16 *FileName
|
|
);
|
|
|
|
//
|
|
// Get current unused boot option number
|
|
//
|
|
UINT16
|
|
BOpt_GetBootOptionNumber (VOID);
|
|
|
|
//
|
|
// Get current unused driver option number
|
|
//
|
|
UINT16
|
|
BOpt_GetDriverOptionNumber (VOID);
|
|
|
|
BM_MENU_ENTRY *
|
|
BOpt_CreateMenuEntry (
|
|
UINTN MenuType
|
|
);
|
|
|
|
VOID
|
|
BOpt_DestroyMenuEntry (
|
|
BM_MENU_ENTRY *MenuEntry
|
|
);
|
|
|
|
BM_MENU_ENTRY *
|
|
BOpt_GetMenuEntry (
|
|
BM_MENU_OPTION *MenuOption,
|
|
UINTN MenuNumber
|
|
);
|
|
|
|
//
|
|
// a helper function used to free pool type memory
|
|
//
|
|
VOID
|
|
SafeFreePool (
|
|
IN VOID *Buffer
|
|
);
|
|
|
|
//
|
|
// Locate all serial io devices for console
|
|
//
|
|
EFI_STATUS
|
|
LocateSerialIo (VOID);
|
|
|
|
//
|
|
// Initializing Console menu
|
|
//
|
|
EFI_STATUS
|
|
GetAllConsoles(VOID);
|
|
|
|
//
|
|
// Get current mode information
|
|
//
|
|
VOID
|
|
GetConsoleOutMode (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
//
|
|
// Cleaning up console menu
|
|
//
|
|
EFI_STATUS
|
|
FreeAllConsoles(VOID);
|
|
|
|
VOID
|
|
ChangeVariableDevicePath (
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
|
);
|
|
|
|
EFI_STATUS
|
|
ChangeTerminalDevicePath (
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath,
|
|
BOOLEAN ChangeTerminal
|
|
);
|
|
//
|
|
// Variable operation by menu selection
|
|
//
|
|
EFI_STATUS
|
|
Var_UpdateBootOption (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN FILE_EXPLORER_NV_DATA *NvRamMap
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_DelBootOption (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_ChangeBootOrder (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateDriverOption (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN EFI_HII_HANDLE HiiHandle,
|
|
IN UINT16 *DescriptionData,
|
|
IN UINT16 *OptionalData,
|
|
IN UINT8 ForceReconnect
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_DelDriverOption (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_ChangeDriverOrder (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateConsoleInpOption (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateConsoleOutOption (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateErrorOutOption (VOID);
|
|
|
|
VOID
|
|
Var_UpdateAllConsoleOption (VOID);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateBootNext (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateBootOrder (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateDriverOrder (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateBBSOption (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
Var_UpdateConMode (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
//
|
|
// Following are page create and refresh functions
|
|
//
|
|
VOID
|
|
RefreshUpdateData (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
CleanUpPage (
|
|
IN UINT16 LabelId,
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
UpdatePage (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN BM_MENU_OPTION *UpdatingMenu,
|
|
IN UINT16 UpdatingPage,
|
|
IN UINT16 UpdatingManner,
|
|
IN UINT16 QuestionIdStart,
|
|
IN UINT16 GotoForm,
|
|
IN UINT16 GotoAlternateForm,
|
|
IN EFI_STRING_ID DisplayTokenStart,
|
|
IN EFI_STRING_ID HelpTokenStart,
|
|
IN UINT16 KeyValueStart
|
|
);
|
|
|
|
VOID
|
|
UpdateBootAddPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateBootDelPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateDrvAddFilePage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateDrvAddHandlePage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateDrvDelPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateDriverAddHandleDescPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateBootTimeOut (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateConInPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateConOutPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateStdErrPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdatePageBody (
|
|
IN UINT16 UpdatePageId,
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateCOM1Page (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateCOM2Page (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateBootOrderPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateDriverOrderPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateBootNextPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateTimeOutPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateTerminalPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateConModePage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateConCOMPage (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
VOID
|
|
UpdateSetLegacyDeviceOrderPage (
|
|
IN UINT16 UpdatePageId,
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
EFI_STATUS
|
|
BootLegacy (
|
|
IN UINT16 BbsType,
|
|
IN UINT16 BbsFlag
|
|
);
|
|
|
|
BM_MENU_ENTRY *
|
|
GetCurrentTerminal (
|
|
UINTN TerminalNumber
|
|
);
|
|
|
|
EFI_FILE_HANDLE
|
|
EfiLibOpenRoot (
|
|
IN EFI_HANDLE DeviceHandle
|
|
);
|
|
|
|
EFI_FILE_SYSTEM_VOLUME_LABEL_INFO *
|
|
EfiLibFileSystemVolumeLabelInfo (
|
|
IN EFI_FILE_HANDLE FHand
|
|
);
|
|
|
|
EFI_FILE_INFO *
|
|
EfiLibFileInfo (
|
|
IN EFI_FILE_HANDLE FHand
|
|
);
|
|
|
|
UINTN
|
|
UnicodeToAscii (
|
|
IN CHAR16 *UStr,
|
|
IN UINTN Length,
|
|
OUT CHAR8 *AStr
|
|
);
|
|
|
|
CHAR16 *
|
|
DevicePathToStr (
|
|
EFI_DEVICE_PATH_PROTOCOL *DevPath
|
|
);
|
|
|
|
VOID *
|
|
EfiAllocateZeroPool (
|
|
IN UINTN Size
|
|
);
|
|
|
|
EFI_STATUS
|
|
EfiLibLocateProtocol (
|
|
IN EFI_GUID *ProtocolGuid,
|
|
OUT VOID **Interface
|
|
);
|
|
|
|
VOID *
|
|
EfiReallocatePool (
|
|
IN VOID *OldPool,
|
|
IN UINTN OldSize,
|
|
IN UINTN NewSize
|
|
);
|
|
|
|
CHAR16 *
|
|
DevicePathToStr (
|
|
EFI_DEVICE_PATH_PROTOCOL *DevPath
|
|
);
|
|
|
|
VOID *
|
|
BdsLibGetVariableAndSize (
|
|
IN CHAR16 *Name,
|
|
IN EFI_GUID *VendorGuid,
|
|
OUT UINTN *VarSize
|
|
);
|
|
|
|
EFI_STATUS
|
|
EfiLibDeleteVariable (
|
|
IN CHAR16 *VarName,
|
|
IN EFI_GUID *VarGuid
|
|
);
|
|
|
|
CHAR16 *
|
|
EfiStrDuplicate (
|
|
IN CHAR16 *Src
|
|
);
|
|
|
|
BOOLEAN
|
|
EfiLibMatchDevicePaths (
|
|
IN EFI_DEVICE_PATH_PROTOCOL *Multi,
|
|
IN EFI_DEVICE_PATH_PROTOCOL *Single
|
|
);
|
|
|
|
UINTN
|
|
EfiDevicePathInstanceCount (
|
|
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
|
|
);
|
|
|
|
EFI_STATUS
|
|
CreateMenuStringToken (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN EFI_HII_HANDLE HiiHandle,
|
|
IN BM_MENU_OPTION *MenuOption
|
|
);
|
|
|
|
UINT16 *
|
|
EfiLibStrFromDatahub (
|
|
IN EFI_DEVICE_PATH_PROTOCOL *DevPath
|
|
);
|
|
|
|
VOID *
|
|
GetLegacyBootOptionVar (
|
|
IN UINTN DeviceType,
|
|
OUT UINTN *OptionIndex,
|
|
OUT UINTN *OptionSize
|
|
);
|
|
|
|
EFI_STATUS
|
|
InitializeBM (
|
|
VOID
|
|
);
|
|
|
|
EFI_STATUS
|
|
BdsStartBootMaint (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
InitializeStringDepository (VOID);
|
|
|
|
EFI_STRING_ID
|
|
GetStringTokenFromDepository (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN STRING_DEPOSITORY *StringDepository
|
|
);
|
|
|
|
VOID
|
|
ReclaimStringDepository (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
CleanUpStringDepository (
|
|
VOID
|
|
);
|
|
|
|
EFI_STATUS
|
|
ApplyChangeHandler (
|
|
IN BMM_CALLBACK_DATA *Private,
|
|
IN BMM_FAKE_NV_DATA *CurrentFakeNVMap,
|
|
IN EFI_FORM_ID FormId
|
|
);
|
|
|
|
VOID
|
|
DiscardChangeHandler (
|
|
IN BMM_CALLBACK_DATA *Private,
|
|
IN BMM_FAKE_NV_DATA *CurrentFakeNVMap
|
|
);
|
|
|
|
VOID
|
|
UpdatePageId (
|
|
BMM_CALLBACK_DATA *Private,
|
|
UINT16 NewPageId
|
|
);
|
|
|
|
EFI_STATUS
|
|
BootThisFile (
|
|
IN BM_FILE_CONTEXT *FileContext
|
|
);
|
|
|
|
BOOLEAN
|
|
UpdateFileExplorer (
|
|
IN BMM_CALLBACK_DATA *CallbackData,
|
|
IN UINT16 KeyValue
|
|
);
|
|
|
|
EFI_STATUS
|
|
EFIAPI
|
|
FileExplorerCallback (
|
|
IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
|
|
IN EFI_BROWSER_ACTION Action,
|
|
IN EFI_QUESTION_ID QuestionId,
|
|
IN UINT8 Type,
|
|
IN EFI_IFR_TYPE_VALUE *Value,
|
|
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest
|
|
);
|
|
|
|
EFI_STATUS
|
|
FormSetDispatcher (
|
|
IN BMM_CALLBACK_DATA *CallbackData
|
|
);
|
|
|
|
//
|
|
// Global variable in this program (defined in data.c)
|
|
//
|
|
extern BM_MENU_OPTION BootOptionMenu;
|
|
extern BM_MENU_OPTION DriverOptionMenu;
|
|
extern BM_MENU_OPTION FsOptionMenu;
|
|
extern BM_MENU_OPTION ConsoleInpMenu;
|
|
extern BM_MENU_OPTION ConsoleOutMenu;
|
|
extern BM_MENU_OPTION ConsoleErrMenu;
|
|
extern BM_MENU_OPTION DirectoryMenu;
|
|
extern BM_MENU_OPTION DriverMenu;
|
|
extern BM_MENU_OPTION TerminalMenu;
|
|
extern BM_MENU_OPTION LegacyFDMenu;
|
|
extern BM_MENU_OPTION LegacyHDMenu;
|
|
extern BM_MENU_OPTION LegacyCDMenu;
|
|
extern BM_MENU_OPTION LegacyNETMenu;
|
|
extern BM_MENU_OPTION LegacyBEVMenu;
|
|
extern UINT16 TerminalType[];
|
|
extern COM_ATTR BaudRateList[19];
|
|
extern COM_ATTR DataBitsList[4];
|
|
extern COM_ATTR ParityList[5];
|
|
extern COM_ATTR StopBitsList[3];
|
|
extern EFI_GUID Guid[4];
|
|
extern EFI_HII_UPDATE_DATA gUpdateData;
|
|
extern STRING_DEPOSITORY *FileOptionStrDepository;
|
|
extern STRING_DEPOSITORY *ConsoleOptionStrDepository;
|
|
extern STRING_DEPOSITORY *BootOptionStrDepository;
|
|
extern STRING_DEPOSITORY *BootOptionHelpStrDepository;
|
|
extern STRING_DEPOSITORY *DriverOptionStrDepository;
|
|
extern STRING_DEPOSITORY *DriverOptionHelpStrDepository;
|
|
extern STRING_DEPOSITORY *TerminalStrDepository;
|
|
extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath[];
|
|
extern EFI_GUID EfiLegacyDevOrderGuid;
|
|
|
|
#endif
|