]> git.proxmox.com Git - mirror_edk2.git/blobdiff - Nt32Pkg/PlatformBdsDxe/Generic/FrontPage.c
UEFI HII: Merge UEFI HII support changes from branch.
[mirror_edk2.git] / Nt32Pkg / PlatformBdsDxe / Generic / FrontPage.c
index 4b4caf2460a64c448921cbb957cc05003e1c2741..05e9ca23bddf9a7b9b9da292527f7325bbfbbe20 100644 (file)
@@ -18,38 +18,31 @@ Abstract:
   FrontPage routines to handle the callbacks and browser calls\r
 \r
 --*/\r
-\r
-//\r
-// Include common header file for this module.\r
-//\r
-#include "CommonHeader.h"\r
-\r
 #include "Bds.h"\r
 #include "BdsPlatform.h"\r
 #include "FrontPage.h"\r
-#include "String.h"\r
+#include "BdsString.h"\r
 \r
 EFI_GUID                    mProcessorSubClass  = EFI_PROCESSOR_SUBCLASS_GUID;\r
 EFI_GUID                    mMemorySubClass     = EFI_MEMORY_SUBCLASS_GUID;\r
 EFI_GUID                    mMiscSubClass       = EFI_MISC_SUBCLASS_GUID;\r
 \r
 UINT16                      mLastSelection;\r
-EFI_HII_HANDLE              gFrontPageHandle;\r
+FRAMEWORK_EFI_HII_HANDLE    gFrontPageHandle;\r
 EFI_HANDLE                  FrontPageCallbackHandle;\r
 EFI_FORM_CALLBACK_PROTOCOL  FrontPageCallback;\r
 EFI_FORM_BROWSER_PROTOCOL   *gBrowser;\r
 UINTN                       gCallbackKey;\r
 BOOLEAN                     gConnectAllHappened = FALSE;\r
 \r
