/** @file\r
Dynamically update the pages.\r
\r
-Copyright (c) 2004 - 2008, Intel Corporation. All rights reserved.<BR>\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
\r
HiiUpdateForm (\r
CallbackData->BmmHiiHandle,\r
- &mBootMaintGuid,\r
+ &gBootMaintFormSetGuid,\r
CallbackData->BmmCurrentPageId,\r
mStartOpCodeHandle, // Label CallbackData->BmmCurrentPageId\r
mEndOpCodeHandle // LABEL_END\r
mStartLabel->Number = LabelId;\r
HiiUpdateForm (\r
CallbackData->BmmHiiHandle,\r
- &mBootMaintGuid,\r
+ &gBootMaintFormSetGuid,\r
LabelId,\r
mStartOpCodeHandle, // Label LabelId\r
mEndOpCodeHandle // LABEL_END\r
UpdatePageStart (CallbackData);\r
CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu);\r
\r
- ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.BootOptionDel) / sizeof (CallbackData->BmmFakeNvData.BootOptionDel[0])));\r
+ ASSERT (BootOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionDel) / sizeof (CallbackData->BmmFakeNvData.OptionDel[0])));\r
for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
}\r
\r
NewLoadContext->Deleted = FALSE;\r
- CallbackData->BmmFakeNvData.BootOptionDel[Index] = 0x00;\r
+ CallbackData->BmmFakeNvData.OptionDel[Index] = FALSE;\r
\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
- (EFI_QUESTION_ID) (BOOT_OPTION_DEL_QUESTION_ID + Index),\r
+ (EFI_QUESTION_ID) (OPTION_DEL_QUESTION_ID + Index),\r
VARSTORE_ID_BOOT_MAINT,\r
- (UINT16) (BOOT_OPTION_DEL_VAR_OFFSET + Index),\r
+ (UINT16) (OPTION_DEL_VAR_OFFSET + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
0,\r
\r
CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &DriverOptionMenu);\r
\r
- ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.DriverOptionDel) / sizeof (CallbackData->BmmFakeNvData.DriverOptionDel[0])));\r
+ ASSERT (DriverOptionMenu.MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.OptionDel) / sizeof (CallbackData->BmmFakeNvData.OptionDel[0])));\r
for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (&DriverOptionMenu, Index);\r
\r
NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
NewLoadContext->Deleted = FALSE;\r
- CallbackData->BmmFakeNvData.DriverOptionDel[Index] = 0x00;\r
+ CallbackData->BmmFakeNvData.OptionDel[Index] = FALSE;\r
\r
HiiCreateCheckBoxOpCode (\r
mStartOpCodeHandle,\r
- (EFI_QUESTION_ID) (DRIVER_OPTION_DEL_QUESTION_ID + Index),\r
+ (EFI_QUESTION_ID) (OPTION_DEL_QUESTION_ID + Index),\r
VARSTORE_ID_BOOT_MAINT,\r
- (UINT16) (DRIVER_OPTION_DEL_VAR_OFFSET + Index),\r
+ (UINT16) (OPTION_DEL_VAR_OFFSET + Index),\r
NewMenuEntry->DisplayStringToken,\r
NewMenuEntry->HelpStringToken,\r
0,\r
IN BMM_CALLBACK_DATA *CallbackData\r
)\r
{\r
- BM_MENU_ENTRY *NewMenuEntry;\r
- UINT16 Index;\r
- VOID *OptionsOpCodeHandle;\r
+ BM_MENU_ENTRY *NewMenuEntry;\r
+ UINT16 Index;\r
+ UINT16 OptionOrderIndex;\r
+ VOID *OptionsOpCodeHandle;\r
+ UINTN DeviceType;\r
+ BM_LOAD_CONTEXT *NewLoadContext;\r
\r
+ DeviceType = (UINTN) -1;\r
CallbackData->BmmAskSaveOrNot = TRUE;\r
\r
UpdatePageStart (CallbackData);\r
\r
CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu);\r
\r
- ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, 100);\r
+ ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, sizeof (CallbackData->BmmFakeNvData.OptionOrder));\r
\r
OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (OptionsOpCodeHandle != NULL);\r
\r
for (\r
- Index = 0;\r
+ Index = 0, OptionOrderIndex = 0;\r
(\r
(Index < OptionMenu->MenuNumber) &&\r
- (Index <\r
+ (OptionOrderIndex <\r
(\r
sizeof (CallbackData->BmmFakeNvData.OptionOrder) /\r
- sizeof (UINT8)\r
+ sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])\r
)\r
)\r
);\r
Index++\r
) {\r
- NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
+ NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
+ NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
+\r
+ if (NewLoadContext->IsLegacy) {\r
+ if (((BBS_BBS_DEVICE_PATH *) NewLoadContext->FilePathList)->DeviceType != DeviceType) {\r
+ DeviceType = ((BBS_BBS_DEVICE_PATH *) NewLoadContext->FilePathList)->DeviceType;\r
+ } else {\r
+ //\r
+ // Only show one legacy boot option for the same device type\r
+ // assuming the boot options are grouped by the device type\r
+ //\r
+ continue;\r
+ }\r
+ }\r
HiiCreateOneOfOptionOpCode (\r
OptionsOpCodeHandle,\r
NewMenuEntry->DisplayStringToken,\r
0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- (UINT8) (NewMenuEntry->OptionNumber + 1)\r
+ EFI_IFR_TYPE_NUM_SIZE_32,\r
+ (UINT32) (NewMenuEntry->OptionNumber + 1)\r
);\r
- CallbackData->BmmFakeNvData.OptionOrder[Index] = (UINT8) (NewMenuEntry->OptionNumber + 1);\r
+ CallbackData->BmmFakeNvData.OptionOrder[OptionOrderIndex++] = (UINT32) (NewMenuEntry->OptionNumber + 1);\r
}\r
\r
if (OptionMenu->MenuNumber > 0) {\r
STRING_TOKEN (STR_CHANGE_ORDER), // Question help text \r
0, // Question flag \r
0, // Ordered list flag, e.g. EFI_IFR_UNIQUE_SET\r
- EFI_IFR_NUMERIC_SIZE_1, // Data type of Question value \r
+ EFI_IFR_TYPE_NUM_SIZE_32, // Data type of Question value \r
100, // Maximum container \r
OptionsOpCodeHandle, // Option Opcode list \r
NULL // Default Opcode is NULL \r
CopyMem (\r
CallbackData->BmmOldFakeNVData.OptionOrder,\r
CallbackData->BmmFakeNvData.OptionOrder,\r
- 100\r
+ sizeof (CallbackData->BmmOldFakeNVData.OptionOrder)\r
);\r
}\r
\r
OptionsOpCodeHandle,\r
NewMenuEntry->DisplayStringToken,\r
EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
Index\r
);\r
CallbackData->BmmFakeNvData.BootNext = Index;\r
OptionsOpCodeHandle,\r
NewMenuEntry->DisplayStringToken,\r
0,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
Index\r
);\r
}\r
OptionsOpCodeHandle,\r
STRING_TOKEN (STR_NONE),\r
EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
Index\r
);\r
} else {\r
OptionsOpCodeHandle,\r
STRING_TOKEN (STR_NONE),\r
0,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
Index\r
);\r
} \r
\r
DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();\r
ASSERT (DefaultOpCodeHandle != NULL);\r
- HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_NUMERIC_SIZE_2, BootTimeOut);\r
+ HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, BootTimeOut);\r
\r
HiiCreateNumericOpCode (\r
mStartOpCodeHandle,\r
OptionsOpCodeHandle,\r
ModeToken[Index],\r
EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
(UINT16) Mode\r
);\r
} else {\r
OptionsOpCodeHandle,\r
ModeToken[Index],\r
0,\r
- EFI_IFR_NUMERIC_SIZE_2,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
(UINT16) Mode\r
);\r
}\r
OptionsOpCodeHandle,\r
BaudRateList[Index].StringToken,\r
CheckFlags,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
Index\r
);\r
}\r
OptionsOpCodeHandle,\r
DataBitsList[Index].StringToken,\r
CheckFlags,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
Index\r
);\r
}\r
OptionsOpCodeHandle,\r
ParityList[Index].StringToken,\r
CheckFlags,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
Index\r
);\r
}\r
OptionsOpCodeHandle,\r
StopBitsList[Index].StringToken,\r
CheckFlags,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
Index\r
);\r
}\r
OptionsOpCodeHandle,\r
(EFI_STRING_ID) TerminalType[Index],\r
CheckFlags,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
Index\r
);\r
}\r
NULL\r
);\r
\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
+ CallbackData->BmmFakeNvData.COMFlowControl = NewTerminalContext->FlowControl;\r
+ for (Index = 0; Index < sizeof (mFlowControlType) / sizeof (mFlowControlType[0]); Index++) {\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ (EFI_STRING_ID) mFlowControlType[Index],\r
+ 0,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ mFlowControlValue[Index]\r
+ );\r
+ }\r
+\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
+ (EFI_QUESTION_ID) COM_FLOWCONTROL_QUESTION_ID,\r
+ VARSTORE_ID_BOOT_MAINT,\r
+ COM_FLOWCONTROL_VAR_OFFSET,\r
+ STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
+ STRING_TOKEN (STR_COM_FLOW_CONTROL),\r
+ 0,\r
+ EFI_IFR_NUMERIC_SIZE_1,\r
+ OptionsOpCodeHandle,\r
+ NULL\r
+ );\r
+\r
HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
\r
UpdatePageEnd (CallbackData);\r
IN BMM_CALLBACK_DATA *CallbackData\r
)\r
{\r
- BM_LEGACY_DEV_ORDER_CONTEXT *DevOrder;\r
+ LEGACY_DEV_ORDER_ENTRY *DevOrder;\r
BM_MENU_OPTION *OptionMenu;\r
BM_MENU_ENTRY *NewMenuEntry;\r
EFI_STRING_ID StrRef;\r
CallbackData->BmmAskSaveOrNot = TRUE;\r
UpdatePageStart (CallbackData);\r
\r
- DisMap = CallbackData->BmmOldFakeNVData.DisableMap;\r
+ DisMap = ZeroMem (CallbackData->BmmOldFakeNVData.DisableMap, sizeof (CallbackData->BmmOldFakeNVData.DisableMap));\r
\r
- SetMem (DisMap, 32, 0);\r
//\r
// Create oneof option list\r
//\r
\r
for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
-\r
- if (Index == 0) {\r
- HiiCreateOneOfOptionOpCode (\r
- OptionsOpCodeHandle,\r
- NewMenuEntry->DisplayStringToken,\r
- EFI_IFR_OPTION_DEFAULT,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index\r
- );\r
- }\r
-\r
+ //\r
+ // Create OneOf for each legacy device\r
+ //\r
HiiCreateOneOfOptionOpCode (\r
OptionsOpCodeHandle,\r
NewMenuEntry->DisplayStringToken,\r
0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->BbsIndex\r
);\r
}\r
\r
//\r
- // for item "Disabled"\r
+ // Create OneOf for item "Disabled"\r
//\r
HiiCreateOneOfOptionOpCode (\r
OptionsOpCodeHandle,\r
STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE),\r
0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
0xFF\r
);\r
\r
//\r
VarData = BdsLibGetVariableAndSize (\r
VAR_LEGACY_DEV_ORDER,\r
- &EfiLegacyDevOrderGuid,\r
+ &gEfiLegacyDevOrderVariableGuid,\r
&VarSize\r
);\r
\r
if (NULL != VarData) {\r
- DevOrder = (BM_LEGACY_DEV_ORDER_CONTEXT *) VarData;\r
+ DevOrder = (LEGACY_DEV_ORDER_ENTRY *) VarData;\r
while (VarData < VarData + VarSize) {\r
if (DevOrder->BbsType == BbsType) {\r
break;\r
\r
VarData += sizeof (BBS_TYPE);\r
VarData += *(UINT16 *) VarData;\r
- DevOrder = (BM_LEGACY_DEV_ORDER_CONTEXT *) VarData;\r
+ DevOrder = (LEGACY_DEV_ORDER_ENTRY *) VarData;\r
}\r
//\r
// Create oneof tag here for FD/HD/CD #1 #2\r