/** Create the dynamic page to allow user to set the "TimeOut" value. @param CallbackData The BMM context data. **/ VOID UpdateTimeOutPage ( IN BMM_CALLBACK_DATA *CallbackData ) { VOID *DefaultOpCodeHandle; CallbackData->BmmAskSaveOrNot = TRUE; UpdatePageStart (CallbackData); DefaultOpCodeHandle = HiiAllocateOpCodeHandle (); ASSERT (DefaultOpCodeHandle != NULL); HiiCreateDefaultOpCode (DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, CallbackData->BmmFakeNvData.BootTimeOut); HiiCreateNumericOpCode ( mStartOpCodeHandle, (EFI_QUESTION_ID) BOOT_TIME_OUT_QUESTION_ID, VARSTORE_ID_BOOT_MAINT, BOOT_TIME_OUT_VAR_OFFSET, STRING_TOKEN (STR_NUM_AUTO_BOOT), STRING_TOKEN (STR_HLP_AUTO_BOOT), 0, EFI_IFR_NUMERIC_SIZE_2 | EFI_IFR_DISPLAY_UINT_DEC, 0, 65535, 0, DefaultOpCodeHandle ); HiiFreeOpCodeHandle (DefaultOpCodeHandle); UpdatePageEnd (CallbackData); }
/** Create a dynamic page so that Legacy Device boot order can be set for specified device type. @param UpdatePageId The form ID. It also spefies the legacy device type. **/ VOID UpdateLegacyDeviceOrderPage ( IN UINT16 UpdatePageId ) { LEGACY_MENU_OPTION *OptionMenu; LEGACY_MENU_ENTRY *NewMenuEntry; EFI_STRING_ID StrRef; EFI_STRING_ID StrRefHelp; BBS_TYPE BbsType; UINT16 *Default; UINT16 Index; UINT16 Key; CHAR16 String[100]; CHAR16 *TypeStr; CHAR16 *TypeStrHelp; CHAR16 *FormTitle; VOID *OptionsOpCodeHandle; VOID *DefaultOpCodeHandle; Key = 0; StrRef = 0; StrRefHelp = 0; OptionMenu = NULL; TypeStr = NULL; TypeStrHelp = NULL; Default = NULL; BbsType = BBS_FLOPPY; RefreshLegacyUpdateData(); // // Create oneof option list // switch (UpdatePageId) { case FORM_FLOPPY_BOOT_ID: OptionMenu = (LEGACY_MENU_OPTION *) &LegacyFDMenu; Key = (UINT16) LEGACY_FD_QUESTION_ID; TypeStr = STR_FLOPPY; TypeStrHelp = STR_FLOPPY_HELP; FormTitle = STR_FLOPPY_TITLE; BbsType = BBS_FLOPPY; Default = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyFD; break; case FORM_HARDDISK_BOOT_ID: OptionMenu = (LEGACY_MENU_OPTION *) &LegacyHDMenu; Key = (UINT16) LEGACY_HD_QUESTION_ID; TypeStr = STR_HARDDISK; TypeStrHelp = STR_HARDDISK_HELP; FormTitle = STR_HARDDISK_TITLE; BbsType = BBS_HARDDISK; Default = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyHD; break; case FORM_CDROM_BOOT_ID: OptionMenu = (LEGACY_MENU_OPTION *) &LegacyCDMenu; Key = (UINT16) LEGACY_CD_QUESTION_ID; TypeStr = STR_CDROM; TypeStrHelp = STR_CDROM_HELP; FormTitle = STR_CDROM_TITLE; BbsType = BBS_CDROM; Default = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyCD; break; case FORM_NET_BOOT_ID: OptionMenu = (LEGACY_MENU_OPTION *) &LegacyNETMenu; Key = (UINT16) LEGACY_NET_QUESTION_ID; TypeStr = STR_NET; TypeStrHelp = STR_NET_HELP; FormTitle = STR_NET_TITLE; BbsType = BBS_EMBED_NETWORK; Default = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyNET; break; case FORM_BEV_BOOT_ID: OptionMenu = (LEGACY_MENU_OPTION *) &LegacyBEVMenu; Key = (UINT16) LEGACY_BEV_QUESTION_ID; TypeStr = STR_BEV; TypeStrHelp = STR_BEV_HELP; FormTitle = STR_BEV_TITLE; BbsType = BBS_BEV_DEVICE; Default = mLegacyBootOptionPrivate->MaintainMapData->CurrentNvData.LegacyBEV; break; default: DEBUG ((EFI_D_ERROR, "Invalid command ID for updating page!\n")); return; } HiiSetString (mLegacyBootOptionPrivate->HiiHandle, STRING_TOKEN(STR_ORDER_CHANGE_PROMPT), FormTitle, NULL); CreateLegacyMenuStringToken (mLegacyBootOptionPrivate->HiiHandle, OptionMenu); OptionsOpCodeHandle = HiiAllocateOpCodeHandle (); ASSERT (OptionsOpCodeHandle != NULL); for (Index = 0; Index < OptionMenu->MenuNumber; Index++) { NewMenuEntry = GetMenuEntry (OptionMenu, Index); // // Create OneOf for each legacy device // HiiCreateOneOfOptionOpCode ( OptionsOpCodeHandle, NewMenuEntry->DisplayStringToken, 0, EFI_IFR_TYPE_NUM_SIZE_16, ((LEGACY_DEVICE_CONTEXT *) NewMenuEntry->VariableContext)->BbsIndex ); } // // Create OneOf for item "Disabled" // HiiCreateOneOfOptionOpCode ( OptionsOpCodeHandle, STRING_TOKEN (STR_DISABLE_LEGACY_DEVICE), 0, EFI_IFR_TYPE_NUM_SIZE_16, 0xFF ); // // Create oneof tag here for FD/HD/CD #1 #2 // for (Index = 0; Index < OptionMenu->MenuNumber; Index++) { DefaultOpCodeHandle = HiiAllocateOpCodeHandle (); ASSERT (DefaultOpCodeHandle != NULL); HiiCreateDefaultOpCode ( DefaultOpCodeHandle, EFI_HII_DEFAULT_CLASS_STANDARD, EFI_IFR_TYPE_NUM_SIZE_16, *Default++ ); // // Create the string for oneof tag // UnicodeSPrint (String, sizeof (String), TypeStr, Index); StrRef = HiiSetString (mLegacyBootOptionPrivate->HiiHandle, 0, String, NULL); UnicodeSPrint (String, sizeof (String), TypeStrHelp, Index); StrRefHelp = HiiSetString (mLegacyBootOptionPrivate->HiiHandle, 0, String, NULL); HiiCreateOneOfOpCode ( mLegacyStartOpCodeHandle, (EFI_QUESTION_ID) (Key + Index), VARSTORE_ID_LEGACY_BOOT, (UINT16) (Key + Index * 2 - CONFIG_OPTION_OFFSET), StrRef, StrRefHelp, EFI_IFR_FLAG_CALLBACK, EFI_IFR_NUMERIC_SIZE_2, OptionsOpCodeHandle, DefaultOpCodeHandle //NULL // ); HiiFreeOpCodeHandle (DefaultOpCodeHandle); } HiiUpdateForm ( mLegacyBootOptionPrivate->HiiHandle, &mLegacyBootOptionGuid, LEGACY_ORDER_CHANGE_FORM_ID, mLegacyStartOpCodeHandle, mLegacyEndOpCodeHandle ); HiiFreeOpCodeHandle (OptionsOpCodeHandle); }