-extern EFI_HII_HANDLE       gFrontPageHandle;\r
-extern EFI_GUID             gBdsStringPackGuid;\r
+extern FRAMEWORK_EFI_HII_HANDLE        gFrontPageHandle;\r
 \r
 EFI_STATUS\r
 EFIAPI\r
 FrontPageCallbackRoutine (\r
   IN EFI_FORM_CALLBACK_PROTOCOL       *This,\r
   IN UINT16                           KeyValue,\r
-  IN EFI_IFR_DATA_ARRAY               *DataArray,\r
+  IN FRAMEWORK_EFI_IFR_DATA_ARRAY               *DataArray,\r
   OUT EFI_HII_CALLBACK_PACKET         **Packet\r
   )\r
 /*++\r
@@ -72,13 +65,13 @@ Returns:
 \r
 --*/\r
 {\r
-  CHAR16        *LanguageString;\r
-  UINTN         Count;\r
-  CHAR16        UnicodeLang[3];\r
-  CHAR8         Lang[3];\r
-  EFI_STATUS    Status;\r
-  UINTN         Index;\r
-  CHAR16        *TmpStr;\r
+  CHAR16                        *LanguageString;\r
+  UINTN                         Count;\r
+  CHAR16                        UnicodeLang[3];\r
+  CHAR8                         Lang[3];\r
+  EFI_STATUS                    Status;\r
+  UINTN                         Index;\r
+  CHAR16                        *TmpStr;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Foreground;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Background;\r
   EFI_GRAPHICS_OUTPUT_BLT_PIXEL Color;\r
@@ -106,13 +99,13 @@ Returns:
     //\r
     // Collect the languages from what our current Language support is based on our VFR\r
     //\r
-    Hii->GetPrimaryLanguages (Hii, gFrontPageHandle, &LanguageString);\r
+    gHii->GetPrimaryLanguages (gHii, gFrontPageHandle, &LanguageString);\r
 \r
     //\r
     // Based on the DataArray->Data->Data value, we can determine\r
     // which language was chosen by the user\r
     //\r
-    for (Index = 0; Count != (UINTN) (((EFI_IFR_DATA_ENTRY *) (DataArray + 1))->Data); Index += 3) {\r
+    for (Index = 0; Count != (UINTN) (((FRAMEWORK_EFI_IFR_DATA_ENTRY *) (DataArray + 1))->Data); Index += 3) {\r
       Count++;\r
     }\r
     //\r
@@ -181,7 +174,7 @@ Returns:
         Background,\r
         TmpStr,\r
         Color,\r
-        (UINTN) (((EFI_IFR_DATA_ENTRY *) (DataArray+1))->Data),\r
+        (UINTN) (((FRAMEWORK_EFI_IFR_DATA_ENTRY *) (DataArray+1))->Data),\r
         0\r
         );\r
       FreePool (TmpStr);\r
@@ -250,14 +243,14 @@ Returns:
   //\r
   TempBuffer    = (UINT8 *) FrontPageVfrBin;\r
   TempBuffer    = TempBuffer + sizeof (EFI_HII_PACK_HEADER);\r
-  TempBuffer    = (UINT8 *) &((EFI_IFR_FORM_SET *) TempBuffer)->NvDataSize;\r
+  TempBuffer    = (UINT8 *) &((FRAMEWORK_EFI_IFR_FORM_SET *) TempBuffer)->NvDataSize;\r
   *TempBuffer   = 1;\r
 \r
   gCallbackKey  = 0;\r
 \r
-  PackageList   = PreparePackages (1, &gBdsStringPackGuid, FrontPageVfrBin);\r
+  PackageList   = PreparePackages (1, &gEfiCallerIdGuid, FrontPageVfrBin);\r
 \r
-  Status        = Hii->NewPack (Hii, PackageList, &gFrontPageHandle);\r
+  Status        = gHii->NewPack (gHii, PackageList, &gFrontPageHandle);\r
 \r
   FreePool (PackageList);\r
 \r
@@ -335,21 +328,10 @@ ReInitStrings:
   //\r
   // Collect the languages from what our current Language support is based on our VFR\r
   //\r
-  Hii->GetPrimaryLanguages (Hii, gFrontPageHandle, &LanguageString);\r
+  gHii->GetPrimaryLanguages (gHii, gFrontPageHandle, &LanguageString);\r
 \r
   OptionCount = 0;\r
 \r
-  //\r
-  // Try for a 512 byte Buffer\r
-  //\r
-  BufferSize = 0x200;\r
-\r
-  //\r
-  // Allocate memory for our Form binary\r
-  //\r
-  StringBuffer = AllocateZeroPool (BufferSize);\r
-  ASSERT (StringBuffer != NULL);\r
-\r
   for (Index = 0; LanguageString[Index] != 0; Index += 3) {\r
     Token = 0;\r
     CopyMem (Lang, &LanguageString[Index], 6);\r
@@ -359,20 +341,26 @@ ReInitStrings:
       mLastSelection = (UINT16) OptionCount;\r
     }\r
 \r
-    Status = Hii->GetString (Hii, gStringPackHandle, 1, TRUE, Lang, &BufferSize, StringBuffer);\r
-    Hii->NewString (Hii, NULL, gStringPackHandle, &Token, StringBuffer);\r
+    BufferSize = 0;\r
+    Status = gHii->GetString (gHii, gStringPackHandle, 1, TRUE, Lang, &BufferSize, NULL);\r
+    ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
+    StringBuffer = AllocateZeroPool (BufferSize);\r
+    ASSERT (StringBuffer != NULL);\r
+    Status = gHii->GetString (gHii, gStringPackHandle, 1, TRUE, Lang, &BufferSize, StringBuffer);\r
+    ASSERT_EFI_ERROR (Status);\r
+    gHii->NewString (gHii, NULL, gStringPackHandle, &Token, StringBuffer);\r
+    FreePool (StringBuffer);\r
     CopyMem (&OptionList[OptionCount].StringToken, &Token, sizeof (UINT16));\r
     CopyMem (&OptionList[OptionCount].Value, &OptionCount, sizeof (UINT16));\r
     Key = 0x1234;\r
     CopyMem (&OptionList[OptionCount].Key, &Key, sizeof (UINT16));\r
-    OptionList[OptionCount].Flags = EFI_IFR_FLAG_INTERACTIVE | EFI_IFR_FLAG_NV_ACCESS;\r
+    OptionList[OptionCount].Flags = FRAMEWORK_EFI_IFR_FLAG_INTERACTIVE | FRAMEWORK_EFI_IFR_FLAG_NV_ACCESS;\r
     OptionCount++;\r
   }\r
 \r
   FreePool (LanguageString);\r
 \r
   if (ReInitializeStrings) {\r
-    FreePool (StringBuffer);\r
     FreePool (OptionList);\r
     return EFI_SUCCESS;\r
   }\r
