\r
}\r
\r
+/**\r
+ Update the terminal content in TerminalMenu.\r
+\r
+ @param BmmData The BMM fake NV data.\r
+\r
+**/\r
+VOID\r
+UpdateTerminalContent (\r
+ IN BMM_FAKE_NV_DATA *BmmData\r
+ )\r
+{\r
+ UINT16 Index;\r
+ BM_TERMINAL_CONTEXT *NewTerminalContext;\r
+ BM_MENU_ENTRY *NewMenuEntry;\r
+\r
+ for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
+ NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
+ ASSERT (NewMenuEntry != NULL);\r
+ NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
+ NewTerminalContext->BaudRateIndex = BmmData->COMBaudRate[Index];\r
+ ASSERT (BmmData->COMBaudRate[Index] < (sizeof (BaudRateList) / sizeof (BaudRateList[0])));\r
+ NewTerminalContext->BaudRate = BaudRateList[BmmData->COMBaudRate[Index]].Value;\r
+ NewTerminalContext->DataBitsIndex = BmmData->COMDataRate[Index];\r
+ ASSERT (BmmData->COMDataRate[Index] < (sizeof (DataBitsList) / sizeof (DataBitsList[0])));\r
+ NewTerminalContext->DataBits = (UINT8) DataBitsList[BmmData->COMDataRate[Index]].Value;\r
+ NewTerminalContext->StopBitsIndex = BmmData->COMStopBits[Index];\r
+ ASSERT (BmmData->COMStopBits[Index] < (sizeof (StopBitsList) / sizeof (StopBitsList[0])));\r
+ NewTerminalContext->StopBits = (UINT8) StopBitsList[BmmData->COMStopBits[Index]].Value;\r
+ NewTerminalContext->ParityIndex = BmmData->COMParity[Index];\r
+ ASSERT (BmmData->COMParity[Index] < (sizeof (ParityList) / sizeof (ParityList[0])));\r
+ NewTerminalContext->Parity = (UINT8) ParityList[BmmData->COMParity[Index]].Value;\r
+ NewTerminalContext->TerminalType = BmmData->COMTerminalType[Index];\r
+ NewTerminalContext->FlowControl = BmmData->COMFlowControl[Index];\r
+ ChangeTerminalDevicePath (\r
+ NewTerminalContext->DevicePath,\r
+ FALSE\r
+ );\r
+ }\r
+}\r
+\r
+/**\r
+ Update the console content in ConsoleMenu.\r
+\r
+ @param BmmData The BMM fake NV data.\r
+\r
+**/\r
+VOID\r
+UpdateConsoleContent(\r
+ IN CHAR16 *ConsoleName,\r
+ IN BMM_FAKE_NV_DATA *BmmData\r
+ )\r
+{\r
+ UINT16 Index;\r
+ BM_CONSOLE_CONTEXT *NewConsoleContext;\r
+ BM_TERMINAL_CONTEXT *NewTerminalContext;\r
+ BM_MENU_ENTRY *NewMenuEntry;\r
+\r
+ if (StrCmp (ConsoleName, L"ConIn") == 0) {\r
+ for (Index = 0; Index < ConsoleInpMenu.MenuNumber; Index++){\r
+ NewMenuEntry = BOpt_GetMenuEntry(&ConsoleInpMenu, Index);\r
+ NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
+ ASSERT (Index < MAX_MENU_NUMBER);\r
+ NewConsoleContext->IsActive = BmmData->ConsoleInCheck[Index];\r
+ }\r
+ for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
+ NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
+ NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
+ ASSERT (Index + ConsoleInpMenu.MenuNumber < MAX_MENU_NUMBER);\r
+ NewTerminalContext->IsConIn = BmmData->ConsoleInCheck[Index + ConsoleInpMenu.MenuNumber];\r
+ }\r
+ }\r
+\r
+ if (StrCmp (ConsoleName, L"ConOut") == 0) {\r
+ for (Index = 0; Index < ConsoleOutMenu.MenuNumber; Index++){\r
+ NewMenuEntry = BOpt_GetMenuEntry(&ConsoleOutMenu, Index);\r
+ NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
+ ASSERT (Index < MAX_MENU_NUMBER);\r
+ NewConsoleContext->IsActive = BmmData->ConsoleOutCheck[Index];\r
+ }\r
+ for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
+ NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
+ NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
+ ASSERT (Index + ConsoleOutMenu.MenuNumber < MAX_MENU_NUMBER);\r
+ NewTerminalContext->IsConOut = BmmData->ConsoleOutCheck[Index + ConsoleOutMenu.MenuNumber];\r
+ }\r
+ }\r
+ if (StrCmp (ConsoleName, L"ErrOut") == 0) {\r
+ for (Index = 0; Index < ConsoleErrMenu.MenuNumber; Index++){\r
+ NewMenuEntry = BOpt_GetMenuEntry(&ConsoleErrMenu, Index);\r
+ NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
+ ASSERT (Index < MAX_MENU_NUMBER);\r
+ NewConsoleContext->IsActive = BmmData->ConsoleErrCheck[Index];\r
+ }\r
+ for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
+ NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
+ NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
+ ASSERT (Index + ConsoleErrMenu.MenuNumber < MAX_MENU_NUMBER);\r
+ NewTerminalContext->IsStdErr = BmmData->ConsoleErrCheck[Index + ConsoleErrMenu.MenuNumber];\r
+ }\r
+ }\r
+}\r
+\r
/**\r
This function allows a caller to extract the current configuration for one\r
or more named elements from the target driver.\r
EFI_HII_CONFIG_ROUTING_PROTOCOL *ConfigRouting;\r
BMM_FAKE_NV_DATA *NewBmmData;\r
BMM_FAKE_NV_DATA *OldBmmData;\r
- BM_CONSOLE_CONTEXT *NewConsoleContext;\r
- BM_TERMINAL_CONTEXT *NewTerminalContext;\r
BM_MENU_ENTRY *NewMenuEntry;\r
BM_LOAD_CONTEXT *NewLoadContext;\r
UINT16 Index;\r
continue;\r
}\r
\r
- NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
- ASSERT (NewMenuEntry != NULL);\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
- NewTerminalContext->BaudRateIndex = NewBmmData->COMBaudRate[Index];\r
- ASSERT (NewBmmData->COMBaudRate[Index] < (sizeof (BaudRateList) / sizeof (BaudRateList[0])));\r
- NewTerminalContext->BaudRate = BaudRateList[NewBmmData->COMBaudRate[Index]].Value;\r
- NewTerminalContext->DataBitsIndex = NewBmmData->COMDataRate[Index];\r
- ASSERT (NewBmmData->COMDataRate[Index] < (sizeof (DataBitsList) / sizeof (DataBitsList[0])));\r
- NewTerminalContext->DataBits = (UINT8) DataBitsList[NewBmmData->COMDataRate[Index]].Value;\r
- NewTerminalContext->StopBitsIndex = NewBmmData->COMStopBits[Index];\r
- ASSERT (NewBmmData->COMStopBits[Index] < (sizeof (StopBitsList) / sizeof (StopBitsList[0])));\r
- NewTerminalContext->StopBits = (UINT8) StopBitsList[NewBmmData->COMStopBits[Index]].Value;\r
- NewTerminalContext->ParityIndex = NewBmmData->COMParity[Index];\r
- ASSERT (NewBmmData->COMParity[Index] < (sizeof (ParityList) / sizeof (ParityList[0])));\r
- NewTerminalContext->Parity = (UINT8) ParityList[NewBmmData->COMParity[Index]].Value;\r
- NewTerminalContext->TerminalType = NewBmmData->COMTerminalType[Index];\r
- NewTerminalContext->FlowControl = NewBmmData->COMFlowControl[Index];\r
- ChangeTerminalDevicePath (\r
- NewTerminalContext->DevicePath,\r
- FALSE\r
- );\r
TerminalAttChange = TRUE;\r
}\r
if (TerminalAttChange) {\r
// Check data which located in Console Options Menu and save the settings if need\r
//\r
if (CompareMem (NewBmmData->ConsoleInCheck, OldBmmData->ConsoleInCheck, sizeof (NewBmmData->ConsoleInCheck)) != 0){\r
- for (Index = 0; Index < ConsoleInpMenu.MenuNumber; Index++){\r
- NewMenuEntry = BOpt_GetMenuEntry(&ConsoleInpMenu, Index);\r
- NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
- ASSERT (Index < MAX_MENU_NUMBER);\r
- NewConsoleContext->IsActive = NewBmmData->ConsoleInCheck[Index];\r
- }\r
- for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
- NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
- ASSERT (Index + ConsoleInpMenu.MenuNumber < MAX_MENU_NUMBER);\r
- NewTerminalContext->IsConIn = NewBmmData->ConsoleInCheck[Index + ConsoleInpMenu.MenuNumber];\r
- }\r
Var_UpdateConsoleInpOption();\r
}\r
\r
if (CompareMem (NewBmmData->ConsoleOutCheck, OldBmmData->ConsoleOutCheck, sizeof (NewBmmData->ConsoleOutCheck)) != 0){\r
- for (Index = 0; Index < ConsoleOutMenu.MenuNumber; Index++){\r
- NewMenuEntry = BOpt_GetMenuEntry(&ConsoleOutMenu, Index);\r
- NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
- ASSERT (Index < MAX_MENU_NUMBER);\r
- NewConsoleContext->IsActive = NewBmmData->ConsoleOutCheck[Index];\r
- }\r
- for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
- NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
- ASSERT (Index + ConsoleOutMenu.MenuNumber < MAX_MENU_NUMBER);\r
- NewTerminalContext->IsConOut = NewBmmData->ConsoleOutCheck[Index + ConsoleOutMenu.MenuNumber];\r
- }\r
Var_UpdateConsoleOutOption();\r
}\r
\r
if (CompareMem (NewBmmData->ConsoleErrCheck, OldBmmData->ConsoleErrCheck, sizeof (NewBmmData->ConsoleErrCheck)) != 0){\r
- for (Index = 0; Index < ConsoleErrMenu.MenuNumber; Index++){\r
- NewMenuEntry = BOpt_GetMenuEntry(&ConsoleErrMenu, Index);\r
- NewConsoleContext = (BM_CONSOLE_CONTEXT *)NewMenuEntry->VariableContext;\r
- ASSERT (Index < MAX_MENU_NUMBER);\r
- NewConsoleContext->IsActive = NewBmmData->ConsoleErrCheck[Index];\r
- }\r
- for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
- NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
- ASSERT (Index + ConsoleErrMenu.MenuNumber < MAX_MENU_NUMBER);\r
- NewTerminalContext->IsStdErr = NewBmmData->ConsoleErrCheck[Index + ConsoleErrMenu.MenuNumber];\r
- }\r
Var_UpdateErrorOutOption();\r
}\r
\r
break;\r
}\r
}\r
+ //\r
+ // Update the content in Terminal menu and Console menu here.\r
+ //\r
+ if (QuestionId == COM_BAUD_RATE_QUESTION_ID + Private->CurrentTerminal || QuestionId == COM_DATA_RATE_QUESTION_ID + Private->CurrentTerminal ||\r
+ QuestionId == COM_PARITY_QUESTION_ID + Private->CurrentTerminal || QuestionId == COM_STOP_BITS_QUESTION_ID + Private->CurrentTerminal ||\r
+ QuestionId == COM_TERMINAL_QUESTION_ID + Private->CurrentTerminal || QuestionId == COM_FLOWCONTROL_QUESTION_ID + Private->CurrentTerminal\r
+ ) {\r
+ UpdateTerminalContent(CurrentFakeNVMap);\r
+ }\r
+ if ((QuestionId >= CON_IN_DEVICE_QUESTION_ID) && (QuestionId < CON_IN_DEVICE_QUESTION_ID + MAX_MENU_NUMBER)) {\r
+ UpdateConsoleContent (L"ConIn",CurrentFakeNVMap);\r
+ } else if ((QuestionId >= CON_OUT_DEVICE_QUESTION_ID) && (QuestionId < CON_OUT_DEVICE_QUESTION_ID + MAX_MENU_NUMBER)) {\r
+ UpdateConsoleContent (L"ConOut", CurrentFakeNVMap);\r
+ } else if ((QuestionId >= CON_ERR_DEVICE_QUESTION_ID) && (QuestionId < CON_ERR_DEVICE_QUESTION_ID + MAX_MENU_NUMBER)) {\r
+ UpdateConsoleContent (L"ConErr", CurrentFakeNVMap);\r
+ }\r
}\r
\r
//\r
(UINT16) (VariableOffsetBase + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
CheckFlags,\r
NULL\r
);\r
(UINT16) (VariableOffsetBase + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
CheckFlags,\r
NULL\r
);\r
(UINT16) (COM_BAUD_RATE_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_BAUD_RATE),\r
STRING_TOKEN (STR_COM_BAUD_RATE),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
(UINT16) (COM_DATA_RATE_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_DATA_BITS),\r
STRING_TOKEN (STR_COM_DATA_BITS),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
(UINT16) (COM_PARITY_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_PARITY),\r
STRING_TOKEN (STR_COM_PARITY),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
(UINT16) (COM_STOP_BITS_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_STOP_BITS),\r
STRING_TOKEN (STR_COM_STOP_BITS),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
(UINT16) (COM_TERMINAL_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_TERMI_TYPE),\r
STRING_TOKEN (STR_COM_TERMI_TYPE),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r
(UINT16) (COM_FLOWCONTROL_VAR_OFFSET + CurrentTerminal),\r
STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
- 0,\r
+ EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
OptionsOpCodeHandle,\r
NULL\r