Reviewed-by: Liming Gao <liming....@intel.com> -----Original Message----- From: Bi, Dandan Sent: Wednesday, September 02, 2015 12:58 PM To: Dong, Eric; Gao, Liming; edk2-devel@lists.01.org Subject: [patch] MdeModulePkg:Support orderedList with default value
Our tool can support OrderedList which has default value,but doesn't update the source code in HiiDatabase when parse the ifr data.Now update the code and add test case in DriverSample. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan...@intel.com> --- MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr | 1 + .../Universal/HiiDatabaseDxe/ConfigRouting.c | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr index 8da0d4b..bd28797 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr +++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr @@ -232,10 +232,11 @@ formset help = STRING_TOKEN(STR_TEXT_HELP), flags = RESET_REQUIRED, option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 3, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 2, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 1, flags = 0; + default = {1,2,3}, endlist; endif; label 100; diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c index 1081e75..b618903 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c @@ -1597,10 +1597,11 @@ ParseIfrData ( IFR_BLOCK_DATA *BlockData; CHAR16 *VarStoreName; UINT16 VarWidth; UINT16 VarDefaultId; BOOLEAN FirstOneOfOption; + BOOLEAN FirstOrderedList; LIST_ENTRY *LinkData; LIST_ENTRY *LinkDefault; EFI_IFR_VARSTORE_NAME_VALUE *IfrNameValueVarStore; EFI_HII_PACKAGE_HEADER *PackageHeader; EFI_VARSTORE_ID VarStoreId; @@ -1608,10 +1609,11 @@ ParseIfrData ( Status = EFI_SUCCESS; BlockData = NULL; DefaultDataPtr = NULL; FirstOneOfOption = FALSE; VarStoreId = 0; + FirstOrderedList = FALSE; ZeroMem (&DefaultData, sizeof (IFR_DEFAULT_DATA)); // // Go through the form package to parse OpCode one by one. // @@ -1854,13 +1856,13 @@ ParseIfrData ( case EFI_IFR_ORDERED_LIST_OP: // // offset by question header // width by EFI_IFR_ORDERED_LIST MaxContainers * OneofOption Type - // no default value and default id, how to define its default value? // + FirstOrderedList = TRUE; // // OrderedList question is not in IFR Form. This IFR form is not valid. // if (VarStoreId == 0) { Status = EFI_INVALID_PARAMETER; @@ -2100,10 +2102,14 @@ ParseIfrData ( break; } IfrOneOfOption = (EFI_IFR_ONE_OF_OPTION *) IfrOpHdr; if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) { + + if (!FirstOrderedList){ + break; + } // // Get ordered list option data type. // if (IfrOneOfOption->Type == EFI_IFR_TYPE_NUM_SIZE_8 || IfrOneOfOption->Type == EFI_IFR_TYPE_BOOLEAN) { VarWidth = 1; @@ -2156,14 +2162,13 @@ ParseIfrData ( } // // Add Block Data into VarStorageData BlockEntry // InsertBlockData (&VarStorageData->BlockEntry, &BlockData); - // - // No default data for OrderedList. - // - BlockData = NULL; + + FirstOrderedList = FALSE; + break; } // // 1. Set default value for OneOf option when flag field has default attribute. @@ -2220,16 +2225,10 @@ ParseIfrData ( // No matched block data is ignored. // break; } - if (BlockData->OpCode == EFI_IFR_ORDERED_LIST_OP) { - // - // OrderedList Opcode is no default value. - // - break; - } // // Get the DefaultId // IfrDefault = (EFI_IFR_DEFAULT *) IfrOpHdr; VarDefaultId = IfrDefault->DefaultId; -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel