]> git.proxmox.com Git - mirror_edk2.git/blobdiff - IntelFrameworkModulePkg/Universal/BdsDxe/FrontPage.c
Update BdsDxe to use HiiLib and UefiHiiServicesLib APIs to eliminate the symbol colli...
[mirror_edk2.git] / IntelFrameworkModulePkg / Universal / BdsDxe / FrontPage.c
index ccbd95fc8c8ed4a081ba08382e6dcf93728f1867..37be6ff976849c089e25f6cdd1835b97e5778685 100644 (file)
@@ -21,10 +21,7 @@ EFI_GUID  mFrontPageGuid      = FRONT_PAGE_FORMSET_GUID;
 BOOLEAN   gConnectAllHappened = FALSE;\r
 UINTN     gCallbackKey;\r
 \r
-EFI_HII_DATABASE_PROTOCOL       *gHiiDatabase;\r
-EFI_HII_STRING_PROTOCOL         *gHiiString;\r
 EFI_FORM_BROWSER2_PROTOCOL      *gFormBrowser2;\r
-EFI_HII_CONFIG_ROUTING_PROTOCOL *gHiiConfigRouting;\r
 \r
 FRONT_PAGE_CALLBACK_DATA  gFrontPagePrivate = {\r
   FRONT_PAGE_CALLBACK_DATA_SIGNATURE,\r
@@ -56,7 +53,7 @@ HII_VENDOR_DEVICE_PATH  mFrontPageHiiVendorDevicePath = {
   {\r
     END_DEVICE_PATH_TYPE,\r
     END_ENTIRE_DEVICE_PATH_SUBTYPE,\r
-    { \r
+    {\r
       (UINT8) (END_DEVICE_PATH_LENGTH),\r
       (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)\r
     }\r
@@ -94,6 +91,10 @@ FakeExtractConfig (
   OUT EFI_STRING                             *Results\r
   )\r
 {\r
+  if (Request == NULL || Progress == NULL || Results == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+  *Progress = Request;\r
   return EFI_NOT_FOUND;\r
 }\r
 \r
@@ -121,6 +122,17 @@ FakeRouteConfig (
   OUT EFI_STRING                             *Progress\r
   )\r
 {\r
+  if (Configuration == NULL || Progress == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
+  *Progress = Configuration;\r
+  if (!HiiIsConfigHdrMatch (Configuration, &mBootMaintGuid, mBootMaintStorageName)\r
+      && !HiiIsConfigHdrMatch (Configuration, &mFileExplorerGuid, mFileExplorerStorageName)) {\r
+    return EFI_NOT_FOUND;\r
+  }\r
+\r
+  *Progress = Configuration + StrLen (Configuration);\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -190,7 +202,7 @@ FrontPageCallback (
     //\r
     Lang = AllocatePool (AsciiStrSize (LanguageString));\r
     ASSERT (Lang != NULL);\r
-    \r
+\r
     Index = 0;\r
     LangCode = LanguageString;\r
     while (*LangCode != 0) {\r
@@ -211,7 +223,7 @@ FrontPageCallback (
                                      );\r
       ASSERT (PlatformSupportedLanguages != NULL);\r
     }\r
-    \r
+\r
     //\r
     // Select the best language in platform supported Language.\r
     //\r
@@ -291,7 +303,6 @@ InitializeFrontPage (
   CHAR8                       *BestLanguage;\r
   UINTN                       OptionCount;\r
   CHAR16                      *StringBuffer;\r
-  UINTN                       BufferSize;\r
   EFI_HII_HANDLE              HiiHandle;\r
   VOID                        *OptionsOpCodeHandle;\r
   VOID                        *StartOpCodeHandle;\r
@@ -316,26 +327,11 @@ InitializeFrontPage (
     //\r
     // Locate Hii relative protocols\r
     //\r
-    Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID **) &gHiiDatabase);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
-    Status = gBS->LocateProtocol (&gEfiHiiStringProtocolGuid, NULL, (VOID **) &gHiiString);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
     Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) &gFormBrowser2);\r
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
 \r
-    Status = gBS->LocateProtocol (&gEfiHiiConfigRoutingProtocolGuid, NULL, (VOID **) &gHiiConfigRouting);\r
-    if (EFI_ERROR (Status)) {\r
-      return Status;\r
-    }\r
-\r
     //\r
     // Install Device Path Protocol and Config Access protocol to driver handle\r
     //\r
@@ -422,7 +418,7 @@ InitializeFrontPage (
   OptionCount = 0;\r
   LangCode    = LanguageString;\r
   FirstFlag   = FALSE;\r
-  \r
+\r
   if (gFrontPagePrivate.LanguageToken == NULL) {\r
     while (*LangCode != 0) {\r
       GetNextLanguage (&LangCode, Lang);\r
@@ -439,35 +435,8 @@ InitializeFrontPage (
     GetNextLanguage (&LangCode, Lang);\r
 \r
     if (FirstFlag) {\r
-      //\r
-      // Get Language Name from String Package. The StringId of Printable Language\r
-      // Name is always 1 which is generated by StringGather Tool.\r
-      //\r
-      BufferSize = 0x100;\r
-      StringBuffer = AllocatePool (BufferSize);\r
-      Status = gHiiString->GetString (\r
-                           gHiiString,\r
-                           Lang,\r
-                           HiiHandle,\r
-                           PRINTABLE_LANGUAGE_NAME_STRING_ID,\r
-                           StringBuffer,\r
-                           &BufferSize,\r
-                           NULL\r
-                           );\r
-      if (Status == EFI_BUFFER_TOO_SMALL) {\r
-        FreePool (StringBuffer);\r
-        StringBuffer = AllocatePool (BufferSize);\r
-        Status = gHiiString->GetString (\r
-                             gHiiString,\r
-                             Lang,\r
-                             HiiHandle,\r
-                             PRINTABLE_LANGUAGE_NAME_STRING_ID,\r
-                             StringBuffer,\r
-                             &BufferSize,\r
-                             NULL\r
-                             );\r
-      }\r
-      ASSERT_EFI_ERROR (Status);\r
+      StringBuffer = HiiGetString (HiiHandle, PRINTABLE_LANGUAGE_NAME_STRING_ID, Lang);\r
+      ASSERT_EFI_ERROR (StringBuffer != NULL);\r
 \r
       //\r
       // Save the string Id for each language\r
@@ -605,7 +574,7 @@ GetProducerString (
 }\r
 \r
 /**\r
-  Convert Processor Frequency Data to a string\r
+  Convert Processor Frequency Data to a string.\r
 \r
   @param ProcessorFrequency The frequency data to process\r
   @param String             The string that is created\r
@@ -706,6 +675,9 @@ UpdateFrontPageStrings (
   Record          = NULL;\r
   do {\r
     Status = DataHub->GetNextRecord (DataHub, &MonotonicCount, NULL, &Record);\r
+    if (EFI_ERROR (Status) || Record == NULL) {\r
+      break;\r
+    }\r
     if (Record->DataRecordClass == EFI_DATA_RECORD_CLASS_DATA) {\r
       DataHeader = (EFI_SUBCLASS_TYPE1_HEADER *) (Record + 1);\r
       if (CompareGuid (&Record->DataRecordGuid, &gEfiMiscSubClassGuid) &&\r
@@ -862,7 +834,7 @@ ShowProgress (
   }\r
 \r
   DEBUG ((EFI_D_INFO, "\n\nStart showing progress bar... Press any key to stop it! ...Zzz....\n"));\r
-  \r
+\r
   SetMem (&Foreground, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
   SetMem (&Background, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0x0);\r
   SetMem (&Color, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL), 0xff);\r
@@ -878,7 +850,7 @@ ShowProgress (
   TimeoutRemain = TimeoutDefault;\r
   while (TimeoutRemain != 0) {\r
     DEBUG ((EFI_D_INFO, "Showing progress bar...Remaining %d second!\n", TimeoutRemain));\r
-    \r
+\r
     Status = WaitForSingleEvent (gST->ConIn->WaitForKey, ONE_SECOND);\r
     if (Status != EFI_TIMEOUT) {\r
       break;\r
@@ -946,7 +918,7 @@ PlatformBdsEnterFrontPage (
 {\r
   EFI_STATUS                    Status;\r
 \r
-  PERF_START (0, "BdsTimeOut", "BDS", 0);\r
+  PERF_START (NULL, "BdsTimeOut", "BDS", 0);\r
   //\r
   // Indicate if we need connect all in the platform setup\r
   //\r
@@ -1057,5 +1029,5 @@ Exit:
   // Note: The following lines of code only execute when Auto boot\r
   // takes affect\r
   //\r
-  PERF_END (0, "BdsTimeOut", "BDS", 0);\r
+  PERF_END (NULL, "BdsTimeOut", "BDS", 0);\r
 }\r