Reviewed-by: Liming Gao <[email protected]>

-----Original Message-----
From: edk2-devel [mailto:[email protected]] On Behalf Of Dandan Bi
Sent: Wednesday, August 26, 2015 4:46 PM
To: Dong, Eric; Gao, Liming; [email protected]
Subject: [edk2] [patch 2/2] MdeModulePkg:Set default string value

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
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to