EFI_GUID mBootMaintGuid = BOOT_MAINT_FORMSET_GUID;\r
EFI_GUID mFileExplorerGuid = FILE_EXPLORE_FORMSET_GUID;\r
\r
-CHAR16 mBootMaintStorageName[] = L"BmData";\r
+CHAR16 mBootMaintStorageName[] = L"BmmData";\r
CHAR16 mFileExplorerStorageName[] = L"FeData";\r
\r
/**\r
UINT8 *NewLegacyDev;\r
UINT8 *DisMap;\r
EFI_FORM_ID FormId;\r
- UINTN BufferSize;\r
-\r
+ \r
if ((Value == NULL) || (ActionRequest == NULL)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
//\r
// Retrive uncommitted data from Form Browser\r
//\r
- CurrentFakeNVMap = &Private->BmmFakeNvData;\r
- BufferSize = sizeof (BMM_FAKE_NV_DATA);\r
- Status = GetBrowserData (NULL, NULL, &BufferSize, (UINT8 *) CurrentFakeNVMap);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ CurrentFakeNVMap = (BMM_FAKE_NV_DATA *) HiiGetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA));\r
+ if (CurrentFakeNVMap == NULL) {\r
+ CurrentFakeNVMap = &Private->BmmFakeNvData;\r
}\r
\r
//\r
//\r
// Pass changed uncommitted data back to Form Browser\r
//\r
- BufferSize = sizeof (BMM_FAKE_NV_DATA);\r
- Status = SetBrowserData (NULL, NULL, BufferSize, (UINT8 *) CurrentFakeNVMap, NULL);\r
+ Status = HiiSetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof (BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap, NULL);\r
+\r
+ //\r
+ // Update local settting.\r
+ //\r
+ if ((UINTN) CurrentFakeNVMap != (UINTN) &Private->BmmFakeNvData) {\r
+ CopyMem (&Private->BmmFakeNvData, CurrentFakeNVMap, sizeof (BMM_FAKE_NV_DATA));\r
+ FreePool (CurrentFakeNVMap);\r
+ }\r
\r
return Status;\r
}\r
ASSERT (BmmCallbackInfo->FeHiiHandle != NULL);\r
\r
//\r
- // Allocate space for creation of Buffer\r
+ // Init OpCode Handle and Allocate space for creation of Buffer\r
//\r
- gUpdateData.BufferSize = UPDATE_DATA_SIZE;\r
- gUpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
- if (gUpdateData.Data == NULL) {\r
+ mStartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ if (mStartOpCodeHandle == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ goto Exit;\r
+ }\r
+\r
+ mEndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ if (mEndOpCodeHandle == NULL) {\r
Status = EFI_OUT_OF_RESOURCES;\r
goto Exit;\r
}\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
+ // Create Hii Extend Label OpCode as the end opcode\r
+ //\r
+ mEndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (mEndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ mEndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ mEndLabel->Number = LABEL_END;\r
+\r
InitializeStringDepository ();\r
\r
InitAllMenu (BmmCallbackInfo);\r
Status = EfiLibLocateProtocol (&gEfiLegacyBiosProtocolGuid, (VOID **) &LegacyBios);\r
if (!EFI_ERROR (Status)) {\r
RefreshUpdateData ();\r
+ mStartLabel->Number = FORM_BOOT_LEGACY_DEVICE_ID;\r
\r
//\r
// If LegacyBios Protocol is installed, add 3 tags about legacy boot option\r
// in BootOption form: legacy FD/HD/CD/NET/BEV\r
//\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_SET_FD_ORDER_ID,\r
STRING_TOKEN (STR_FORM_SET_FD_ORDER_TITLE),\r
STRING_TOKEN (STR_FORM_SET_FD_ORDER_TITLE),\r
EFI_IFR_FLAG_CALLBACK,\r
- FORM_SET_FD_ORDER_ID,\r
- &gUpdateData\r
+ FORM_SET_FD_ORDER_ID\r
);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_SET_HD_ORDER_ID,\r
STRING_TOKEN (STR_FORM_SET_HD_ORDER_TITLE),\r
STRING_TOKEN (STR_FORM_SET_HD_ORDER_TITLE),\r
EFI_IFR_FLAG_CALLBACK,\r
- FORM_SET_HD_ORDER_ID,\r
- &gUpdateData\r
+ FORM_SET_HD_ORDER_ID\r
);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_SET_CD_ORDER_ID,\r
STRING_TOKEN (STR_FORM_SET_CD_ORDER_TITLE),\r
STRING_TOKEN (STR_FORM_SET_CD_ORDER_TITLE),\r
EFI_IFR_FLAG_CALLBACK,\r
- FORM_SET_CD_ORDER_ID,\r
- &gUpdateData\r
+ FORM_SET_CD_ORDER_ID\r
);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_SET_NET_ORDER_ID,\r
STRING_TOKEN (STR_FORM_SET_NET_ORDER_TITLE),\r
STRING_TOKEN (STR_FORM_SET_NET_ORDER_TITLE),\r
EFI_IFR_FLAG_CALLBACK,\r
- FORM_SET_NET_ORDER_ID,\r
- &gUpdateData\r
+ FORM_SET_NET_ORDER_ID\r
);\r
\r
- CreateGotoOpCode (\r
+ HiiCreateGotoOpCode (\r
+ mStartOpCodeHandle,\r
FORM_SET_BEV_ORDER_ID,\r
STRING_TOKEN (STR_FORM_SET_BEV_ORDER_TITLE),\r
STRING_TOKEN (STR_FORM_SET_BEV_ORDER_TITLE),\r
EFI_IFR_FLAG_CALLBACK,\r
- FORM_SET_BEV_ORDER_ID,\r
- &gUpdateData\r
+ FORM_SET_BEV_ORDER_ID\r
);\r
-\r
- IfrLibUpdateForm (\r
+ \r
+ HiiUpdateForm (\r
BmmCallbackInfo->BmmHiiHandle,\r
&mBootMaintGuid,\r
FORM_BOOT_SETUP_ID,\r
- FORM_BOOT_LEGACY_DEVICE_ID,\r
- FALSE,\r
- &gUpdateData\r
+ mStartOpCodeHandle, // Label FORM_BOOT_LEGACY_DEVICE_ID\r
+ mEndOpCodeHandle // LABEL_END\r
);\r
}\r
\r
\r
FreeAllMenu ();\r
\r
- FreePool (gUpdateData.Data);\r
- gUpdateData.Data = NULL;\r
-\r
Exit:\r
+ if (mStartOpCodeHandle != NULL) {\r
+ HiiFreeOpCodeHandle (mStartOpCodeHandle);\r
+ }\r
+\r
+ if (mEndOpCodeHandle != NULL) {\r
+ HiiFreeOpCodeHandle (mEndOpCodeHandle);\r
+ }\r
+\r
if (BmmCallbackInfo->FeDriverHandle != NULL) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
BmmCallbackInfo->FeDriverHandle,\r
gFormBrowser2,\r
&CallbackData->BmmHiiHandle,\r
1,\r
- NULL,\r
+ &mBootMaintGuid,\r
0,\r
NULL,\r
&ActionRequest\r
gFormBrowser2,\r
&CallbackData->FeHiiHandle,\r
1,\r
- NULL,\r
+ &mFileExplorerGuid,\r
0,\r
NULL,\r
&ActionRequest\r