#include "HiiHandle.h"\r
\r
\r
-STATIC BOOLEAN mInFrameworkHiiNewPack = FALSE;\r
-STATIC BOOLEAN mInFrameworkHiiRemovePack = FALSE;\r
+BOOLEAN mInFrameworkHiiNewPack = FALSE;\r
+BOOLEAN mInFrameworkHiiRemovePack = FALSE;\r
BOOLEAN mInFrameworkUpdatePakcage = FALSE;\r
+UINT64 mGuidCount = 0;\r
\r
\r
+/**\r
+ Get the number of package IFR and STRING packages in the package list passed in.\r
+\r
+ @param Packages Package List.\r
+ @param IfrPackageCount Number of IFR Packages.\r
+ @param StringPackageCount Number of String Packages.\r
+\r
+ @retval EFI_INVALID_PARAMETER If the Package List has package with type of \r
+ EFI_HII_PACKAGE_KEYBOARD_LAYOUT, EFI_HII_PACKAGE_FONTS, EFI_HII_PACKAGE_IMAGES.\r
+ @reval EFI_SUCCESS Successfully get the number of IFR and STRING package.\r
+ \r
+\r
+**/\r
EFI_STATUS\r
GetPackageCount (\r
IN CONST EFI_HII_PACKAGES *Packages,\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Insert the String Package into the Package Lists which has the TAG GUID matching\r
+ the PackageListGuid of the String Package. \r
+\r
+ The Package List must have only IFR Package and no String Package. \r
+ Otherwise, ASSERT.\r
+\r
+ @param Private The HII THUNK driver context data.\r
+ @param StringPackageThunkContext The HII THUNK context data.\r
+ @param StringPackageListHeader The String Package List Header.\r
+ \r
+**/\r
VOID\r
UpdatePackListWithOnlyIfrPack (\r
IN HII_THUNK_PRIVATE_DATA *Private,\r
}\r
\r
\r
+/**\r
+ Prepare a UEFI Package List from a Framework HII package list registered\r
+ from a Framework HII NewPack () function.\r
+\r
+ If either Packages or PackageListGuid is NULL, then ASSERT.\r
+ \r
+ @param Packages The Framework HII Package List.\r
+ @param PackageListGuid The Package List GUID.\r
+\r
+\r
+ @return The UEFI Package List. \r
+**/\r
EFI_HII_PACKAGE_LIST_HEADER *\r
PrepareUefiPackageListFromFrameworkHiiPackages (\r
IN CONST EFI_HII_PACKAGES *Packages,\r
return PackageListHeader; \r
}\r
\r
+\r
+/**\r
+ Generate a Random GUID.\r
+ \r
+ @param Guid On output, a Random GUID will be filled.\r
+\r
+**/\r
VOID\r
GenerateRandomGuid (\r
OUT EFI_GUID * Guid\r
)\r
{\r
EFI_GUID GuidBase = { 0x14f95e01, 0xd562, 0x432e, { 0x84, 0x4a, 0x95, 0xa4, 0x39, 0x5, 0x10, 0x7e }};\r
- static UINT64 Count = 0;\r
\r
CopyGuid (Guid, &GuidBase);\r
\r
- Count++; \r
- *((UINT64 *) Guid) = *((UINT64 *) Guid) + Count;\r
+ mGuidCount++; \r
+ *((UINT64 *) Guid) = *((UINT64 *) Guid) + mGuidCount;\r
}\r
\r
+/**\r
+ Given a Package List with only a IFR package, find the Package List that only has a String Package based on\r
+ the TAG GUID. Then export the String Package from the Package List and insert it\r
+ to the given IFR package.\r
+\r
+ This is to handle the case of Framework HII interface which allow String Package\r
+ and IFR package to be registered using two different NewPack () calls.\r
+\r
+ @param Private The HII THUNK driver context data.\r
+ @param IfrThunkContext Package List with only a IFR package.\r
+\r
+ @retval EFI_SUCCESS If the String Package is found and inserted to the\r
+ Package List with only a IFR package.\r
+ @retval EFI_NOT_FOUND No String Package matching the TAG GUID is found.\r
+**/\r
EFI_STATUS\r
FindStringPackAndUpdatePackListWithOnlyIfrPack (\r
IN HII_THUNK_PRIVATE_DATA *Private,\r
}\r
\r
\r
-//\r
-// \r
-//\r
+/**\r
+ Register the Package List passed from the Framework HII NewPack () interface.\r
+ The FRAMEWORK_EFI_HII_HANDLE will be returned.\r
+\r
+ @param This The EFI_HII_PROTOCOL context data. Only used\r
+ to call HiiRemovePack.\r
+ @param Private The HII THUNK driver context data.\r
+ @param Package Package List.\r
+ @param Handle On output, a FRAMEWORK_EFI_HII_HANDLE number is\r
+ returned.\r
+\r
+ @retval EFI_SUCCESS The Package List is registered successfull in \r
+ the database.\r
+ @retval EFI_UNSUPPORTED The number of IFR package in the package list\r
+ is greater than 1.\r
+ @retval EFI_OUT_OF_RESOURCE Not enough resouce.\r
+ \r
+**/\r
EFI_STATUS\r
-UefiRegisterPackageList(\r
+UefiRegisterPackageList (\r
IN EFI_HII_PROTOCOL *This,\r
IN HII_THUNK_PRIVATE_DATA *Private,\r
IN EFI_HII_PACKAGES *Packages,\r
EFI_STATUS\r
EFIAPI\r
HiiRemovePack (\r
- IN EFI_HII_PROTOCOL *This,\r
+ IN EFI_HII_PROTOCOL *This,\r
IN FRAMEWORK_EFI_HII_HANDLE Handle\r
)\r
/*++\r