/** @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
}\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