X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=IntelFrameworkModulePkg%2FUniversal%2FBdsDxe%2FBootMaint%2FUpdatePage.c;h=5146399dd4b33d67861a6b25b2c924bca92dc4d4;hp=4be68a0e06b4b4e0b54bc2e9e927058655585301;hb=b55f8b0146ab1a0b26909a63bb04ba850b9ba198;hpb=ca835f41761a785faf5f2c156da10527d3a92632 diff --git a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c index 4be68a0e06..5146399dd4 100644 --- a/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c +++ b/IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c @@ -23,7 +23,24 @@ RefreshUpdateData ( VOID ) { - gUpdateData.Offset = 0; + // + // Free current updated date + // + if (mStartOpCodeHandle != NULL) { + HiiFreeOpCodeHandle (mStartOpCodeHandle); + } + + // + // Create new OpCode Handle + // + mStartOpCodeHandle = HiiAllocateOpCodeHandle (); + + // + // Create Hii Extend Label OpCode as the start opcode + // + mStartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (mStartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); + mStartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; + } /** @@ -39,19 +56,20 @@ UpdatePageStart ( ) { RefreshUpdateData (); + mStartLabel->Number = CallbackData->BmmCurrentPageId; if (!(CallbackData->BmmAskSaveOrNot)) { // // Add a "Go back to main page" tag in front of the form when there are no // "Apply changes" and "Discard changes" tags in the end of the form. // - CreateGotoOpCode ( + HiiCreateGotoOpCode ( + mStartOpCodeHandle, FORM_MAIN_ID, STRING_TOKEN (STR_FORM_GOTO_MAIN), STRING_TOKEN (STR_FORM_GOTO_MAIN), 0, - FORM_MAIN_ID, - &gUpdateData + FORM_MAIN_ID ); } @@ -73,43 +91,42 @@ UpdatePageEnd ( // Create the "Apply changes" and "Discard changes" tags. // if (CallbackData->BmmAskSaveOrNot) { - CreateSubTitleOpCode ( + HiiCreateSubTitleOpCode ( + mStartOpCodeHandle, STRING_TOKEN (STR_NULL_STRING), 0, 0, - 0, - &gUpdateData + 0 ); - CreateGotoOpCode ( + HiiCreateGotoOpCode ( + mStartOpCodeHandle, FORM_MAIN_ID, STRING_TOKEN (STR_SAVE_AND_EXIT), STRING_TOKEN (STR_NULL_STRING), EFI_IFR_FLAG_CALLBACK, - KEY_VALUE_SAVE_AND_EXIT, - &gUpdateData + KEY_VALUE_SAVE_AND_EXIT ); } // // Ensure user can return to the main page. // - CreateGotoOpCode ( + HiiCreateGotoOpCode ( + mStartOpCodeHandle, FORM_MAIN_ID, STRING_TOKEN (STR_NO_SAVE_AND_EXIT), STRING_TOKEN (STR_NULL_STRING), EFI_IFR_FLAG_CALLBACK, - KEY_VALUE_NO_SAVE_AND_EXIT, - &gUpdateData + KEY_VALUE_NO_SAVE_AND_EXIT ); - IfrLibUpdateForm ( + HiiUpdateForm ( CallbackData->BmmHiiHandle, &mBootMaintGuid, CallbackData->BmmCurrentPageId, - CallbackData->BmmCurrentPageId, - FALSE, - &gUpdateData + mStartOpCodeHandle, // Label CallbackData->BmmCurrentPageId + mEndOpCodeHandle // LABEL_END ); } @@ -131,13 +148,13 @@ CleanUpPage ( // // Remove all op-codes from dynamic page // - IfrLibUpdateForm ( + mStartLabel->Number = LabelId; + HiiUpdateForm ( CallbackData->BmmHiiHandle, &mBootMaintGuid, LabelId, - LabelId, - FALSE, - &gUpdateData + mStartOpCodeHandle, // Label LabelId + mEndOpCodeHandle // LABEL_END ); } @@ -203,13 +220,13 @@ UpdateConCOMPage ( for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) { NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index); - CreateGotoOpCode ( + HiiCreateGotoOpCode ( + mStartOpCodeHandle, FORM_CON_COM_SETUP_ID, NewMenuEntry->DisplayStringToken, STRING_TOKEN (STR_NULL_STRING), EFI_IFR_FLAG_CALLBACK, - (UINT16) (TERMINAL_OPTION_OFFSET + Index), - &gUpdateData + (UINT16) (TERMINAL_OPTION_OFFSET + Index) ); } @@ -248,7 +265,8 @@ UpdateBootDelPage ( NewLoadContext->Deleted = FALSE; CallbackData->BmmFakeNvData.BootOptionDel[Index] = 0x00; - CreateCheckBoxOpCode ( + HiiCreateCheckBoxOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) (BOOT_OPTION_DEL_QUESTION_ID + Index), VARSTORE_ID_BOOT_MAINT, (UINT16) (BOOT_OPTION_DEL_VAR_OFFSET + Index), @@ -256,7 +274,7 @@ UpdateBootDelPage ( NewMenuEntry->HelpStringToken, 0, 0, - &gUpdateData + NULL ); } @@ -284,13 +302,13 @@ UpdateDrvAddHandlePage ( for (Index = 0; Index < DriverMenu.MenuNumber; Index++) { NewMenuEntry = BOpt_GetMenuEntry (&DriverMenu, Index); - CreateGotoOpCode ( + HiiCreateGotoOpCode ( + mStartOpCodeHandle, FORM_DRV_ADD_HANDLE_DESC_ID, NewMenuEntry->DisplayStringToken, STRING_TOKEN (STR_NULL_STRING), EFI_IFR_FLAG_CALLBACK, - (UINT16) (HANDLE_OPTION_OFFSET + Index), - &gUpdateData + (UINT16) (HANDLE_OPTION_OFFSET + Index) ); } @@ -327,7 +345,8 @@ UpdateDrvDelPage ( NewLoadContext->Deleted = FALSE; CallbackData->BmmFakeNvData.DriverOptionDel[Index] = 0x00; - CreateCheckBoxOpCode ( + HiiCreateCheckBoxOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) (DRIVER_OPTION_DEL_QUESTION_ID + Index), VARSTORE_ID_BOOT_MAINT, (UINT16) (DRIVER_OPTION_DEL_VAR_OFFSET + Index), @@ -335,7 +354,7 @@ UpdateDrvDelPage ( NewMenuEntry->HelpStringToken, 0, 0, - &gUpdateData + NULL ); } @@ -363,15 +382,16 @@ UpdateDriverAddHandleDescPage ( UpdatePageStart (CallbackData); - CreateSubTitleOpCode ( + HiiCreateSubTitleOpCode ( + mStartOpCodeHandle, NewMenuEntry->DisplayStringToken, 0, 0, - 0, - &gUpdateData + 0 ); - CreateStringOpCode ( + HiiCreateStringOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) DRV_ADD_HANDLE_DESC_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, DRV_ADD_HANDLE_DESC_VAR_OFFSET, @@ -381,10 +401,11 @@ UpdateDriverAddHandleDescPage ( 0, 6, 75, - &gUpdateData + NULL ); - CreateCheckBoxOpCode ( + HiiCreateCheckBoxOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) DRV_ADD_RECON_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, DRV_ADD_RECON_VAR_OFFSET, @@ -392,10 +413,11 @@ UpdateDriverAddHandleDescPage ( STRING_TOKEN (STR_LOAD_OPTION_FORCE_RECON), 0, 0, - &gUpdateData + NULL ); - CreateStringOpCode ( + HiiCreateStringOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) DRIVER_ADD_OPTION_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, DRIVER_ADD_OPTION_VAR_OFFSET, @@ -405,7 +427,7 @@ UpdateDriverAddHandleDescPage ( 0, 6, 75, - &gUpdateData + NULL ); UpdatePageEnd (CallbackData); @@ -437,8 +459,8 @@ UpdateConsolePage ( UpdatePageStart (CallbackData); - ASSERT (ConsoleMenu->MenuNumber <= (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (CallbackData->BmmFakeNvData.ConsoleCheck[0]))); - for (Index = 0; Index < ConsoleMenu->MenuNumber; Index++) { + for (Index = 0; ((Index < ConsoleMenu->MenuNumber) && \ + (Index < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))) ; Index++) { NewMenuEntry = BOpt_GetMenuEntry (ConsoleMenu, Index); NewConsoleContext = (BM_CONSOLE_CONTEXT *) NewMenuEntry->VariableContext; CheckFlags = 0; @@ -449,7 +471,8 @@ UpdateConsolePage ( CallbackData->BmmFakeNvData.ConsoleCheck[Index] = FALSE; } - CreateCheckBoxOpCode ( + HiiCreateCheckBoxOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) (CON_DEVICE_QUESTION_ID + Index), VARSTORE_ID_BOOT_MAINT, (UINT16) (CON_DEVICE_VAR_OFFSET + Index), @@ -457,15 +480,17 @@ UpdateConsolePage ( NewMenuEntry->HelpStringToken, 0, CheckFlags, - &gUpdateData + NULL ); } - for (Index2 = 0; Index2 < TerminalMenu.MenuNumber; Index2++) { + for (Index2 = 0; ((Index2 < TerminalMenu.MenuNumber) && \ + (Index2 < (sizeof (CallbackData->BmmFakeNvData.ConsoleCheck) / sizeof (UINT8)))); Index2++) { CheckFlags = 0; NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index2); NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext; + ASSERT (Index < MAX_MENU_NUMBER); if (((NewTerminalContext->IsConIn != 0) && (UpdatePageId == FORM_CON_IN_ID)) || ((NewTerminalContext->IsConOut != 0) && (UpdatePageId == FORM_CON_OUT_ID)) || ((NewTerminalContext->IsStdErr != 0) && (UpdatePageId == FORM_CON_ERR_ID)) @@ -476,7 +501,8 @@ UpdateConsolePage ( CallbackData->BmmFakeNvData.ConsoleCheck[Index] = FALSE; } - CreateCheckBoxOpCode ( + HiiCreateCheckBoxOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) (CON_DEVICE_QUESTION_ID + Index), VARSTORE_ID_BOOT_MAINT, (UINT16) (CON_DEVICE_VAR_OFFSET + Index), @@ -484,7 +510,7 @@ UpdateConsolePage ( NewMenuEntry->HelpStringToken, 0, CheckFlags, - &gUpdateData + NULL ); Index++; @@ -511,7 +537,7 @@ UpdateOrderPage ( { BM_MENU_ENTRY *NewMenuEntry; UINT16 Index; - IFR_OPTION *IfrOptionList; + VOID *OptionsOpCodeHandle; CallbackData->BmmAskSaveOrNot = TRUE; @@ -521,38 +547,51 @@ UpdateOrderPage ( ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, 100); - IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * OptionMenu->MenuNumber); - if (IfrOptionList == NULL) { - return ; - } + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); - ASSERT (OptionMenu->MenuNumber <= (sizeof (IfrOptionList) / sizeof (IfrOptionList[0]))); - for (Index = 0; Index < OptionMenu->MenuNumber; Index++) { + for ( + Index = 0; + ( + (Index < OptionMenu->MenuNumber) && + (Index < + ( + sizeof (CallbackData->BmmFakeNvData.OptionOrder) / + sizeof (UINT8) + ) + ) + ); + Index++ + ) { NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index); - IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken; - IfrOptionList[Index].Value.u8 = (UINT8) (NewMenuEntry->OptionNumber + 1); - IfrOptionList[Index].Flags = 0; - CallbackData->BmmFakeNvData.OptionOrder[Index] = IfrOptionList[Index].Value.u8; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + NewMenuEntry->DisplayStringToken, + 0, + EFI_IFR_NUMERIC_SIZE_1, + (UINT8) (NewMenuEntry->OptionNumber + 1) + ); + CallbackData->BmmFakeNvData.OptionOrder[Index] = (UINT8) (NewMenuEntry->OptionNumber + 1); } if (OptionMenu->MenuNumber > 0) { - CreateOrderedListOpCode ( - (EFI_QUESTION_ID) OPTION_ORDER_QUESTION_ID, - VARSTORE_ID_BOOT_MAINT, - OPTION_ORDER_VAR_OFFSET, - STRING_TOKEN (STR_CHANGE_ORDER), - STRING_TOKEN (STR_CHANGE_ORDER), - 0, - 0, - EFI_IFR_NUMERIC_SIZE_1, - 100, - IfrOptionList, - OptionMenu->MenuNumber, - &gUpdateData + HiiCreateOrderedListOpCode ( + mStartOpCodeHandle, // Container for dynamic created opcodes + (EFI_QUESTION_ID) OPTION_ORDER_QUESTION_ID, // Question ID + VARSTORE_ID_BOOT_MAINT, // VarStore ID + OPTION_ORDER_VAR_OFFSET, // Offset in Buffer Storage + STRING_TOKEN (STR_CHANGE_ORDER), // Question prompt text + STRING_TOKEN (STR_CHANGE_ORDER), // Question help text + 0, // Question flag + 0, // Ordered list flag, e.g. EFI_IFR_UNIQUE_SET + EFI_IFR_NUMERIC_SIZE_1, // Data type of Question value + 100, // Maximum container + OptionsOpCodeHandle, // Option Opcode list + NULL // Default Opcode is NULL ); } - FreePool (IfrOptionList); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); UpdatePageEnd (CallbackData); @@ -577,11 +616,10 @@ UpdateBootNextPage ( { BM_MENU_ENTRY *NewMenuEntry; BM_LOAD_CONTEXT *NewLoadContext; - IFR_OPTION *IfrOptionList; UINTN NumberOfOptions; UINT16 Index; + VOID *OptionsOpCodeHandle; - IfrOptionList = NULL; NumberOfOptions = BootOptionMenu.MenuNumber; CallbackData->BmmAskSaveOrNot = TRUE; @@ -589,34 +627,55 @@ UpdateBootNextPage ( CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu); if (NumberOfOptions > 0) { - IfrOptionList = AllocateZeroPool ((NumberOfOptions + 1) * sizeof (IFR_OPTION)); - - ASSERT (IfrOptionList); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); CallbackData->BmmFakeNvData.BootNext = (UINT16) (BootOptionMenu.MenuNumber); for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) { NewMenuEntry = BOpt_GetMenuEntry (&BootOptionMenu, Index); NewLoadContext = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext; + if (NewLoadContext->IsBootNext) { - IfrOptionList[Index].Flags = EFI_IFR_OPTION_DEFAULT; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + NewMenuEntry->DisplayStringToken, + EFI_IFR_OPTION_DEFAULT, + EFI_IFR_NUMERIC_SIZE_2, + Index + ); CallbackData->BmmFakeNvData.BootNext = Index; } else { - IfrOptionList[Index].Flags = 0; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + NewMenuEntry->DisplayStringToken, + 0, + EFI_IFR_NUMERIC_SIZE_2, + Index + ); } - - IfrOptionList[Index].Value.u16 = Index; - IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken; } - IfrOptionList[Index].Value.u16 = Index; - IfrOptionList[Index].StringToken = STRING_TOKEN (STR_NONE); - IfrOptionList[Index].Flags = 0; if (CallbackData->BmmFakeNvData.BootNext == Index) { - IfrOptionList[Index].Flags |= EFI_IFR_OPTION_DEFAULT; - } + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + STRING_TOKEN (STR_NONE), + EFI_IFR_OPTION_DEFAULT, + EFI_IFR_NUMERIC_SIZE_2, + Index + ); + } else { + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + STRING_TOKEN (STR_NONE), + 0, + EFI_IFR_NUMERIC_SIZE_2, + Index + ); + } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) BOOT_NEXT_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, BOOT_NEXT_VAR_OFFSET, @@ -624,12 +683,11 @@ UpdateBootNextPage ( STRING_TOKEN (STR_BOOT_NEXT_HELP), 0, EFI_IFR_NUMERIC_SIZE_2, - IfrOptionList, - (UINTN) (NumberOfOptions + 1), - &gUpdateData + OptionsOpCodeHandle, + NULL ); - FreePool (IfrOptionList); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); } UpdatePageEnd (CallbackData); @@ -647,14 +705,20 @@ UpdateTimeOutPage ( ) { UINT16 BootTimeOut; + VOID *DefaultOpCodeHandle; CallbackData->BmmAskSaveOrNot = TRUE; UpdatePageStart (CallbackData); - BootTimeOut = BdsLibGetTimeout (); + BootTimeOut = PcdGet16 (PcdPlatformBootTimeOut); - CreateNumericOpCode ( + DefaultOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (DefaultOpCodeHandle != NULL); + HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_NUMERIC_SIZE_2, BootTimeOut); + + HiiCreateNumericOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) BOOT_TIME_OUT_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, BOOT_TIME_OUT_VAR_OFFSET, @@ -665,9 +729,10 @@ UpdateTimeOutPage ( 0, 65535, 0, - BootTimeOut, - &gUpdateData + DefaultOpCodeHandle ); + + HiiFreeOpCodeHandle (DefaultOpCodeHandle); CallbackData->BmmFakeNvData.BootTimeOut = BootTimeOut; @@ -689,14 +754,13 @@ UpdateConModePage ( UINTN Index; UINTN Col; UINTN Row; - CHAR16 RowString[50]; CHAR16 ModeString[50]; - UINTN TempStringLen; + CHAR16 *PStr; UINTN MaxMode; UINTN ValidMode; EFI_STRING_ID *ModeToken; - IFR_OPTION *IfrOptionList; EFI_STATUS Status; + VOID *OptionsOpCodeHandle; EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut; ConOut = gST->ConOut; @@ -723,8 +787,8 @@ UpdateConModePage ( return; } - IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * ValidMode); - ASSERT(IfrOptionList != NULL); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); ModeToken = AllocateZeroPool (sizeof (EFI_STRING_ID) * ValidMode); ASSERT(ModeToken != NULL); @@ -746,26 +810,36 @@ UpdateConModePage ( // // Build mode string Column x Row // - TempStringLen = UnicodeValueToString (ModeString, 0, Col, 0); - ASSERT ((TempStringLen + StrLen (L" x ")) < (sizeof (ModeString) / sizeof (ModeString[0]))); - StrCat (ModeString, L" x "); - TempStringLen = UnicodeValueToString (RowString, 0, Row, 0); - ASSERT ((StrLen (ModeString) + TempStringLen) < (sizeof (ModeString) / sizeof (ModeString[0]))); - StrCat (ModeString, RowString); + UnicodeValueToString (ModeString, 0, Col, 0); + PStr = &ModeString[0]; + StrnCat (PStr, L" x ", StrLen(L" x ") + 1); + PStr = PStr + StrLen (PStr); + UnicodeValueToString (PStr , 0, Row, 0); - HiiLibNewString (CallbackData->BmmHiiHandle, &ModeToken[Index], ModeString); + ModeToken[Index] = HiiSetString (CallbackData->BmmHiiHandle, 0, ModeString, NULL); - IfrOptionList[Index].StringToken = ModeToken[Index]; - IfrOptionList[Index].Value.u16 = (UINT16) Mode; if (Mode == CallbackData->BmmFakeNvData.ConsoleOutMode) { - IfrOptionList[Index].Flags = EFI_IFR_OPTION_DEFAULT; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + ModeToken[Index], + EFI_IFR_OPTION_DEFAULT, + EFI_IFR_NUMERIC_SIZE_2, + (UINT16) Mode + ); } else { - IfrOptionList[Index].Flags = 0; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + ModeToken[Index], + 0, + EFI_IFR_NUMERIC_SIZE_2, + (UINT16) Mode + ); } Index++; } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) CON_MODE_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, CON_MODE_VAR_OFFSET, @@ -773,11 +847,11 @@ UpdateConModePage ( STRING_TOKEN (STR_CON_MODE_SETUP), EFI_IFR_FLAG_RESET_REQUIRED, EFI_IFR_NUMERIC_SIZE_2, - IfrOptionList, - ValidMode, - &gUpdateData + OptionsOpCodeHandle, + NULL ); - FreePool (IfrOptionList); + + HiiFreeOpCodeHandle (OptionsOpCodeHandle); FreePool (ModeToken); UpdatePageEnd (CallbackData); @@ -797,9 +871,9 @@ UpdateTerminalPage ( { UINT8 Index; UINT8 CheckFlags; - IFR_OPTION *IfrOptionList; BM_MENU_ENTRY *NewMenuEntry; BM_TERMINAL_CONTEXT *NewTerminalContext; + VOID *OptionsOpCodeHandle; CallbackData->BmmAskSaveOrNot = TRUE; @@ -816,10 +890,8 @@ UpdateTerminalPage ( NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext; - IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * 19); - if (IfrOptionList == NULL) { - return ; - } + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); for (Index = 0; Index < sizeof (BaudRateList) / sizeof (BaudRateList [0]); Index++) { CheckFlags = 0; @@ -829,12 +901,17 @@ UpdateTerminalPage ( CallbackData->BmmFakeNvData.COMBaudRate = NewTerminalContext->BaudRateIndex; } - IfrOptionList[Index].Flags = CheckFlags; - IfrOptionList[Index].StringToken = BaudRateList[Index].StringToken; - IfrOptionList[Index].Value.u8 = Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + BaudRateList[Index].StringToken, + CheckFlags, + EFI_IFR_NUMERIC_SIZE_1, + Index + ); } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) COM_BAUD_RATE_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, COM_BAUD_RATE_VAR_OFFSET, @@ -842,10 +919,13 @@ UpdateTerminalPage ( STRING_TOKEN (STR_COM_BAUD_RATE), 0, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - 19, - &gUpdateData + OptionsOpCodeHandle, + NULL ); + + HiiFreeOpCodeHandle (OptionsOpCodeHandle); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); for (Index = 0; Index < sizeof (DataBitsList) / sizeof (DataBitsList[0]); Index++) { CheckFlags = 0; @@ -856,12 +936,17 @@ UpdateTerminalPage ( CheckFlags |= EFI_IFR_OPTION_DEFAULT; } - IfrOptionList[Index].Flags = CheckFlags; - IfrOptionList[Index].StringToken = DataBitsList[Index].StringToken; - IfrOptionList[Index].Value.u8 = Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + DataBitsList[Index].StringToken, + CheckFlags, + EFI_IFR_NUMERIC_SIZE_1, + Index + ); } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) COM_DATA_RATE_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, COM_DATA_RATE_VAR_OFFSET, @@ -869,11 +954,14 @@ UpdateTerminalPage ( STRING_TOKEN (STR_COM_DATA_BITS), 0, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - 4, - &gUpdateData + OptionsOpCodeHandle, + NULL ); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); + for (Index = 0; Index < sizeof (ParityList) / sizeof (ParityList[0]); Index++) { CheckFlags = 0; if (NewTerminalContext->Parity == ParityList[Index].Value) { @@ -882,12 +970,17 @@ UpdateTerminalPage ( CallbackData->BmmFakeNvData.COMParity = NewTerminalContext->ParityIndex; } - IfrOptionList[Index].Flags = CheckFlags; - IfrOptionList[Index].StringToken = ParityList[Index].StringToken; - IfrOptionList[Index].Value.u8 = Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + ParityList[Index].StringToken, + CheckFlags, + EFI_IFR_NUMERIC_SIZE_1, + Index + ); } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) COM_PARITY_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, COM_PARITY_VAR_OFFSET, @@ -895,11 +988,14 @@ UpdateTerminalPage ( STRING_TOKEN (STR_COM_PARITY), 0, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - 5, - &gUpdateData + OptionsOpCodeHandle, + NULL ); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); + for (Index = 0; Index < sizeof (StopBitsList) / sizeof (StopBitsList[0]); Index++) { CheckFlags = 0; if (NewTerminalContext->StopBits == StopBitsList[Index].Value) { @@ -908,12 +1004,17 @@ UpdateTerminalPage ( CallbackData->BmmFakeNvData.COMStopBits = NewTerminalContext->StopBitsIndex; } - IfrOptionList[Index].Flags = CheckFlags; - IfrOptionList[Index].StringToken = StopBitsList[Index].StringToken; - IfrOptionList[Index].Value.u8 = Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + StopBitsList[Index].StringToken, + CheckFlags, + EFI_IFR_NUMERIC_SIZE_1, + Index + ); } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) COM_STOP_BITS_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, COM_STOP_BITS_VAR_OFFSET, @@ -921,11 +1022,14 @@ UpdateTerminalPage ( STRING_TOKEN (STR_COM_STOP_BITS), 0, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - 3, - &gUpdateData + OptionsOpCodeHandle, + NULL ); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); + for (Index = 0; Index < 4; Index++) { CheckFlags = 0; if (NewTerminalContext->TerminalType == Index) { @@ -933,12 +1037,17 @@ UpdateTerminalPage ( CallbackData->BmmFakeNvData.COMTerminalType = NewTerminalContext->TerminalType; } - IfrOptionList[Index].Flags = CheckFlags; - IfrOptionList[Index].StringToken = (EFI_STRING_ID) TerminalType[Index]; - IfrOptionList[Index].Value.u8 = Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + (EFI_STRING_ID) TerminalType[Index], + CheckFlags, + EFI_IFR_NUMERIC_SIZE_1, + Index + ); } - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) COM_TERMINAL_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, COM_TERMINAL_VAR_OFFSET, @@ -946,12 +1055,11 @@ UpdateTerminalPage ( STRING_TOKEN (STR_COM_TERMI_TYPE), 0, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - 4, - &gUpdateData + OptionsOpCodeHandle, + NULL ); - FreePool (IfrOptionList); + HiiFreeOpCodeHandle (OptionsOpCodeHandle); UpdatePageEnd (CallbackData); } @@ -1101,7 +1209,6 @@ UpdateSetLegacyDeviceOrderPage ( BM_LEGACY_DEV_ORDER_CONTEXT *DevOrder; BM_MENU_OPTION *OptionMenu; BM_MENU_ENTRY *NewMenuEntry; - IFR_OPTION *IfrOptionList; EFI_STRING_ID StrRef; EFI_STRING_ID StrRefHelp; BBS_TYPE BbsType; @@ -1118,6 +1225,7 @@ UpdateSetLegacyDeviceOrderPage ( UINT8 *LegacyOrder; UINT8 *OldData; UINT8 *DisMap; + VOID *OptionsOpCodeHandle; OptionMenu = NULL; Key = 0; @@ -1197,27 +1305,41 @@ UpdateSetLegacyDeviceOrderPage ( CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu); - IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * (OptionMenu->MenuNumber + 1)); - if (NULL == IfrOptionList) { - return ; - } + OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (OptionsOpCodeHandle != NULL); for (Index = 0; Index < OptionMenu->MenuNumber; Index++) { NewMenuEntry = BOpt_GetMenuEntry (OptionMenu, Index); - IfrOptionList[Index].Flags = 0; - if (0 == Index) { - IfrOptionList[Index].Flags |= EFI_IFR_OPTION_DEFAULT; + + if (Index == 0) { + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + NewMenuEntry->DisplayStringToken, + EFI_IFR_OPTION_DEFAULT, + EFI_IFR_NUMERIC_SIZE_1, + (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index + ); } - IfrOptionList[Index].StringToken = NewMenuEntry->DisplayStringToken; - IfrOptionList[Index].Value.u8 = (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + NewMenuEntry->DisplayStringToken, + 0, + EFI_IFR_NUMERIC_SIZE_1, + (UINT8) ((BM_LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->Index + ); } + // // for item "Disabled" // - IfrOptionList[Index].Flags = 0; - IfrOptionList[Index].StringToken = STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE); - IfrOptionList[Index].Value.u8 = 0xFF; + HiiCreateOneOfOptionOpCode ( + OptionsOpCodeHandle, + STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE), + 0, + EFI_IFR_NUMERIC_SIZE_1, + 0xFF + ); // // Get Device Order from variable @@ -1247,14 +1369,13 @@ UpdateSetLegacyDeviceOrderPage ( // Create the string for oneof tag // UnicodeSPrint (String, sizeof (String), TypeStr, Index); - StrRef = 0; - HiiLibNewString (CallbackData->BmmHiiHandle, &StrRef, String); + StrRef = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL); UnicodeSPrint (String, sizeof (String), TypeStrHelp, Index); - StrRefHelp = 0; - HiiLibNewString (CallbackData->BmmHiiHandle, &StrRefHelp, String); + StrRefHelp = HiiSetString (CallbackData->BmmHiiHandle, 0, String, NULL); - CreateOneOfOpCode ( + HiiCreateOneOfOpCode ( + mStartOpCodeHandle, (EFI_QUESTION_ID) (Key + Index), VARSTORE_ID_BOOT_MAINT, (UINT16) (Key + Index - CONFIG_OPTION_OFFSET), @@ -1262,9 +1383,8 @@ UpdateSetLegacyDeviceOrderPage ( StrRefHelp, EFI_IFR_FLAG_CALLBACK, EFI_IFR_NUMERIC_SIZE_1, - IfrOptionList, - OptionMenu->MenuNumber + 1, - &gUpdateData + OptionsOpCodeHandle, + NULL ); VarDevOrder = *(UINT16 *) ((UINT8 *) DevOrder + sizeof (BBS_TYPE) + sizeof (UINT16) + Index * sizeof (UINT16)); @@ -1282,10 +1402,7 @@ UpdateSetLegacyDeviceOrderPage ( CopyMem (OldData, LegacyOrder, 100); - if (IfrOptionList != NULL) { - FreePool (IfrOptionList); - IfrOptionList = NULL; - } + HiiFreeOpCodeHandle (OptionsOpCodeHandle); UpdatePageEnd (CallbackData); }