Previously construct Default Value in AltResp for string opcode is String Id, Now change it to string value if the string opcode has default value. This change is compatible for SetupBrowser to handle.And add default value for string in DriverSample to test this case.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <[email protected]> --- MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr | 1 + .../Universal/DriverSampleDxe/VfrStrings.uni | Bin 63554 -> 63834 bytes .../Universal/HiiDatabaseDxe/ConfigRouting.c | 23 ++++++++++++++------- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr index 1366e82..8da0d4b 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr +++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr @@ -459,10 +459,11 @@ formset string varid = MyIfrNVData.PasswordClearText, prompt = STRING_TOKEN(STR_MY_STRING_PROMPT), help = STRING_TOKEN(STR_MY_STRING_HELP), minsize = 6, maxsize = 0x14, + default = STRING_TOKEN(STR_MY_STRING_DEFAULT), endstring; // // Interactive password, validate via ConfigAccess.Callback() // diff --git a/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni b/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni index a3fbaed8a431621dd0b9338364a80d66f7313b88..0a5c2424d50061147fde63440a1fc82db3d984d0 100644 GIT binary patch delta 68 zcmX@~f%(=a<_%q?+%62R3~mgL4517@lM6+}Cm#?{V$Nl#oV+x+Qxr%uC@>T-Br+5O WVL3xSLlHyD<d3TqH&>LNY61ZMn-*#S delta 18 acmcchiTTh6<_%q?lYbTQY+hHkrU?LK;R-|m diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c index 5686883..0f04c8a 100644 --- a/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/ConfigRouting.c @@ -2054,15 +2054,10 @@ ParseIfrData ( VarWidth = (UINT16) (IfrString->MaxSize * sizeof (UINT16)); Status = IsThisOpcodeRequired(RequestBlockArray, HiiHandle, VarStorageData, IfrOpHdr, VarWidth, &BlockData); if (EFI_ERROR (Status)) { goto Done; } - - // - // No default value for string. - // - BlockData = NULL; break; case EFI_IFR_PASSWORD_OP: // // offset by question header @@ -2848,20 +2843,22 @@ GetStorageWidth ( } /** Generate ConfigAltResp string base on the varstore info. + @param HiiHandle Hii Handle for this hii package. @param ConfigHdr The config header for this varstore. @param VarStorageData The varstore info. @param DefaultIdArray The Default id array. @param DefaultAltCfgResp The DefaultAltCfgResp info may be return. @retval TRUE Need to continue @retval Others NO need to continue or error occur. **/ EFI_STATUS GenerateAltConfigResp ( + IN EFI_HII_HANDLE HiiHandle, IN CHAR16 *ConfigHdr, IN IFR_VARSTORAGE_DATA *VarStorageData, IN IFR_DEFAULT_DATA *DefaultIdArray, IN OUT EFI_STRING *DefaultAltCfgResp ) @@ -2876,14 +2873,15 @@ GenerateAltConfigResp ( IFR_BLOCK_DATA *BlockData; IFR_DEFAULT_DATA *DefaultId; IFR_DEFAULT_DATA *DefaultValueData; UINTN Width; UINT8 *TmpBuffer; + CHAR16 *DefaultString; BlockData = NULL; DataExist = FALSE; - + DefaultString = NULL; // // Add length for <ConfigHdr> + '\0' // Length = StrLen (ConfigHdr) + 1; @@ -2991,14 +2989,23 @@ GenerateAltConfigResp ( Width = BlockData->Width; // // Convert Value to a hex string in "%x" format // NOTE: This is in the opposite byte that GUID and PATH use // - TmpBuffer = (UINT8 *) &(DefaultValueData->Value); + if (BlockData->OpCode == EFI_IFR_STRING_OP){ + DefaultString = InternalGetString(HiiHandle, DefaultValueData->Value.string); + TmpBuffer = (UINT8 *) DefaultString; + } else { + TmpBuffer = (UINT8 *) &(DefaultValueData->Value); + } for (; Width > 0; Width--) { StringPtr += UnicodeValueToString (StringPtr, PREFIX_ZERO | RADIX_HEX, TmpBuffer[Width - 1], 2); } + if (DefaultString != NULL){ + FreePool(DefaultString); + DefaultString = NULL; + } } } } HiiToLower (*DefaultAltCfgResp); @@ -3216,11 +3223,11 @@ GetFullStringFromHiiFormPackages ( // // 4. Construct Default Value string in AltResp according to request element. // Go through all VarStorageData Entry and get the DefaultId array for each one // Then construct them all to : ConfigHdr AltConfigHdr ConfigBody AltConfigHdr ConfigBody // - Status = GenerateAltConfigResp (ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp); + Status = GenerateAltConfigResp (DataBaseRecord->Handle,ConfigHdr, VarStorageData, DefaultIdArray, &DefaultAltCfgResp); if (EFI_ERROR (Status)) { goto Done; } // -- 1.9.5.msysgit.1 _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