@@ -392,13 +380,10 @@ ReInitStrings:
   //\r
   UpdateData->DataCount = (UINT8) (OptionCount + 2);\r
 \r
-  Hii->UpdateForm (Hii, gFrontPageHandle, (EFI_FORM_LABEL) 0x0002, TRUE, UpdateData);\r
+  gHii->UpdateForm (gHii, gFrontPageHandle, (EFI_FORM_LABEL) 0x0002, TRUE, UpdateData);\r
 \r
   FreePool (UpdateData);\r
-  //\r
-  // FreePool (OptionList);\r
-  //\r
-  FreePool (StringBuffer);\r
+  FreePool (OptionList);\r
   return Status;\r
 }\r
 \r
@@ -452,7 +437,7 @@ Returns:
     EnableResetRequired ();\r
   }\r
 \r
-  Hii->ResetStrings (Hii, gFrontPageHandle);\r
+  gHii->ResetStrings (gHii, gFrontPageHandle);\r
 \r
   return Status;\r
 }\r
@@ -483,7 +468,7 @@ Returns:
 {\r
   EFI_STATUS      Status;\r
   UINT16          HandleBufferLength;\r
-  EFI_HII_HANDLE  *HiiHandleBuffer;\r
+  FRAMEWORK_EFI_HII_HANDLE   *HiiHandleBuffer;\r
   UINTN           StringBufferLength;\r
   UINTN           NumberOfHiiHandles;\r
   UINTN           Index;\r
@@ -499,13 +484,13 @@ Returns:
   //\r
   // Get all the Hii handles\r
   //\r
-  Status = BdsLibGetHiiHandles (Hii, &HandleBufferLength, &HiiHandleBuffer);\r
+  Status = BdsLibGetHiiHandles (gHii, &HandleBufferLength, &HiiHandleBuffer);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
-  // Get the Hii Handle that matches the StructureNode->ProducerName\r
+  // Get the gHii Handle that matches the StructureNode->ProducerName\r
   //\r
-  NumberOfHiiHandles = HandleBufferLength / sizeof (EFI_HII_HANDLE);\r
+  NumberOfHiiHandles = HandleBufferLength / sizeof (FRAMEWORK_EFI_HII_HANDLE );\r
   for (Index = 0; Index < NumberOfHiiHandles; Index++) {\r
     Length = 0;\r
     Status = ExtractDataFromHiiHandle (\r
@@ -523,8 +508,8 @@ Returns:
   //\r
   StringBufferLength  = 0x100;\r
   *String             = AllocateZeroPool (0x100);\r
-  Status = Hii->GetString (\r
-                  Hii,\r
+  Status = gHii->GetString (\r
+                  gHii,\r
                   HiiHandleBuffer[Index],\r
                   Token,\r
                   FALSE,\r
@@ -693,7 +678,7 @@ Returns:
         BiosVendor = (EFI_MISC_BIOS_VENDOR_DATA *) (DataHeader + 1);\r
         GetStringFromToken (&Record->ProducerName, BiosVendor->BiosVersion, &NewString);\r
         TokenToUpdate = (STRING_REF) STR_FRONT_PAGE_BIOS_VERSION;\r
-        Hii->NewString (Hii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
+        gHii->NewString (gHii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
         FreePool (NewString);\r
         Find[0] = TRUE;\r
       }\r
@@ -704,7 +689,7 @@ Returns:
         SystemManufacturer = (EFI_MISC_SYSTEM_MANUFACTURER_DATA *) (DataHeader + 1);\r
         GetStringFromToken (&Record->ProducerName, SystemManufacturer->SystemProductName, &NewString);\r
         TokenToUpdate = (STRING_REF) STR_FRONT_PAGE_COMPUTER_MODEL;\r
-        Hii->NewString (Hii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
+        gHii->NewString (gHii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
         FreePool (NewString);\r
         Find[1] = TRUE;\r
       }\r
@@ -715,7 +700,7 @@ Returns:
         ProcessorVersion = (EFI_PROCESSOR_VERSION_DATA *) (DataHeader + 1);\r
         GetStringFromToken (&Record->ProducerName, *ProcessorVersion, &NewString);\r
         TokenToUpdate = (STRING_REF) STR_FRONT_PAGE_CPU_MODEL;\r
-        Hii->NewString (Hii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
+        gHii->NewString (gHii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
         FreePool (NewString);\r
         Find[2] = TRUE;\r
       }\r
@@ -726,7 +711,7 @@ Returns:
         ProcessorFrequency = (EFI_PROCESSOR_CORE_FREQUENCY_DATA *) (DataHeader + 1);\r
         ConvertProcessorToString (ProcessorFrequency, &NewString);\r
         TokenToUpdate = (STRING_REF) STR_FRONT_PAGE_CPU_SPEED;\r
-        Hii->NewString (Hii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
+        gHii->NewString (gHii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
         FreePool (NewString);\r
         Find[3] = TRUE;\r
       }\r
@@ -739,7 +724,7 @@ Returns:
                                   MemoryArray->MemoryArrayStartAddress + 1), 20)),\r
                                   &NewString);\r
         TokenToUpdate = (STRING_REF) STR_FRONT_PAGE_MEMORY_SIZE;\r
-        Hii->NewString (Hii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
+        gHii->NewString (gHii, Lang, gFrontPageHandle, &TokenToUpdate, NewString);\r
         FreePool (NewString);\r
         Find[4] = TRUE;\r
       }\r
@@ -797,7 +782,7 @@ Returns:
   //\r
   // Remove Banner Op-code if any at this label\r
   //\r
-  Hii->UpdateForm (Hii, gFrontPageHandle, (EFI_FORM_LABEL) 0xFFFF, FALSE, UpdateData);\r
+  gHii->UpdateForm (gHii, gFrontPageHandle, (EFI_FORM_LABEL) 0xFFFF, FALSE, UpdateData);\r
 \r
   //\r
   // Create Banner Op-code which reflects correct timeout value\r
@@ -805,14 +790,14 @@ Returns:
   CreateBannerOpCode (\r
     STRING_TOKEN (STR_TIME_OUT_PROMPT),\r
     TimeoutDefault,\r
-    (UINT8) EFI_IFR_BANNER_TIMEOUT,\r
+    (UINT8) FRAMEWORK_EFI_IFR_BANNER_TIMEOUT,\r
     &UpdateData->Data\r
     );\r
 \r
   //\r
   // Add Banner Op-code at this label\r
   //\r
-  Hii->UpdateForm (Hii, gFrontPageHandle, (EFI_FORM_LABEL) 0xFFFF, TRUE, UpdateData);\r
+  gHii->UpdateForm (gHii, gFrontPageHandle, (EFI_FORM_LABEL) 0xFFFF, TRUE, UpdateData);\r
 \r
   do {\r
 \r