]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/ConsoleOption.c
Support RouteConfig function for BdsDxe driver.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / ConsoleOption.c
index f216b4a03f0c4737bac1b8de5fcdfaf83c1c4c25..1854b98c360fdd45ba00cee2c1c3aa6e5e9e38da 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   handles console redirection from boot manager\r
 \r
-Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\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
@@ -1049,3 +1049,150 @@ GetConsoleOutMode (
     }\r
   }\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
+  UINT16              Index;\r
+  BM_MENU_ENTRY       *NewMenuEntry; \r
+  UINT8               *ConInCheck;\r
+  BM_CONSOLE_CONTEXT  *NewConsoleContext;\r
+  \r
+  ASSERT (CallbackData != NULL);\r
+    \r
+  ConInCheck = &CallbackData->BmmFakeNvData.ConsoleInCheck[0];\r
+  for (Index = 0; ((Index < ConsoleInpMenu.MenuNumber) && \\r
+       (Index < MAX_MENU_NUMBER)) ; Index++) {  \r
+    NewMenuEntry      = BOpt_GetMenuEntry (&ConsoleInpMenu, Index);\r
+    NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;  \r
+    ConInCheck[Index] = NewConsoleContext->IsActive;\r
+  }\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
+  UINT16              Index;\r
+  BM_MENU_ENTRY       *NewMenuEntry; \r
+  UINT8               *ConOutCheck;\r
+  BM_CONSOLE_CONTEXT  *NewConsoleContext;\r
+  \r
+  ASSERT (CallbackData != NULL);\r
+  ConOutCheck = &CallbackData->BmmFakeNvData.ConsoleOutCheck[0];\r
+  for (Index = 0; ((Index < ConsoleOutMenu.MenuNumber) && \\r
+       (Index < MAX_MENU_NUMBER)) ; Index++) {  \r
+    NewMenuEntry      = BOpt_GetMenuEntry (&ConsoleOutMenu, Index);\r
+    NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;  \r
+    ConOutCheck[Index] = NewConsoleContext->IsActive;\r
+  }\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
+  UINT16              Index;\r
+  BM_MENU_ENTRY       *NewMenuEntry; \r
+  UINT8               *ConErrCheck;\r
+  BM_CONSOLE_CONTEXT  *NewConsoleContext;\r
+  \r
+  ASSERT (CallbackData != NULL);\r
+  ConErrCheck = &CallbackData->BmmFakeNvData.ConsoleErrCheck[0];\r
+  for (Index = 0; ((Index < ConsoleErrMenu.MenuNumber) && \\r
+       (Index < MAX_MENU_NUMBER)) ; Index++) {  \r
+    NewMenuEntry      = BOpt_GetMenuEntry (&ConsoleErrMenu, Index);\r
+    NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;  \r
+    ConErrCheck[Index] = NewConsoleContext->IsActive;\r
+  }\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
+  BMM_FAKE_NV_DATA     *CurrentFakeNVMap;\r
+  BM_MENU_ENTRY        *NewMenuEntry;\r
+  BM_TERMINAL_CONTEXT  *NewTerminalContext;    \r
+  UINT16               TerminalIndex;  \r
+  UINT8                AttributeIndex;\r
+\r
+  ASSERT (CallbackData != NULL);\r
+  \r
+  CurrentFakeNVMap = &CallbackData->BmmFakeNvData;     \r
+  for (TerminalIndex = 0; ((TerminalIndex < TerminalMenu.MenuNumber) && \\r
+       (TerminalIndex < MAX_MENU_NUMBER)); TerminalIndex++) {  \r
+    NewMenuEntry        = BOpt_GetMenuEntry (&TerminalMenu, TerminalIndex);\r
+    NewTerminalContext  = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
+    for (AttributeIndex = 0; AttributeIndex < sizeof (BaudRateList) / sizeof (BaudRateList [0]); AttributeIndex++) {\r
+      if (NewTerminalContext->BaudRate == (UINT64) (BaudRateList[AttributeIndex].Value)) {\r
+        NewTerminalContext->BaudRateIndex = AttributeIndex;\r
+        break;\r
+      }\r
+    }\r
+    for (AttributeIndex = 0; AttributeIndex < sizeof (DataBitsList) / sizeof (DataBitsList[0]); AttributeIndex++) {\r
+      if (NewTerminalContext->DataBits == (UINT64) (DataBitsList[AttributeIndex].Value)) {\r
+        NewTerminalContext->DataBitsIndex = AttributeIndex;\r
+        break;\r
+      }\r
+    }    \r
+    \r
+    for (AttributeIndex = 0; AttributeIndex < sizeof (ParityList) / sizeof (ParityList[0]); AttributeIndex++) {\r
+      if (NewTerminalContext->Parity == (UINT64) (ParityList[AttributeIndex].Value)) {\r
+        NewTerminalContext->ParityIndex = AttributeIndex;\r
+        break;\r
+      }\r
+    }            \r
+    \r
+    for (AttributeIndex = 0; AttributeIndex < sizeof (StopBitsList) / sizeof (StopBitsList[0]); AttributeIndex++) {\r
+      if (NewTerminalContext->StopBits == (UINT64) (StopBitsList[AttributeIndex].Value)) {\r
+        NewTerminalContext->StopBitsIndex = AttributeIndex;\r
+        break;\r
+      }\r
+    }        \r
+    CurrentFakeNVMap->COMBaudRate[TerminalIndex]     = NewTerminalContext->BaudRateIndex;\r
+    CurrentFakeNVMap->COMDataRate[TerminalIndex]     = NewTerminalContext->DataBitsIndex;\r
+    CurrentFakeNVMap->COMStopBits[TerminalIndex]     = NewTerminalContext->StopBitsIndex;\r
+    CurrentFakeNVMap->COMParity[TerminalIndex]       = NewTerminalContext->ParityIndex; \r
+    CurrentFakeNVMap->COMTerminalType[TerminalIndex] = NewTerminalContext->TerminalType;\r
+    CurrentFakeNVMap->COMFlowControl[TerminalIndex]  = NewTerminalContext->FlowControl;\r
+  } \r
+}\r
+\r