]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/BootMaint/BootMaint.c
Update BdsDxe to use new designed HiiLib, remove the referrence to the original IfrSu...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / BootMaint / BootMaint.c
index 57dd2db9c553f366193ce3ed4477be04b36a6f7d..2b175a59044a78a11d81b5f4e049fae7caccccc9 100644 (file)
@@ -82,7 +82,7 @@ EFI_GUID EfiLegacyDevOrderGuid  = EFI_LEGACY_DEV_ORDER_VARIABLE_GUID;
 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
@@ -251,8 +251,7 @@ BootMaintCallback (
   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
@@ -272,11 +271,9 @@ BootMaintCallback (
   //\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
@@ -588,8 +585,15 @@ BootMaintCallback (
   //\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
@@ -954,15 +958,33 @@ InitializeBM (
   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
@@ -986,63 +1008,63 @@ InitializeBM (
   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
@@ -1061,10 +1083,15 @@ InitializeBM (
 \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
@@ -1324,7 +1351,7 @@ FormSetDispatcher (
                              gFormBrowser2,\r
                              &CallbackData->BmmHiiHandle,\r
                              1,\r
-                             NULL,\r
+                             &mBootMaintGuid,\r
                              0,\r
                              NULL,\r
                              &ActionRequest\r
@@ -1346,7 +1373,7 @@ FormSetDispatcher (
                                gFormBrowser2,\r
                                &CallbackData->FeHiiHandle,\r
                                1,\r
-                               NULL,\r
+                               &mFileExplorerGuid,\r
                                0,\r
                                NULL,\r
                                &ActionRequest\r