]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/DeviceMngr/DeviceManager.c
HII Library Class interface refine.
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / DeviceMngr / DeviceManager.c
index 9264734ddc607c04a321e1b8391d028ac9ef5042..920a0506306851ee3ec2fab8d396a04eb7a83511 100644 (file)
@@ -112,8 +112,8 @@ DeviceManagerCallback (
 \r
   This function registers HII packages to HII database.\r
 \r
-  @retval EFI_SUCCESS This function complete successfully.\r
-  @return Other value if failed to register HII packages.\r
+  @retval  EFI_SUCCESS           HII packages for the Device Manager were registered successfully.\r
+  @retval  EFI_OUT_OF_RESOURCES  HII packages for the Device Manager failed to be registered.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -122,7 +122,6 @@ InitializeDeviceManager (
   )\r
 {\r
   EFI_STATUS                  Status;\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
 \r
   //\r
   // Install Device Path Protocol and Config Access protocol to driver handle\r
@@ -140,17 +139,18 @@ InitializeDeviceManager (
   //\r
   // Publish our HII data\r
   //\r
-  PackageList = HiiLibPreparePackageList (2, &mDeviceManagerGuid, DeviceManagerVfrBin, BdsDxeStrings);\r
-  ASSERT (PackageList != NULL);\r
-\r
-  Status = gHiiDatabase->NewPackageList (\r
-                           gHiiDatabase,\r
-                           PackageList,\r
-                           gDeviceManagerPrivate.DriverHandle,\r
-                           &gDeviceManagerPrivate.HiiHandle\r
-                           );\r
-  FreePool (PackageList);\r
-\r
+  gDeviceManagerPrivate.HiiHandle = HiiAddPackages (\r
+                                      &mDeviceManagerGuid,\r
+                                      gDeviceManagerPrivate.DriverHandle,\r
+                                      DeviceManagerVfrBin,\r
+                                      BdsDxeStrings,\r
+                                      NULL\r
+                                      );\r
+  if (gDeviceManagerPrivate.HiiHandle == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+  } else {\r
+    Status = EFI_SUCCESS;\r
+  }\r
   return Status;\r
 }\r
 \r
@@ -174,23 +174,18 @@ CallDeviceManager (
   EFI_STATUS                  Status;\r
   UINTN                       Count;\r
   UINTN                       Index;\r
-  CHAR16                      *String;\r
-  UINTN                       StringLength;\r
+  EFI_STRING                  String;\r
   EFI_HII_UPDATE_DATA         UpdateData[MENU_ITEM_NUM];\r
   EFI_STRING_ID               Token;\r
   EFI_STRING_ID               TokenHelp;\r
   EFI_HII_HANDLE              *HiiHandles;\r
-  UINTN                       HandleBufferLength;\r
-  UINTN                       NumberOfHiiHandles;\r
   EFI_HII_HANDLE              HiiHandle;\r
   UINT16                      FormSetClass;\r
   EFI_STRING_ID               FormSetTitle;\r
   EFI_STRING_ID               FormSetHelp;\r
   EFI_BROWSER_ACTION_REQUEST  ActionRequest;\r
-  EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
 \r
   HiiHandles          = NULL;\r
-  HandleBufferLength  = 0;\r
 \r
   Status        = EFI_SUCCESS;\r
   gCallbackKey  = 0;\r
@@ -221,37 +216,30 @@ CallDeviceManager (
   //\r
   // Get all the Hii handles\r
   //\r
-  Status = HiiLibGetHiiHandles (&HandleBufferLength, &HiiHandles);\r
-  ASSERT_EFI_ERROR (Status && (HiiHandles != NULL));\r
+  HiiHandles = HiiGetHiiHandles (NULL);\r
+  ASSERT (HiiHandles != NULL);\r
 \r
   HiiHandle = gDeviceManagerPrivate.HiiHandle;\r
 \r
-  StringLength  = 0x1000;\r
-  String        = AllocateZeroPool (StringLength);\r
-  ASSERT (String != NULL);\r
-\r
   //\r
   // Search for formset of each class type\r
   //\r
-  NumberOfHiiHandles = HandleBufferLength / sizeof (EFI_HII_HANDLE);\r
-  for (Index = 0; Index < NumberOfHiiHandles; Index++) {\r
+  for (Index = 0; HiiHandles[Index] != NULL; Index++) {\r
     IfrLibExtractClassFromHiiHandle (HiiHandles[Index], &FormSetClass, &FormSetTitle, &FormSetHelp);\r
 \r
     if (FormSetClass == EFI_NON_DEVICE_CLASS) {\r
       continue;\r
     }\r
 \r
-    Token = 0;\r
-    *String = 0;\r
-    StringLength = 0x1000;\r
-    HiiLibGetString (HiiHandles[Index], FormSetTitle, String, &StringLength);\r
-    HiiLibNewString (HiiHandle, &Token, String);\r
+    String = HiiGetString (HiiHandles[Index], FormSetTitle, NULL);\r
+    ASSERT (String != NULL);\r
+    Token = HiiSetString (HiiHandle, 0, String, NULL);\r
+    FreePool (String);\r
 \r
-    TokenHelp = 0;\r
-    *String = 0;\r
-    StringLength = 0x1000;\r
-    HiiLibGetString (HiiHandles[Index], FormSetHelp, String, &StringLength);\r
-    HiiLibNewString (HiiHandle, &TokenHelp, String);\r
+    String = HiiGetString (HiiHandles[Index], FormSetHelp, NULL);\r
+    ASSERT (String != NULL);\r
+    TokenHelp = HiiSetString (HiiHandle, 0, String, NULL);\r
+    FreePool (String);\r
 \r
     for (Count = 0; Count < MENU_ITEM_NUM; Count++) {\r
       if (FormSetClass & mDeviceManagerMenuItemTable[Count].Class) {\r
@@ -266,7 +254,6 @@ CallDeviceManager (
       }\r
     }\r
   }\r
-  FreePool (String);\r
 \r
   for (Index = 0; Index < MENU_ITEM_NUM; Index++) {\r
     //\r
@@ -327,16 +314,20 @@ CallDeviceManager (
   //\r
   // Cleanup dynamic created strings in HII database by reinstall the packagelist\r
   //\r
-  gHiiDatabase->RemovePackageList (gHiiDatabase, HiiHandle);\r
-  PackageList = HiiLibPreparePackageList (2, &mDeviceManagerGuid, DeviceManagerVfrBin, BdsDxeStrings);\r
-  ASSERT (PackageList != NULL);\r
-  Status = gHiiDatabase->NewPackageList (\r
-                           gHiiDatabase,\r
-                           PackageList,\r
-                           gDeviceManagerPrivate.DriverHandle,\r
-                           &gDeviceManagerPrivate.HiiHandle\r
-                           );\r
-  FreePool (PackageList);\r
+  HiiRemovePackages (HiiHandle);\r
+\r
+  gDeviceManagerPrivate.HiiHandle = HiiAddPackages (\r
+                                      &mDeviceManagerGuid,\r
+                                      gDeviceManagerPrivate.DriverHandle,\r
+                                      DeviceManagerVfrBin,\r
+                                      BdsDxeStrings,\r
+                                      NULL\r
+                                      );\r
+  if (gDeviceManagerPrivate.HiiHandle == NULL) {\r
+    Status = EFI_OUT_OF_RESOURCES;\r
+  } else {\r
+    Status = EFI_SUCCESS;\r
+  }\r
 \r
   for (Index = 0; Index < MENU_ITEM_NUM; Index++) {\r
     FreePool (UpdateData[Index].Data);\r