/** @file\r
Dynamically update the pages.\r
\r
-Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2004 - 2012, 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
VOID\r
)\r
{\r
- gUpdateData.Offset = 0;\r
+ //\r
+ // Free current updated date\r
+ // \r
+ if (mStartOpCodeHandle != NULL) {\r
+ HiiFreeOpCodeHandle (mStartOpCodeHandle);\r
+ }\r
+\r
+ //\r
+ // Create new OpCode Handle\r
+ //\r
+ mStartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the start opcode\r
+ //\r
+ mStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+\r
}\r
\r
/**\r
)\r
{\r
RefreshUpdateData ();\r
+ mStartLabel->Number = CallbackData->BmmCurrentPageId;\r
\r
if (!(CallbackData->BmmAskSaveOrNot)) {\r
//\r
// Add a "Go back to main page" tag in front of the form when there are no\r
// "Apply changes" and "Discard changes" tags in the end of the form.\r
//\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_MAIN_ID,\r
STRING_TOKEN (STR_FORM_GOTO_MAIN),\r
STRING_TOKEN (STR_FORM_GOTO_MAIN),\r
0,\r
- FORM_MAIN_ID,\r
- &gUpdateData\r
+ FORM_MAIN_ID\r
);\r
}\r
\r
// Create the "Apply changes" and "Discard changes" tags.\r
//\r
if (CallbackData->BmmAskSaveOrNot) {\r
- CreateSubTitleOpCode (\r
+ HiiCreateSubTitleOpCode (\r
+ mStartOpCodeHandle,\r
STRING_TOKEN (STR_NULL_STRING),\r
0,\r
0,\r
- 0,\r
- &gUpdateData\r
+ 0\r
);\r
\r
- CreateGotoOpCode (\r
- FORM_MAIN_ID,\r
+ HiiCreateActionOpCode (\r
+ mStartOpCodeHandle,\r
+ KEY_VALUE_SAVE_AND_EXIT,\r
STRING_TOKEN (STR_SAVE_AND_EXIT),\r
STRING_TOKEN (STR_NULL_STRING),\r
EFI_IFR_FLAG_CALLBACK,\r
- KEY_VALUE_SAVE_AND_EXIT,\r
- &gUpdateData\r
+ 0\r
);\r
}\r
\r
//\r
// Ensure user can return to the main page.\r
//\r
- CreateGotoOpCode (\r
- FORM_MAIN_ID,\r
+ HiiCreateActionOpCode (\r
+ mStartOpCodeHandle,\r
+ KEY_VALUE_NO_SAVE_AND_EXIT,\r
STRING_TOKEN (STR_NO_SAVE_AND_EXIT),\r
STRING_TOKEN (STR_NULL_STRING),\r
EFI_IFR_FLAG_CALLBACK,\r
- KEY_VALUE_NO_SAVE_AND_EXIT,\r
- &gUpdateData\r
+ 0\r
);\r
\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
CallbackData->BmmHiiHandle,\r
- &mBootMaintGuid,\r
- CallbackData->BmmCurrentPageId,\r
+ &gBootMaintFormSetGuid,\r
CallbackData->BmmCurrentPageId,\r
- FALSE,\r
- &gUpdateData\r
+ mStartOpCodeHandle, // Label CallbackData->BmmCurrentPageId\r
+ mEndOpCodeHandle // LABEL_END\r
);\r
}\r
\r
//\r
// Remove all op-codes from dynamic page\r
//\r
- IfrLibUpdateForm (\r
+ mStartLabel->Number = LabelId;\r
+ HiiUpdateForm (\r
CallbackData->BmmHiiHandle,\r
- &mBootMaintGuid,\r
- LabelId,\r
+ &gBootMaintFormSetGuid,\r
LabelId,\r
- FALSE,\r
- &gUpdateData\r
+ mStartOpCodeHandle, // Label LabelId\r
+ mEndOpCodeHandle // LABEL_END\r
);\r
}\r
\r
\r
Option = (BDS_COMMON_OPTION *) AllocatePool (sizeof (BDS_COMMON_OPTION));\r
ASSERT (Option != NULL);\r
- Option->Description = FileContext->FileName;\r
+ Option->Description = (CHAR16 *) AllocateCopyPool (StrSize (FileContext->FileName), FileContext->FileName);\r
Option->DevicePath = FileContext->DevicePath;\r
Option->LoadOptionsSize = 0;\r
Option->LoadOptions = NULL;\r
for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_CON_COM_SETUP_ID,\r
NewMenuEntry->DisplayStringToken,\r
STRING_TOKEN (STR_NULL_STRING),\r
EFI_IFR_FLAG_CALLBACK,\r
- (UINT16) (TERMINAL_OPTION_OFFSET + Index),\r
- &gUpdateData\r
+ (UINT16) (TERMINAL_OPTION_OFFSET + Index)\r
);\r
}\r
\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
- CreateCheckBoxOpCode (\r
- (EFI_QUESTION_ID) (BOOT_OPTION_DEL_QUESTION_ID + Index),\r
+ HiiCreateCheckBoxOpCode (\r
+ mStartOpCodeHandle,\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
0,\r
- &gUpdateData\r
+ NULL\r
);\r
}\r
\r
for (Index = 0; Index < DriverMenu.MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (&DriverMenu, Index);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_DRV_ADD_HANDLE_DESC_ID,\r
NewMenuEntry->DisplayStringToken,\r
STRING_TOKEN (STR_NULL_STRING),\r
EFI_IFR_FLAG_CALLBACK,\r
- (UINT16) (HANDLE_OPTION_OFFSET + Index),\r
- &gUpdateData\r
+ (UINT16) (HANDLE_OPTION_OFFSET + Index)\r
);\r
}\r
\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
- CreateCheckBoxOpCode (\r
- (EFI_QUESTION_ID) (DRIVER_OPTION_DEL_QUESTION_ID + Index),\r
+ HiiCreateCheckBoxOpCode (\r
+ mStartOpCodeHandle,\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
0,\r
- &gUpdateData\r
+ NULL\r
);\r
}\r
\r
\r
UpdatePageStart (CallbackData);\r
\r
- CreateSubTitleOpCode (\r
+ HiiCreateSubTitleOpCode (\r
+ mStartOpCodeHandle,\r
NewMenuEntry->DisplayStringToken,\r
0,\r
0,\r
- 0,\r
- &gUpdateData\r
+ 0\r
);\r
\r
- CreateStringOpCode (\r
+ HiiCreateStringOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) DRV_ADD_HANDLE_DESC_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
DRV_ADD_HANDLE_DESC_VAR_OFFSET,\r
0,\r
6,\r
75,\r
- &gUpdateData\r
+ NULL\r
);\r
\r
- CreateCheckBoxOpCode (\r
+ HiiCreateCheckBoxOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) DRV_ADD_RECON_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
DRV_ADD_RECON_VAR_OFFSET,\r
STRING_TOKEN (STR_LOAD_OPTION_FORCE_RECON),\r
0,\r
0,\r
- &gUpdateData\r
+ NULL\r
);\r
\r
- CreateStringOpCode (\r
+ HiiCreateStringOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) DRIVER_ADD_OPTION_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
DRIVER_ADD_OPTION_VAR_OFFSET,\r
0,\r
6,\r
75,\r
- &gUpdateData\r
+ NULL\r
);\r
\r
UpdatePageEnd (CallbackData);\r
\r
UpdatePageStart (CallbackData);\r
\r
- ASSERT (ConsoleMenu->MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (CallbackData->BmmFakeNvData.ConsoleCheck[0])));\r
- for (Index = 0; Index < ConsoleMenu->MenuNumber; Index++) {\r
+ for (Index = 0; ((Index < ConsoleMenu->MenuNumber) && \\r
+ (Index < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))) ; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (ConsoleMenu, Index);\r
NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext;\r
CheckFlags = 0;\r
CallbackData->BmmFakeNvData.ConsoleCheck[Index] = FALSE;\r
}\r
\r
- CreateCheckBoxOpCode (\r
+ HiiCreateCheckBoxOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) (CON_DEVICE_QUESTION_ID + Index),\r
VARSTORE_ID_BOOT_MAINT,\r
(UINT16) (CON_DEVICE_VAR_OFFSET + Index),\r
NewMenuEntry->HelpStringToken,\r
0,\r
CheckFlags,\r
- &gUpdateData\r
+ NULL\r
);\r
}\r
\r
- for (Index2 = 0; Index2 < TerminalMenu.MenuNumber; Index2++) {\r
+ for (Index2 = 0; ((Index2 < TerminalMenu.MenuNumber) && \\r
+ (Index2 < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))); Index2++) {\r
CheckFlags = 0;\r
NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index2);\r
NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
\r
+ ASSERT (Index < MAX_MENU_NUMBER);\r
if (((NewTerminalContext->IsConIn != 0) && (UpdatePageId == FORM_CON_IN_ID)) ||\r
((NewTerminalContext->IsConOut != 0) && (UpdatePageId == FORM_CON_OUT_ID)) ||\r
((NewTerminalContext->IsStdErr != 0) && (UpdatePageId == FORM_CON_ERR_ID))\r
CallbackData->BmmFakeNvData.ConsoleCheck[Index] = FALSE;\r
}\r
\r
- CreateCheckBoxOpCode (\r
+ HiiCreateCheckBoxOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) (CON_DEVICE_QUESTION_ID + Index),\r
VARSTORE_ID_BOOT_MAINT,\r
(UINT16) (CON_DEVICE_VAR_OFFSET + Index),\r
NewMenuEntry->HelpStringToken,\r
0,\r
CheckFlags,\r
- &gUpdateData\r
+ NULL\r
);\r
\r
Index++;\r
IN BMM_CALLBACK_DATA *CallbackData\r
)\r
{\r
- BM_MENU_ENTRY *NewMenuEntry;\r
- UINT16 Index;\r
- IFR_OPTION *IfrOptionList;\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
- IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * OptionMenu->MenuNumber);\r
- if (IfrOptionList == NULL) {\r
- return ;\r
- }\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
- ASSERT (OptionMenu->MenuNumber <= (sizeof (IfrOptionList) / sizeof (IfrOptionList[0])));\r
- for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
- NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
- IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken;\r
- IfrOptionList[Index].Value.u8 = (UINT8) (NewMenuEntry->OptionNumber + 1);\r
- IfrOptionList[Index].Flags = 0;\r
- CallbackData->BmmFakeNvData.OptionOrder[Index] = IfrOptionList[Index].Value.u8;\r
+ for (\r
+ Index = 0, OptionOrderIndex = 0;\r
+ (\r
+ (Index < OptionMenu->MenuNumber) &&\r
+ (OptionOrderIndex <\r
+ (\r
+ sizeof (CallbackData->BmmFakeNvData.OptionOrder) /\r
+ sizeof (CallbackData->BmmFakeNvData.OptionOrder[0])\r
+ )\r
+ )\r
+ );\r
+ Index++\r
+ ) {\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_TYPE_NUM_SIZE_32,\r
+ (UINT32) (NewMenuEntry->OptionNumber + 1)\r
+ );\r
+ CallbackData->BmmFakeNvData.OptionOrder[OptionOrderIndex++] = (UINT32) (NewMenuEntry->OptionNumber + 1);\r
}\r
\r
if (OptionMenu->MenuNumber > 0) {\r
- CreateOrderedListOpCode (\r
- (EFI_QUESTION_ID) OPTION_ORDER_QUESTION_ID,\r
- VARSTORE_ID_BOOT_MAINT,\r
- OPTION_ORDER_VAR_OFFSET,\r
- STRING_TOKEN (STR_CHANGE_ORDER),\r
- STRING_TOKEN (STR_CHANGE_ORDER),\r
- 0,\r
- 0,\r
- EFI_IFR_NUMERIC_SIZE_1,\r
- 100,\r
- IfrOptionList,\r
- OptionMenu->MenuNumber,\r
- &gUpdateData\r
+ HiiCreateOrderedListOpCode ( \r
+ mStartOpCodeHandle, // Container for dynamic created opcodes \r
+ (EFI_QUESTION_ID) OPTION_ORDER_QUESTION_ID, // Question ID \r
+ VARSTORE_ID_BOOT_MAINT, // VarStore ID \r
+ OPTION_ORDER_VAR_OFFSET, // Offset in Buffer Storage \r
+ STRING_TOKEN (STR_CHANGE_ORDER), // Question prompt text \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_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
);\r
}\r
\r
- FreePool (IfrOptionList);\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
\r
UpdatePageEnd (CallbackData);\r
\r
CopyMem (\r
CallbackData->BmmOldFakeNVData.OptionOrder,\r
CallbackData->BmmFakeNvData.OptionOrder,\r
- 100\r
+ sizeof (CallbackData->BmmOldFakeNVData.OptionOrder)\r
);\r
}\r
\r
{\r
BM_MENU_ENTRY *NewMenuEntry;\r
BM_LOAD_CONTEXT *NewLoadContext;\r
- IFR_OPTION *IfrOptionList;\r
UINTN NumberOfOptions;\r
UINT16 Index;\r
+ VOID *OptionsOpCodeHandle;\r
\r
- IfrOptionList = NULL;\r
NumberOfOptions = BootOptionMenu.MenuNumber;\r
CallbackData->BmmAskSaveOrNot = TRUE;\r
\r
CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu);\r
\r
if (NumberOfOptions > 0) {\r
- IfrOptionList = AllocateZeroPool ((NumberOfOptions + 1) * sizeof (IFR_OPTION));\r
-\r
- ASSERT (IfrOptionList);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
CallbackData->BmmFakeNvData.BootNext = (UINT16) (BootOptionMenu.MenuNumber);\r
\r
for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
+\r
if (NewLoadContext->IsBootNext) {\r
- IfrOptionList[Index].Flags = EFI_IFR_OPTION_DEFAULT;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ NewMenuEntry->DisplayStringToken,\r
+ EFI_IFR_OPTION_DEFAULT,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ Index\r
+ );\r
CallbackData->BmmFakeNvData.BootNext = Index;\r
} else {\r
- IfrOptionList[Index].Flags = 0;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ NewMenuEntry->DisplayStringToken,\r
+ 0,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ Index\r
+ );\r
}\r
-\r
- IfrOptionList[Index].Value.u16 = Index;\r
- IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken;\r
}\r
\r
- IfrOptionList[Index].Value.u16 = Index;\r
- IfrOptionList[Index].StringToken = STRING_TOKEN (STR_NONE);\r
- IfrOptionList[Index].Flags = 0;\r
if (CallbackData->BmmFakeNvData.BootNext == Index) {\r
- IfrOptionList[Index].Flags |= EFI_IFR_OPTION_DEFAULT;\r
- }\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ STRING_TOKEN (STR_NONE),\r
+ EFI_IFR_OPTION_DEFAULT,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ Index\r
+ );\r
+ } else {\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ STRING_TOKEN (STR_NONE),\r
+ 0,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ Index\r
+ );\r
+ } \r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) BOOT_NEXT_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
BOOT_NEXT_VAR_OFFSET,\r
STRING_TOKEN (STR_BOOT_NEXT_HELP),\r
0,\r
EFI_IFR_NUMERIC_SIZE_2,\r
- IfrOptionList,\r
- (UINTN) (NumberOfOptions + 1),\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
- FreePool (IfrOptionList);\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
}\r
\r
UpdatePageEnd (CallbackData);\r
)\r
{\r
UINT16 BootTimeOut;\r
+ VOID *DefaultOpCodeHandle;\r
\r
CallbackData->BmmAskSaveOrNot = TRUE;\r
\r
UpdatePageStart (CallbackData);\r
\r
- BootTimeOut = BdsLibGetTimeout ();\r
+ BootTimeOut = PcdGet16 (PcdPlatformBootTimeOut);\r
+\r
+ DefaultOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (DefaultOpCodeHandle != NULL);\r
+ HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, BootTimeOut);\r
\r
- CreateNumericOpCode (\r
+ HiiCreateNumericOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) BOOT_TIME_OUT_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
BOOT_TIME_OUT_VAR_OFFSET,\r
0,\r
65535,\r
0,\r
- BootTimeOut,\r
- &gUpdateData\r
+ DefaultOpCodeHandle\r
);\r
+ \r
+ HiiFreeOpCodeHandle (DefaultOpCodeHandle);\r
\r
CallbackData->BmmFakeNvData.BootTimeOut = BootTimeOut;\r
\r
UINTN Index;\r
UINTN Col;\r
UINTN Row;\r
- CHAR16 RowString[50];\r
CHAR16 ModeString[50];\r
+ CHAR16 *PStr;\r
UINTN MaxMode;\r
UINTN ValidMode;\r
EFI_STRING_ID *ModeToken;\r
- IFR_OPTION *IfrOptionList;\r
EFI_STATUS Status;\r
+ VOID *OptionsOpCodeHandle;\r
EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut;\r
\r
ConOut = gST->ConOut;\r
return;\r
}\r
\r
- IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * ValidMode);\r
- ASSERT(IfrOptionList != NULL);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
ModeToken = AllocateZeroPool (sizeof (EFI_STRING_ID) * ValidMode);\r
ASSERT(ModeToken != NULL);\r
// Build mode string Column x Row\r
//\r
UnicodeValueToString (ModeString, 0, Col, 0);\r
- ASSERT ((StrLen (ModeString) + 1) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
- StrCat (ModeString, L" x ");\r
- UnicodeValueToString (RowString, 0, Row, 0);\r
- ASSERT ((StrLen (ModeString) + StrLen(RowString)) < (sizeof (ModeString) / sizeof (ModeString[0])));\r
- StrCat (ModeString, RowString);\r
+ PStr = &ModeString[0];\r
+ StrnCat (PStr, L" x ", StrLen(L" x ") + 1);\r
+ PStr = PStr + StrLen (PStr);\r
+ UnicodeValueToString (PStr , 0, Row, 0);\r
\r
- HiiLibNewString (CallbackData->BmmHiiHandle, &ModeToken[Index], ModeString);\r
+ ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL);\r
\r
- IfrOptionList[Index].StringToken = ModeToken[Index];\r
- IfrOptionList[Index].Value.u16 = (UINT16) Mode;\r
if (Mode == CallbackData->BmmFakeNvData.ConsoleOutMode) {\r
- IfrOptionList[Index].Flags = EFI_IFR_OPTION_DEFAULT;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ ModeToken[Index],\r
+ EFI_IFR_OPTION_DEFAULT,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ (UINT16) Mode\r
+ );\r
} else {\r
- IfrOptionList[Index].Flags = 0;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ ModeToken[Index],\r
+ 0,\r
+ EFI_IFR_TYPE_NUM_SIZE_16,\r
+ (UINT16) Mode\r
+ );\r
}\r
Index++;\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) CON_MODE_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
CON_MODE_VAR_OFFSET,\r
STRING_TOKEN (STR_CON_MODE_SETUP),\r
EFI_IFR_FLAG_RESET_REQUIRED,\r
EFI_IFR_NUMERIC_SIZE_2,\r
- IfrOptionList,\r
- ValidMode,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
- FreePool (IfrOptionList);\r
+\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
FreePool (ModeToken);\r
\r
UpdatePageEnd (CallbackData);\r
{\r
UINT8 Index;\r
UINT8 CheckFlags;\r
- IFR_OPTION *IfrOptionList;\r
BM_MENU_ENTRY *NewMenuEntry;\r
BM_TERMINAL_CONTEXT *NewTerminalContext;\r
+ VOID *OptionsOpCodeHandle;\r
\r
CallbackData->BmmAskSaveOrNot = TRUE;\r
\r
\r
NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
\r
- IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * 19);\r
- if (IfrOptionList == NULL) {\r
- return ;\r
- }\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
for (Index = 0; Index < sizeof (BaudRateList) / sizeof (BaudRateList [0]); Index++) {\r
CheckFlags = 0;\r
CallbackData->BmmFakeNvData.COMBaudRate = NewTerminalContext->BaudRateIndex;\r
}\r
\r
- IfrOptionList[Index].Flags = CheckFlags;\r
- IfrOptionList[Index].StringToken = BaudRateList[Index].StringToken;\r
- IfrOptionList[Index].Value.u8 = Index;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ BaudRateList[Index].StringToken,\r
+ CheckFlags,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ Index\r
+ );\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) COM_BAUD_RATE_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
COM_BAUD_RATE_VAR_OFFSET,\r
STRING_TOKEN (STR_COM_BAUD_RATE),\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- 19,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
+ \r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
for (Index = 0; Index < sizeof (DataBitsList) / sizeof (DataBitsList[0]); Index++) {\r
CheckFlags = 0;\r
CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
}\r
\r
- IfrOptionList[Index].Flags = CheckFlags;\r
- IfrOptionList[Index].StringToken = DataBitsList[Index].StringToken;\r
- IfrOptionList[Index].Value.u8 = Index;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ DataBitsList[Index].StringToken,\r
+ CheckFlags,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ Index\r
+ );\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) COM_DATA_RATE_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
COM_DATA_RATE_VAR_OFFSET,\r
STRING_TOKEN (STR_COM_DATA_BITS),\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- 4,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
for (Index = 0; Index < sizeof (ParityList) / sizeof (ParityList[0]); Index++) {\r
CheckFlags = 0;\r
if (NewTerminalContext->Parity == ParityList[Index].Value) {\r
CallbackData->BmmFakeNvData.COMParity = NewTerminalContext->ParityIndex;\r
}\r
\r
- IfrOptionList[Index].Flags = CheckFlags;\r
- IfrOptionList[Index].StringToken = ParityList[Index].StringToken;\r
- IfrOptionList[Index].Value.u8 = Index;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ ParityList[Index].StringToken,\r
+ CheckFlags,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ Index\r
+ );\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) COM_PARITY_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
COM_PARITY_VAR_OFFSET,\r
STRING_TOKEN (STR_COM_PARITY),\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- 5,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
for (Index = 0; Index < sizeof (StopBitsList) / sizeof (StopBitsList[0]); Index++) {\r
CheckFlags = 0;\r
if (NewTerminalContext->StopBits == StopBitsList[Index].Value) {\r
CallbackData->BmmFakeNvData.COMStopBits = NewTerminalContext->StopBitsIndex;\r
}\r
\r
- IfrOptionList[Index].Flags = CheckFlags;\r
- IfrOptionList[Index].StringToken = StopBitsList[Index].StringToken;\r
- IfrOptionList[Index].Value.u8 = Index;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ StopBitsList[Index].StringToken,\r
+ CheckFlags,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ Index\r
+ );\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) COM_STOP_BITS_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
COM_STOP_BITS_VAR_OFFSET,\r
STRING_TOKEN (STR_COM_STOP_BITS),\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- 3,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
for (Index = 0; Index < 4; Index++) {\r
CheckFlags = 0;\r
if (NewTerminalContext->TerminalType == Index) {\r
CallbackData->BmmFakeNvData.COMTerminalType = NewTerminalContext->TerminalType;\r
}\r
\r
- IfrOptionList[Index].Flags = CheckFlags;\r
- IfrOptionList[Index].StringToken = (EFI_STRING_ID) TerminalType[Index];\r
- IfrOptionList[Index].Value.u8 = Index;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ (EFI_STRING_ID) TerminalType[Index],\r
+ CheckFlags,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ Index\r
+ );\r
}\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) COM_TERMINAL_QUESTION_ID,\r
VARSTORE_ID_BOOT_MAINT,\r
COM_TERMINAL_VAR_OFFSET,\r
STRING_TOKEN (STR_COM_TERMI_TYPE),\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- 4,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
- FreePool (IfrOptionList);\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
}\r
}\r
\r
for (Index = 0; Index < OrderSize / sizeof (UINT16); Index++) {\r
- UnicodeSPrint (StrTemp, 100, L"Boot%04x", OrderBuffer[Index]);\r
+ UnicodeSPrint (StrTemp, sizeof (StrTemp), L"Boot%04x", OrderBuffer[Index]);\r
OptionBuffer = BdsLibGetVariableAndSize (\r
StrTemp,\r
&gEfiGlobalVariableGuid,\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
- IFR_OPTION *IfrOptionList;\r
EFI_STRING_ID StrRef;\r
EFI_STRING_ID StrRefHelp;\r
BBS_TYPE BbsType;\r
UINT8 *LegacyOrder;\r
UINT8 *OldData;\r
UINT8 *DisMap;\r
+ VOID *OptionsOpCodeHandle;\r
\r
OptionMenu = NULL;\r
Key = 0;\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
CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu);\r
\r
- IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * (OptionMenu->MenuNumber + 1));\r
- if (NULL == IfrOptionList) {\r
- return ;\r
- }\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
\r
for (Index = 0; Index < OptionMenu->MenuNumber; Index++) {\r
NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index);\r
- IfrOptionList[Index].Flags = 0;\r
- if (0 == Index) {\r
- IfrOptionList[Index].Flags |= EFI_IFR_OPTION_DEFAULT;\r
- }\r
-\r
- IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken;\r
- IfrOptionList[Index].Value.u8 = (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index;\r
+ //\r
+ // Create OneOf for each legacy device\r
+ //\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ NewMenuEntry->DisplayStringToken,\r
+ 0,\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
- IfrOptionList[Index].Flags = 0;\r
- IfrOptionList[Index].StringToken = STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE);\r
- IfrOptionList[Index].Value.u8 = 0xFF;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE),\r
+ 0,\r
+ EFI_IFR_TYPE_NUM_SIZE_8,\r
+ 0xFF\r
+ );\r
\r
//\r
// Get Device Order from variable\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
// Create the string for oneof tag\r
//\r
UnicodeSPrint (String, sizeof (String), TypeStr, Index);\r
- StrRef = 0;\r
- HiiLibNewString (CallbackData->BmmHiiHandle, &StrRef, String);\r
+ StrRef = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL);\r
\r
UnicodeSPrint (String, sizeof (String), TypeStrHelp, Index);\r
- StrRefHelp = 0;\r
- HiiLibNewString (CallbackData->BmmHiiHandle, &StrRefHelp, String);\r
+ StrRefHelp = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL);\r
\r
- CreateOneOfOpCode (\r
+ HiiCreateOneOfOpCode (\r
+ mStartOpCodeHandle,\r
(EFI_QUESTION_ID) (Key + Index),\r
VARSTORE_ID_BOOT_MAINT,\r
(UINT16) (Key + Index - CONFIG_OPTION_OFFSET),\r
StrRefHelp,\r
EFI_IFR_FLAG_CALLBACK,\r
EFI_IFR_NUMERIC_SIZE_1,\r
- IfrOptionList,\r
- OptionMenu->MenuNumber + 1,\r
- &gUpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
VarDevOrder = *(UINT16 *) ((UINT8 *) DevOrder + sizeof (BBS_TYPE) + sizeof (UINT16) + Index * sizeof (UINT16));\r
\r
CopyMem (OldData, LegacyOrder, 100);\r
\r
- if (IfrOptionList != NULL) {\r
- FreePool (IfrOptionList);\r
- IfrOptionList = NULL;\r
- }\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
\r
UpdatePageEnd (CallbackData);\r
}\r