Update UefiHiiLib to support new defined IFR related HII APIs.
Apply new defined IFR related HII APIs in PlatOverMngr, DriverSample, IScsiDxe and Setup drivers. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8066 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -794,7 +794,7 @@ InternalHiiLowerConfigString (
|
||||
EFI_STRING String;
|
||||
BOOLEAN Lower;
|
||||
|
||||
ASSERT (String != NULL);
|
||||
ASSERT (ConfigString != NULL);
|
||||
|
||||
//
|
||||
// Convert all hex digits in range [A-F] in the configuration header to [a-f]
|
||||
@@ -2938,3 +2938,77 @@ Finish:
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
Configure the buffer accrording to ConfigBody strings in the format of
|
||||
<Length:4 bytes>, <Offset: 2 bytes>, <Width:2 bytes>, <Data:n bytes>.
|
||||
This ConfigBody strings is generated by UEFI VfrCompiler for the default
|
||||
values in a Form Set. The name of the ConfigBody strings is VfrMyIfrNVDataDefault0000
|
||||
constructed following this rule:
|
||||
"Vfr" + varstore.name + "Default" + defaultstore.attributes.
|
||||
Check the generated C file in Output for details.
|
||||
|
||||
@param Buffer The start address of buffer.
|
||||
@param BufferSize The size of buffer.
|
||||
@param Number The number of the strings.
|
||||
@param ... Variable argument list for default value in <AltResp> format
|
||||
generated by the tool.
|
||||
|
||||
@retval EFI_BUFFER_TOO_SMALL the BufferSize is too small to operate.
|
||||
@retval EFI_INVALID_PARAMETER Buffer is NULL or BufferSize is 0.
|
||||
@retval EFI_SUCCESS Operation successful.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
IfrLibExtractDefault(
|
||||
IN VOID *Buffer,
|
||||
IN UINTN *BufferSize,
|
||||
UINTN Number,
|
||||
...
|
||||
)
|
||||
{
|
||||
VA_LIST Args;
|
||||
UINTN Index;
|
||||
UINT32 TotalLen;
|
||||
UINT8 *BufCfgArray;
|
||||
UINT8 *BufferPos;
|
||||
UINT16 Offset;
|
||||
UINT16 Width;
|
||||
UINT8 *Value;
|
||||
|
||||
if ((Buffer == NULL) || (BufferSize == NULL)) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
Offset = 0;
|
||||
Width = 0;
|
||||
Value = NULL;
|
||||
|
||||
VA_START (Args, Number);
|
||||
for (Index = 0; Index < Number; Index++) {
|
||||
BufCfgArray = (UINT8 *) VA_ARG (Args, VOID *);
|
||||
TotalLen = ReadUnaligned32 ((UINT32 *)BufCfgArray);
|
||||
BufferPos = BufCfgArray + sizeof (UINT32);
|
||||
|
||||
while ((UINT32)(BufferPos - BufCfgArray) < TotalLen) {
|
||||
Offset = ReadUnaligned16 ((UINT16 *)BufferPos);
|
||||
BufferPos += sizeof (UINT16);
|
||||
Width = ReadUnaligned16 ((UINT16 *)BufferPos);
|
||||
BufferPos += sizeof (UINT16);
|
||||
Value = BufferPos;
|
||||
BufferPos += Width;
|
||||
|
||||
if ((UINTN)(Offset + Width) > *BufferSize) {
|
||||
return EFI_BUFFER_TOO_SMALL;
|
||||
}
|
||||
|
||||
CopyMem ((UINT8 *)Buffer + Offset, Value, Width);
|
||||
}
|
||||
}
|
||||
VA_END (Args);
|
||||
|
||||
*BufferSize = (UINTN)Offset;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
@@ -90,7 +90,7 @@ HiiLibGetSupportedLanguages (
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Status = mHiiStringProt->GetLanguages (mHiiStringProt, HiiHandle, LanguageString, &BufferSize);
|
||||
Status = gHiiString->GetLanguages (gHiiString, HiiHandle, LanguageString, &BufferSize);
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
FreePool (LanguageString);
|
||||
@@ -99,7 +99,7 @@ HiiLibGetSupportedLanguages (
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Status = mHiiStringProt->GetLanguages (mHiiStringProt, HiiHandle, LanguageString, &BufferSize);
|
||||
Status = gHiiString->GetLanguages (gHiiString, HiiHandle, LanguageString, &BufferSize);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
@@ -189,7 +189,7 @@ HiiLibGetSupportedSecondaryLanguages (
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);
|
||||
Status = gHiiString->GetSecondaryLanguages (gHiiString, HiiHandle, FirstLanguage, LanguageString, &BufferSize);
|
||||
|
||||
if (Status == EFI_BUFFER_TOO_SMALL) {
|
||||
FreePool (LanguageString);
|
||||
@@ -198,7 +198,7 @@ HiiLibGetSupportedSecondaryLanguages (
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Status = mHiiStringProt->GetSecondaryLanguages (mHiiStringProt, HiiHandle, FirstLanguage, LanguageString, &BufferSize);
|
||||
Status = gHiiString->GetSecondaryLanguages (gHiiString, HiiHandle, FirstLanguage, LanguageString, &BufferSize);
|
||||
}
|
||||
|
||||
if (EFI_ERROR (Status)) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -214,8 +214,8 @@ HiiLibNewString (
|
||||
// For each language supported by the package,
|
||||
// a string token is created.
|
||||
//
|
||||
Status = mHiiStringProt->NewString (
|
||||
mHiiStringProt,
|
||||
Status = gHiiString->NewString (
|
||||
gHiiString,
|
||||
PackageList,
|
||||
StringId,
|
||||
Lang,
|
||||
@@ -287,8 +287,8 @@ HiiLibSetString (
|
||||
// For each language supported by the package,
|
||||
// the string is updated.
|
||||
//
|
||||
Status = mHiiStringProt->SetString (
|
||||
mHiiStringProt,
|
||||
Status = gHiiString->SetString (
|
||||
gHiiString,
|
||||
PackageList,
|
||||
StringId,
|
||||
Lang,
|
||||
@@ -425,8 +425,8 @@ HiiLibGetString (
|
||||
NULL
|
||||
);
|
||||
if (BestLanguage != NULL ) {
|
||||
Status = mHiiStringProt->GetString (
|
||||
mHiiStringProt,
|
||||
Status = gHiiString->GetString (
|
||||
gHiiString,
|
||||
BestLanguage,
|
||||
PackageList,
|
||||
StringId,
|
||||
|
@@ -20,6 +20,7 @@
|
||||
#include <Protocol/HiiDatabase.h>
|
||||
#include <Protocol/HiiString.h>
|
||||
#include <Protocol/DevicePath.h>
|
||||
#include <Protocol/FormBrowser2.h>
|
||||
|
||||
#include <Guid/GlobalVariable.h>
|
||||
|
||||
@@ -30,7 +31,9 @@
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/UefiHiiServicesLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/PcdLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
|
||||
|
@@ -25,7 +25,6 @@
|
||||
VERSION_STRING = 1.0
|
||||
LIBRARY_CLASS = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
|
||||
EFI_SPECIFICATION_VERSION = 0x0002000A
|
||||
CONSTRUCTOR = HiiLibConstructor
|
||||
|
||||
#
|
||||
# VALID_ARCHITECTURES = IA32 X64 IPF EBC
|
||||
@@ -49,21 +48,13 @@
|
||||
UefiBootServicesTableLib
|
||||
DevicePathLib
|
||||
UefiLib
|
||||
UefiHiiServicesLib
|
||||
PrintLib
|
||||
PcdLib
|
||||
UefiRuntimeServicesTableLib
|
||||
|
||||
[Protocols]
|
||||
gEfiHiiDatabaseProtocolGuid ## CONSUMES
|
||||
gEfiHiiStringProtocolGuid ## CONSUMES
|
||||
gEfiFormBrowser2ProtocolGuid ## CONSUMES
|
||||
gEfiDevicePathProtocolGuid ## CONSUMES
|
||||
|
||||
[Pcd]
|
||||
gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang
|
||||
|
||||
[Guids]
|
||||
gEfiGlobalVariableGuid ## SOMETIMES_CONSUMES ## Variable:L"PlatformLang"
|
||||
|
||||
[Depex]
|
||||
gEfiHiiDatabaseProtocolGuid AND
|
||||
gEfiHiiStringProtocolGuid
|
||||
|
||||
|
Reference in New Issue
Block a user