Update ALTCFG reference from default name token to default ID.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11558 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
ydong10 2011-04-19 03:04:06 +00:00
parent 6738e4e7a0
commit 81b618fe85
3 changed files with 10 additions and 132 deletions

View File

@ -1629,15 +1629,10 @@ InternalHiiIfrValueAction (
UINT32 Index; UINT32 Index;
EFI_GUID *VarGuid; EFI_GUID *VarGuid;
EFI_STRING VarName; EFI_STRING VarName;
EFI_STRING_ID DefaultName;
UINT8 *PackageData; UINT8 *PackageData;
UINTN IfrOffset;
EFI_IFR_OP_HEADER *IfrOpHdr;
EFI_HII_PACKAGE_LIST_HEADER *HiiPackageList; EFI_HII_PACKAGE_LIST_HEADER *HiiPackageList;
UINT32 PackageOffset;
UINTN PackageListLength; UINTN PackageListLength;
EFI_HII_PACKAGE_HEADER PacakgeHeader;
EFI_DEVICE_PATH_PROTOCOL *DevicePath; EFI_DEVICE_PATH_PROTOCOL *DevicePath;
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath; EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
@ -1774,11 +1769,7 @@ InternalHiiIfrValueAction (
} }
// //
// 2. Get DefaultName string ID by parsing the PacakgeList // 2. Get HiiPackage by HiiHandle
//
//
// Get HiiPackage by HiiHandle
// //
PackageListLength = 0; PackageListLength = 0;
HiiPackageList = NULL; HiiPackageList = NULL;
@ -1806,59 +1797,9 @@ InternalHiiIfrValueAction (
goto Done; goto Done;
} }
//
// Parse the form package and get the default name string ID.
//
if (ActionType == ACTION_SET_DEFAUTL_VALUE) {
PackageOffset = sizeof (EFI_HII_PACKAGE_LIST_HEADER);
Status = EFI_NOT_FOUND;
while (PackageOffset < PackageListLength) {
CopyMem (&PacakgeHeader, (UINT8 *) HiiPackageList + PackageOffset, sizeof (PacakgeHeader));
//
// Parse IFR opcode to get default store opcode
//
if (PacakgeHeader.Type == EFI_HII_PACKAGE_FORMS) {
IfrOffset = sizeof (PacakgeHeader);
PackageData = (UINT8 *) HiiPackageList + PackageOffset;
while (IfrOffset < PacakgeHeader.Length) {
IfrOpHdr = (EFI_IFR_OP_HEADER *) (PackageData + IfrOffset);
//
// Match DefaultId to find its DefaultName
//
if (IfrOpHdr->OpCode == EFI_IFR_DEFAULTSTORE_OP) {
if (((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId == DefaultId) {
DefaultName = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultName;
Status = EFI_SUCCESS;
break;
}
}
IfrOffset += IfrOpHdr->Length;
}
//
// Only one form is in a package list.
//
break;
}
//
// Go to next package.
//
PackageOffset += PacakgeHeader.Length;
}
//
// Not found the matched default string ID
//
if (EFI_ERROR (Status)) {
Status = EFI_SUCCESS;
goto NextConfigAltResp;
}
}
// //
// 3. Call ConfigRouting GetAltCfg(ConfigRoute, <ConfigResponse>, Guid, Name, DevicePath, AltCfgId, AltCfgResp) // 3. Call ConfigRouting GetAltCfg(ConfigRoute, <ConfigResponse>, Guid, Name, DevicePath, AltCfgId, AltCfgResp)
// Get the default configuration string according to the found default name string ID. // Get the default configuration string according to the default ID.
// //
Status = gHiiConfigRouting->GetAltConfig ( Status = gHiiConfigRouting->GetAltConfig (
gHiiConfigRouting, gHiiConfigRouting,
@ -1866,7 +1807,7 @@ InternalHiiIfrValueAction (
VarGuid, VarGuid,
VarName, VarName,
DevicePath, DevicePath,
(ActionType == ACTION_SET_DEFAUTL_VALUE) ? &DefaultName:NULL, // it can be NULL to get the current setting. (ActionType == ACTION_SET_DEFAUTL_VALUE) ? &DefaultId:NULL, // it can be NULL to get the current setting.
&ConfigResp &ConfigResp
); );

View File

@ -635,37 +635,6 @@ MergeDefaultString (
return EFI_SUCCESS; return EFI_SUCCESS;
} }
/**
This function finds the matched DefaultName for the input DefaultId
@param DefaultIdArray Array stores the map table between DefaultId and DefaultName.
@param VarDefaultId Default Id
@param VarDefaultName Default Name string ID for the input default ID.
@retval EFI_SUCCESS The mapped default name string ID is found.
@retval EFI_NOT_FOUND The mapped default name string ID is not found.
**/
EFI_STATUS
FindDefaultName (
IN IFR_DEFAULT_DATA *DefaultIdArray,
IN UINT16 VarDefaultId,
OUT EFI_STRING_ID *VarDefaultName
)
{
LIST_ENTRY *Link;
IFR_DEFAULT_DATA *DefaultData;
for (Link = DefaultIdArray->Entry.ForwardLink; Link != &DefaultIdArray->Entry; Link = Link->ForwardLink) {
DefaultData = BASE_CR (Link, IFR_DEFAULT_DATA, Entry);
if (DefaultData->DefaultId == VarDefaultId) {
*VarDefaultName = DefaultData->DefaultName;
return EFI_SUCCESS;
}
}
return EFI_NOT_FOUND;
}
/** /**
This function inserts new DefaultValueData into the BlockData DefaultValue array. This function inserts new DefaultValueData into the BlockData DefaultValue array.
@ -948,7 +917,6 @@ ParseIfrData (
goto Done; goto Done;
} }
DefaultData->DefaultId = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId; DefaultData->DefaultId = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultId;
DefaultData->DefaultName = ((EFI_IFR_DEFAULTSTORE *) IfrOpHdr)->DefaultName;
InsertTailList (&DefaultIdArray->Entry, &DefaultData->Entry); InsertTailList (&DefaultIdArray->Entry, &DefaultData->Entry);
DefaultData = NULL; DefaultData = NULL;
break; break;
@ -1038,13 +1006,9 @@ ParseIfrData (
// //
// //
// Set standard ID and Get DefaultName String ID // Set standard ID
// //
VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD; VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1055,7 +1019,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) { switch (IfrOneOf->Flags & EFI_IFR_NUMERIC_SIZE) {
case EFI_IFR_NUMERIC_SIZE_1: case EFI_IFR_NUMERIC_SIZE_1:
@ -1199,13 +1162,9 @@ ParseIfrData (
// //
if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) { if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT) == EFI_IFR_CHECKBOX_DEFAULT) {
// //
// Set standard ID to Manufacture ID and Get DefaultName String ID // Set standard ID to Manufacture ID
// //
VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD; VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1216,7 +1175,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
DefaultData->Value = 1; DefaultData->Value = 1;
// //
// Add DefaultValue into current BlockData // Add DefaultValue into current BlockData
@ -1226,13 +1184,9 @@ ParseIfrData (
if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) { if ((IfrCheckBox->Flags & EFI_IFR_CHECKBOX_DEFAULT_MFG) == EFI_IFR_CHECKBOX_DEFAULT_MFG) {
// //
// Set standard ID to Manufacture ID and Get DefaultName String ID // Set standard ID to Manufacture ID
// //
VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING; VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1243,7 +1197,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
DefaultData->Value = 1; DefaultData->Value = 1;
// //
// Add DefaultValue into current BlockData // Add DefaultValue into current BlockData
@ -1466,13 +1419,9 @@ ParseIfrData (
// //
FirstOneOfOption = FALSE; FirstOneOfOption = FALSE;
// //
// Set standard ID to Manufacture ID and Get DefaultName String ID // Set standard ID to Manufacture ID
// //
VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD; VarDefaultId = EFI_HII_DEFAULT_CLASS_STANDARD;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1483,7 +1432,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
DefaultData->Value = IfrOneOfOption->Value.u64; DefaultData->Value = IfrOneOfOption->Value.u64;
// //
// Add DefaultValue into current BlockData // Add DefaultValue into current BlockData
@ -1493,13 +1441,9 @@ ParseIfrData (
if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) { if ((IfrOneOfOption->Flags & EFI_IFR_OPTION_DEFAULT_MFG) == EFI_IFR_OPTION_DEFAULT_MFG) {
// //
// Set default ID to Manufacture ID and Get DefaultName String ID // Set default ID to Manufacture ID
// //
VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING; VarDefaultId = EFI_HII_DEFAULT_CLASS_MANUFACTURING;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1510,7 +1454,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
DefaultData->Value = IfrOneOfOption->Value.u64; DefaultData->Value = IfrOneOfOption->Value.u64;
// //
// Add DefaultValue into current BlockData // Add DefaultValue into current BlockData
@ -1537,14 +1480,10 @@ ParseIfrData (
break; break;
} }
// //
// Get the DefaultId and DefaultName String ID // Get the DefaultId
// //
IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr; IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr;
VarDefaultId = IfrDefault->DefaultId; VarDefaultId = IfrDefault->DefaultId;
Status = FindDefaultName (DefaultIdArray, VarDefaultId, &VarDefaultName);
if (EFI_ERROR (Status)) {
goto Done;
}
// //
// Prepare new DefaultValue // Prepare new DefaultValue
// //
@ -1555,7 +1494,6 @@ ParseIfrData (
} }
DefaultData->OpCode = IfrOpHdr->OpCode; DefaultData->OpCode = IfrOpHdr->OpCode;
DefaultData->DefaultId = VarDefaultId; DefaultData->DefaultId = VarDefaultId;
DefaultData->DefaultName = VarDefaultName;
DefaultData->Value = IfrDefault->Value.u64; DefaultData->Value = IfrDefault->Value.u64;
// //
// Add DefaultValue into current BlockData // Add DefaultValue into current BlockData
@ -2128,7 +2066,7 @@ GetFullStringFromHiiFormPackages (
(1 + StrLen (ConfigHdr) + 8 + 4 + 1) * sizeof (CHAR16), (1 + StrLen (ConfigHdr) + 8 + 4 + 1) * sizeof (CHAR16),
L"&%s&ALTCFG=%04X", L"&%s&ALTCFG=%04X",
ConfigHdr, ConfigHdr,
DefaultId->DefaultName DefaultId->DefaultId
); );
StringPtr += StrLen (StringPtr); StringPtr += StrLen (StringPtr);

View File

@ -89,7 +89,6 @@ typedef struct {
typedef struct { typedef struct {
LIST_ENTRY Entry; LIST_ENTRY Entry;
UINT8 OpCode; UINT8 OpCode;
EFI_STRING_ID DefaultName;
UINT16 DefaultId; UINT16 DefaultId;
UINT64 Value; UINT64 Value;
} IFR_DEFAULT_DATA; } IFR_DEFAULT_DATA;