/** @file\r
Header file for boot maintenance module.\r
\r
-Copyright (c) 2004 - 2009, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
//\r
// Constants which are variable names used to access variables\r
//\r
-#define VAR_LEGACY_DEV_ORDER L"LegacyDevOrder"\r
-\r
#define VAR_CON_OUT_MODE L"ConOutMode"\r
\r
-///\r
-/// Guid of a NV Variable which store the information about the\r
-/// FD/HD/CD/NET/BEV order\r
-///\r
-#define EFI_LEGACY_DEV_ORDER_VARIABLE_GUID \\r
- { \\r
- 0xa56074db, 0x65fe, 0x45f7, {0xbd, 0x21, 0x2d, 0x2b, 0xdd, 0x8e, 0x96, 0x52} \\r
- }\r
-\r
//\r
// String Contant\r
//\r
#define STR_NET_HELP L"NET Drive #%02x"\r
#define STR_BEV_HELP L"BEV Drive #%02x"\r
\r
-//\r
-// Variable created with this flag will be "Efi:...."\r
-//\r
-#define VAR_FLAG EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE\r
-\r
-extern EFI_GUID mBootMaintGuid;\r
-extern EFI_GUID mFileExplorerGuid;\r
extern CHAR16 mFileExplorerStorageName[];\r
extern CHAR16 mBootMaintStorageName[];\r
//\r
//\r
// Enumeration type definition\r
//\r
-typedef UINT8 BBS_TYPE;\r
-\r
typedef enum _TYPE_OF_TERMINAL {\r
TerminalTypePcAnsi = 0,\r
TerminalTypeVt100,\r
#define FD_OPTION_OFFSET 0xC000\r
#define HD_OPTION_OFFSET 0xB000\r
#define CD_OPTION_OFFSET 0xA000\r
+#define FILE_OPTION_GOTO_OFFSET 0xC000\r
#define FILE_OPTION_OFFSET 0x8000\r
-#define FILE_OPTION_MASK 0x7FFF\r
+#define FILE_OPTION_MASK 0x3FFF\r
#define HANDLE_OPTION_OFFSET 0x7000\r
#define CONSOLE_OPTION_OFFSET 0x6000\r
#define TERMINAL_OPTION_OFFSET 0x5000\r
#define CON_ERR_COM1_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM1)\r
#define CON_ERR_COM2_VAR_OFFSET VAR_OFFSET (ConsoleErrorCOM2)\r
#define CON_MODE_VAR_OFFSET VAR_OFFSET (ConsoleOutMode)\r
-#define CON_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleCheck)\r
-#define OPTION_ORDER_VAR_OFFSET VAR_OFFSET (OptionOrder)\r
-#define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionToBeDeleted)\r
+#define CON_IN_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleInCheck)\r
+#define CON_OUT_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleOutCheck)\r
+#define CON_ERR_DEVICE_VAR_OFFSET VAR_OFFSET (ConsoleErrCheck)\r
+#define BOOT_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (BootOptionOrder)\r
+#define DRIVER_OPTION_ORDER_VAR_OFFSET VAR_OFFSET (DriverOptionOrder)\r
#define BOOT_OPTION_DEL_VAR_OFFSET VAR_OFFSET (BootOptionDel)\r
#define DRIVER_OPTION_DEL_VAR_OFFSET VAR_OFFSET (DriverOptionDel)\r
#define DRIVER_ADD_OPTION_VAR_OFFSET VAR_OFFSET (DriverAddHandleOptionalData)\r
#define COM_STOP_BITS_VAR_OFFSET VAR_OFFSET (COMStopBits)\r
#define COM_PARITY_VAR_OFFSET VAR_OFFSET (COMParity)\r
#define COM_TERMINAL_VAR_OFFSET VAR_OFFSET (COMTerminalType)\r
+#define COM_FLOWCONTROL_VAR_OFFSET VAR_OFFSET (COMFlowControl)\r
#define LEGACY_FD_VAR_OFFSET VAR_OFFSET (LegacyFD)\r
#define LEGACY_HD_VAR_OFFSET VAR_OFFSET (LegacyHD)\r
#define LEGACY_CD_VAR_OFFSET VAR_OFFSET (LegacyCD)\r
#define CON_ERR_COM1_QUESTION_ID QUESTION_ID (ConsoleErrorCOM1)\r
#define CON_ERR_COM2_QUESTION_ID QUESTION_ID (ConsoleErrorCOM2)\r
#define CON_MODE_QUESTION_ID QUESTION_ID (ConsoleOutMode)\r
-#define CON_DEVICE_QUESTION_ID QUESTION_ID (ConsoleCheck)\r
-#define OPTION_ORDER_QUESTION_ID QUESTION_ID (OptionOrder)\r
-#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionToBeDeleted)\r
+#define CON_IN_DEVICE_QUESTION_ID QUESTION_ID (ConsoleInCheck)\r
+#define CON_OUT_DEVICE_QUESTION_ID QUESTION_ID (ConsoleOutCheck)\r
+#define CON_ERR_DEVICE_QUESTION_ID QUESTION_ID (ConsoleErrCheck)\r
+#define BOOT_OPTION_ORDER_QUESTION_ID QUESTION_ID (BootOptionOrder)\r
+#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionOrder)\r
#define BOOT_OPTION_DEL_QUESTION_ID QUESTION_ID (BootOptionDel)\r
#define DRIVER_OPTION_DEL_QUESTION_ID QUESTION_ID (DriverOptionDel)\r
#define DRIVER_ADD_OPTION_QUESTION_ID QUESTION_ID (DriverAddHandleOptionalData)\r
#define COM_STOP_BITS_QUESTION_ID QUESTION_ID (COMStopBits)\r
#define COM_PARITY_QUESTION_ID QUESTION_ID (COMParity)\r
#define COM_TERMINAL_QUESTION_ID QUESTION_ID (COMTerminalType)\r
+#define COM_FLOWCONTROL_QUESTION_ID QUESTION_ID (COMFlowControl)\r
#define LEGACY_FD_QUESTION_ID QUESTION_ID (LegacyFD)\r
#define LEGACY_HD_QUESTION_ID QUESTION_ID (LegacyHD)\r
#define LEGACY_CD_QUESTION_ID QUESTION_ID (LegacyCD)\r
UINT16 StringToken;\r
} COM_ATTR;\r
\r
-#pragma pack(1)\r
-typedef struct {\r
- BBS_TYPE BbsType;\r
- ///\r
- /// Length = sizeof (UINT16) + SIZEOF (Data)\r
- ///\r
- UINT16 Length;\r
- UINT16 *Data;\r
-} BM_LEGACY_DEV_ORDER_CONTEXT;\r
-#pragma pack()\r
-\r
typedef struct {\r
UINT64 BaudRate;\r
UINT8 DataBits;\r
UINT8 ParityIndex;\r
UINT8 StopBitsIndex;\r
\r
+ UINT8 FlowControl;\r
+\r
UINT8 IsConIn;\r
UINT8 IsConOut;\r
UINT8 IsStdErr;\r
} BM_LOAD_CONTEXT;\r
\r
typedef struct {\r
- BBS_TABLE *BbsTable;\r
- UINTN Index;\r
- UINTN BbsCount;\r
- UINT16 *Description;\r
+ BBS_TABLE *BbsEntry;\r
+ UINT16 BbsIndex;\r
+ UINT16 BbsCount;\r
+ CHAR16 *Description;\r
} BM_LEGACY_DEVICE_CONTEXT;\r
\r
typedef struct {\r
**/\r
EFI_STATUS\r
ChangeTerminalDevicePath (\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,\r
IN BOOLEAN ChangeTerminal\r
);\r
\r
);\r
\r
/**\r
- Update the legacy BBS boot option. L"LegacyDevOrder" and EfiLegacyDevOrderGuid EFI Variable\r
+ Update the legacy BBS boot option. VAR_LEGACY_DEV_ORDER and gEfiLegacyDevOrderVariableGuid EFI Variable\r
is udpated with the new Legacy Boot order. The EFI Variable of "Boot####" and gEfiGlobalVariableGuid\r
is also updated.\r
\r
@param CallbackData The context data for BMM.\r
+ @param FormId The form id.\r
\r
@return EFI_SUCCESS The function completed successfully.\r
- @retval EFI_NOT_FOUND If L"LegacyDevOrder" and EfiLegacyDevOrderGuid EFI Variable can not be found.\r
+ @retval EFI_NOT_FOUND If VAR_LEGACY_DEV_ORDER and gEfiLegacyDevOrderVariableGuid EFI Variable can not be found.\r
\r
**/\r
EFI_STATUS\r
Var_UpdateBBSOption (\r
- IN BMM_CALLBACK_DATA *CallbackData\r
+ IN BMM_CALLBACK_DATA *CallbackData,\r
+ IN EFI_FORM_ID FormId\r
);\r
\r
/**\r
IN EFI_FILE_HANDLE FHand\r
);\r
\r
-/**\r
- Find the first instance of this Protocol in the system and return it's interface.\r
-\r
- @param ProtocolGuid Provides the protocol to search for\r
- @param Interface On return, a pointer to the first interface\r
- that matches ProtocolGuid\r
-\r
- @retval EFI_SUCCESS A protocol instance matching ProtocolGuid was found\r
- @retval EFI_NOT_FOUND No protocol instances were found that match ProtocolGuid\r
-\r
-**/\r
-EFI_STATUS\r
-EfiLibLocateProtocol (\r
- IN EFI_GUID *ProtocolGuid,\r
- OUT VOID **Interface\r
- );\r
-\r
/**\r
Adjusts the size of a previously allocated buffer.\r
\r
IN EFI_DEVICE_PATH_PROTOCOL *DevPath\r
);\r
\r
-/**\r
- Get the index number (#### in Boot####) for the boot option pointed to a BBS legacy device type\r
- specified by DeviceType.\r
-\r
- @param DeviceType The legacy device type. It can be floppy, network, harddisk, cdrom,\r
- etc.\r
- @param OptionIndex Returns the index number (#### in Boot####).\r
- @param OptionSize Return the size of the Boot### variable.\r
-\r
-**/\r
-VOID *\r
-GetLegacyBootOptionVar (\r
- IN UINTN DeviceType,\r
- OUT UINTN *OptionIndex,\r
- OUT UINTN *OptionSize\r
- );\r
-\r
/**\r
Initialize the Boot Maintenance Utitliy.\r
\r
OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest\r
);\r
\r
+/**\r
+ This function applies changes in a driver's configuration.\r
+ Input is a Configuration, which has the routing data for this\r
+ driver followed by name / value configuration pairs. The driver\r
+ must apply those pairs to its configurable storage. If the\r
+ driver's configuration is stored in a linear block of data\r
+ and the driver's name / value pairs are in <BlockConfig>\r
+ format, it may use the ConfigToBlock helper function (above) to\r
+ simplify the job. Currently not implemented.\r
+\r
+ @param[in] This Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.\r
+ @param[in] Configuration A null-terminated Unicode string in\r
+ <ConfigString> format. \r
+ @param[out] Progress A pointer to a string filled in with the\r
+ offset of the most recent '&' before the\r
+ first failing name / value pair (or the\r
+ beginn ing of the string if the failure\r
+ is in the first name / value pair) or\r
+ the terminating NULL if all was\r
+ successful.\r
+\r
+ @retval EFI_SUCCESS The results have been distributed or are\r
+ awaiting distribution. \r
+ @retval EFI_OUT_OF_RESOURCES Not enough memory to store the\r
+ parts of the results that must be\r
+ stored awaiting possible future\r
+ protocols.\r
+ @retval EFI_INVALID_PARAMETERS Passing in a NULL for the\r
+ Results parameter would result\r
+ in this type of error.\r
+ @retval EFI_NOT_FOUND Target for the specified routing data\r
+ was not found.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+FileExplorerRouteConfig (\r
+ IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,\r
+ IN CONST EFI_STRING Configuration,\r
+ OUT EFI_STRING *Progress\r
+ );\r
+\r
/**\r
Dispatch BMM formset and FileExplorer formset.\r
\r
IN EFI_GUID *VendorGuid\r
);\r
\r
+/**\r
+ Get option number according to Boot#### and BootOrder variable. \r
+ The value is saved as #### + 1.\r
+\r
+ @param CallbackData The BMM context data.\r
+**/\r
+VOID \r
+GetBootOrder (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+\r
+/**\r
+ Get driver option order from globalc DriverOptionMenu.\r
+\r
+ @param CallbackData The BMM context data.\r
+ \r
+**/\r
+VOID \r
+GetDriverOrder (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+\r
+/**\r
+ Intall BootMaint and FileExplorer HiiPackages.\r
+\r
+**/\r
+EFI_STATUS\r
+InitBMPackage (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Remvoe the intalled BootMaint and FileExplorer HiiPackages.\r
+\r
+**/\r
+VOID\r
+FreeBMPackage (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ According to LegacyDevOrder variable to get legacy FD\HD\CD\NET\BEV\r
+ devices list .\r
+\r
+ @param CallbackData The BMM context data.\r
+**/\r
+VOID\r
+GetLegacyDeviceOrder (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+ \r
+/**\r
+\r
+ Initialize console input device check box to ConsoleInCheck[MAX_MENU_NUMBER]\r
+ in BMM_FAKE_NV_DATA structure.\r
+\r
+ @param CallbackData The BMM context data.\r
+\r
+**/ \r
+VOID \r
+GetConsoleInCheck (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+ \r
+/**\r
+\r
+ Initialize console output device check box to ConsoleOutCheck[MAX_MENU_NUMBER]\r
+ in BMM_FAKE_NV_DATA structure.\r
+\r
+ @param CallbackData The BMM context data.\r
+\r
+**/ \r
+VOID \r
+GetConsoleOutCheck (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+\r
+/**\r
+\r
+ Initialize standard error output device check box to ConsoleErrCheck[MAX_MENU_NUMBER]\r
+ in BMM_FAKE_NV_DATA structure.\r
+\r
+ @param CallbackData The BMM context data.\r
+\r
+**/ \r
+VOID \r
+GetConsoleErrCheck (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+\r
+/**\r
+\r
+ Initialize terminal attributes (baudrate, data rate, stop bits, parity and terminal type)\r
+ to BMM_FAKE_NV_DATA structure.\r
+\r
+ @param CallbackData The BMM context data.\r
+\r
+**/ \r
+VOID \r
+GetTerminalAttribute (\r
+ IN BMM_CALLBACK_DATA *CallbackData\r
+ );\r
+\r
+/**\r
+\r
+ Find the first instance of this Protocol\r
+ in the system and return it's interface.\r
+\r
+\r
+ @param ProtocolGuid Provides the protocol to search for\r
+ @param Interface On return, a pointer to the first interface\r
+ that matches ProtocolGuid\r
+\r
+ @retval EFI_SUCCESS A protocol instance matching ProtocolGuid was found\r
+ @retval EFI_NOT_FOUND No protocol instances were found that match ProtocolGuid\r
+\r
+**/\r
+EFI_STATUS\r
+EfiLibLocateProtocol (\r
+ IN EFI_GUID *ProtocolGuid,\r
+ OUT VOID **Interface\r
+ );\r
+\r
//\r
// Global variable in this program (defined in data.c)\r
//\r
extern STRING_DEPOSITORY *DriverOptionHelpStrDepository;\r
extern STRING_DEPOSITORY *TerminalStrDepository;\r
extern EFI_DEVICE_PATH_PROTOCOL EndDevicePath[];\r
-extern EFI_GUID EfiLegacyDevOrderGuid;\r
-\r
+extern UINT16 mFlowControlType[2];\r
+extern UINT32 mFlowControlValue[2];\r
//\r
// Shared IFR form update data\r
//\r