]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.h
Enhance BMM to support changing FlowControl setting in Front Page.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / BootMaint.h
index 1a6f076ecc0c80d9ad9a6bacbebdfb6f27726df6..67eaeec01114bc89f8d319894ec00ea929cb47da 100644 (file)
@@ -1,8 +1,8 @@
 /** @file\r
   Header file for boot maintenance module.\r
 \r
-Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2004 - 2011, 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
@@ -55,12 +55,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 //\r
 #define VAR_FLAG  EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE\r
 \r
-//\r
-// Define Maxmim characters that will be accepted\r
-//\r
-#define MAX_CHAR      480\r
-#define MAX_CHAR_SIZE (MAX_CHAR * 2)\r
-\r
 extern EFI_GUID mBootMaintGuid;\r
 extern EFI_GUID mFileExplorerGuid;\r
 extern CHAR16   mFileExplorerStorageName[];\r
@@ -93,53 +87,25 @@ extern UINT8    FEBin[];
 //\r
 typedef UINT8 BBS_TYPE;\r
 \r
-typedef enum {\r
-  PC_ANSI                             = 0,\r
-  VT_100,\r
-  VT_100_PLUS,\r
-  VT_UTF8\r
+typedef enum _TYPE_OF_TERMINAL {\r
+  TerminalTypePcAnsi                             = 0,\r
+  TerminalTypeVt100,\r
+  TerminalTypeVt100Plus,\r
+  TerminalTypeVtUtf8\r
 } TYPE_OF_TERMINAL;\r
 \r
-typedef enum {\r
-  COM1                                = 0,\r
-  COM2,\r
-  UNKNOW_COM\r
-} TYPE_OF_COM;\r
-\r
-typedef enum {\r
-  CONIN                               = 0,\r
-  CONOUT,\r
-  CONERR,\r
-  UNKNOWN_CON\r
-} TYPE_OF_CON;\r
-\r
-typedef enum {\r
-  BAUDRATE                            = 0,\r
-  DATABITS,\r
-  PARITY,\r
-  STOPBITS,\r
-  UNKNOW_ATTR\r
-} TYPE_OF_ATTRIBUTE;\r
-\r
-typedef enum {\r
-  MANNER_GOTO                         = 0,\r
-  MANNER_CHECK,\r
-  MANNER_ONEOF,\r
-  MANNER_USER_DEFINE\r
-} TYPE_OF_UPATE_MANNER;\r
-\r
-typedef enum {\r
-  INACTIVE_STATE                      = 0,\r
-  BOOT_FROM_FILE_STATE,\r
-  ADD_BOOT_OPTION_STATE,\r
-  ADD_DRIVER_OPTION_STATE,\r
-  UNKNOWN_STATE\r
+typedef enum _FILE_EXPLORER_STATE {\r
+  FileExplorerStateInActive                      = 0,\r
+  FileExplorerStateBootFromFile,\r
+  FileExplorerStateAddBootOption,\r
+  FileExplorerStateAddDriverOptionState,\r
+  FileExplorerStateUnknown\r
 } FILE_EXPLORER_STATE;\r
 \r
-typedef enum {\r
-  FILE_SYSTEM,\r
-  DIRECTORY,\r
-  UNKNOWN_CONTEXT\r
+typedef enum _FILE_EXPLORER_DISPLAY_CONTEXT {\r
+  FileExplorerDisplayFileSystem,\r
+  FileExplorerDisplayDirectory,\r
+  FileExplorerDisplayUnknown\r
 } FILE_EXPLORER_DISPLAY_CONTEXT;\r
 \r
 //\r
@@ -223,15 +189,14 @@ typedef enum {
 #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 BOOT_OPTION_DEL_VAR_OFFSET      VAR_OFFSET (BootOptionDel)\r
-#define DRIVER_OPTION_DEL_VAR_OFFSET    VAR_OFFSET (DriverOptionDel)\r
+#define OPTION_DEL_VAR_OFFSET           VAR_OFFSET (OptionDel)\r
 #define DRIVER_ADD_OPTION_VAR_OFFSET    VAR_OFFSET (DriverAddHandleOptionalData)\r
 #define COM_BAUD_RATE_VAR_OFFSET        VAR_OFFSET (COMBaudRate)\r
 #define COM_DATA_RATE_VAR_OFFSET        VAR_OFFSET (COMDataRate)\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
@@ -262,15 +227,14 @@ typedef enum {
 #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 BOOT_OPTION_DEL_QUESTION_ID     QUESTION_ID (BootOptionDel)\r
-#define DRIVER_OPTION_DEL_QUESTION_ID   QUESTION_ID (DriverOptionDel)\r
+#define OPTION_DEL_QUESTION_ID          QUESTION_ID (OptionDel)\r
 #define DRIVER_ADD_OPTION_QUESTION_ID   QUESTION_ID (DriverAddHandleOptionalData)\r
 #define COM_BAUD_RATE_QUESTION_ID       QUESTION_ID (COMBaudRate)\r
 #define COM_DATA_RATE_QUESTION_ID       QUESTION_ID (COMDataRate)\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
@@ -290,13 +254,23 @@ typedef struct {
 } COM_ATTR;\r
 \r
 #pragma pack(1)\r
+///\r
+/// For each legacy boot option in BBS table, a corresponding Boot#### variables is created.\r
+/// The structure saves the mapping relationship between #### and the index in the BBS table.\r
+///\r
+typedef struct {\r
+  UINT16    BootOptionNumber;\r
+  UINT16    BbsIndex;\r
+  UINT16    BbsType;\r
+} BOOT_OPTION_BBS_MAPPING;\r
+\r
 typedef struct {\r
   BBS_TYPE  BbsType;\r
   ///\r
   /// Length = sizeof (UINT16) + SIZEOF (Data)\r
   ///\r
   UINT16    Length;\r
-  UINT16    *Data;\r
+  UINT16    Data[1];\r
 } BM_LEGACY_DEV_ORDER_CONTEXT;\r
 #pragma pack()\r
 \r
@@ -311,6 +285,8 @@ typedef struct {
   UINT8                     ParityIndex;\r
   UINT8                     StopBitsIndex;\r
 \r
+  UINT8                     FlowControl;\r
+\r
   UINT8                     IsConIn;\r
   UINT8                     IsConOut;\r
   UINT8                     IsStdErr;\r
@@ -342,10 +318,10 @@ typedef struct {
 } BM_LOAD_CONTEXT;\r
 \r
 typedef struct {\r
-  BBS_TABLE *BbsTable;\r
-  UINTN     Index;\r
-  UINT    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
@@ -436,10 +412,12 @@ typedef struct {
   FILE_EXPLORER_NV_DATA          FeFakeNvData;\r
 } BMM_CALLBACK_DATA;\r
 \r
-typedef struct _STRING_LIST_NODE {\r
+typedef struct _STRING_LIST_NODE STRING_LIST_NODE;\r
+\r
+struct _STRING_LIST_NODE {\r
   EFI_STRING_ID             StringToken;\r
-  struct _STRING_LIST_NODE  *Next;\r
-} STRING_LIST_NODE;\r
+  STRING_LIST_NODE          *Next;\r
+};\r
 \r
 typedef struct _STRING_DEPOSITORY {\r
   UINTN             TotalNodeNumber;\r
@@ -623,6 +601,20 @@ BOpt_IsEfiApp (
 \r
   Get the Option Number that has not been allocated for use.\r
 \r
+  @param Type  The type of Option.\r
+\r
+  @return The available Option Number.\r
+\r
+**/\r
+UINT16\r
+BOpt_GetOptionNumber (\r
+  CHAR16        *Type\r
+  );\r
+\r
+/**\r
+\r
+  Get the Option Number for Boot#### that does not used.\r
+\r
   @return The available Option Number.\r
 \r
 **/\r
@@ -633,9 +625,9 @@ BOpt_GetBootOptionNumber (
 \r
 /**\r
 \r
-  Get the Option Number that is not in use.\r
+Get the Option Number for Driver#### that does not used.\r
 \r
-  @return The unused Option Number.\r
+@return The unused Option Number.\r
 \r
 **/\r
 UINT16\r
@@ -769,7 +761,7 @@ ChangeVariableDevicePath (
 **/\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
@@ -1575,7 +1567,8 @@ extern STRING_DEPOSITORY          *DriverOptionHelpStrDepository;
 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