Update HiiDataBase and UefiHiiLib to support Name/Value varstore.

Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14451 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
Eric Dong 2013-07-02 07:53:35 +00:00 committed by ydong10
parent 3aee9940c9
commit 82e8c1380f
5 changed files with 2256 additions and 1231 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1794,6 +1794,7 @@ DriverSampleInit (
DRIVER_SAMPLE_CONFIGURATION *Configuration; DRIVER_SAMPLE_CONFIGURATION *Configuration;
BOOLEAN ActionFlag; BOOLEAN ActionFlag;
EFI_STRING ConfigRequestHdr; EFI_STRING ConfigRequestHdr;
EFI_STRING NameRequestHdr;
MY_EFI_VARSTORE_DATA *VarStoreConfig; MY_EFI_VARSTORE_DATA *VarStoreConfig;
EFI_INPUT_KEY HotKey; EFI_INPUT_KEY HotKey;
EFI_FORM_BROWSER_EXTENSION_PROTOCOL *FormBrowserEx; EFI_FORM_BROWSER_EXTENSION_PROTOCOL *FormBrowserEx;
@ -1973,6 +1974,9 @@ DriverSampleInit (
ConfigRequestHdr = HiiConstructConfigHdr (&gDriverSampleFormSetGuid, VariableName, DriverHandle[0]); ConfigRequestHdr = HiiConstructConfigHdr (&gDriverSampleFormSetGuid, VariableName, DriverHandle[0]);
ASSERT (ConfigRequestHdr != NULL); ASSERT (ConfigRequestHdr != NULL);
NameRequestHdr = HiiConstructConfigHdr (&gDriverSampleFormSetGuid, NULL, DriverHandle[0]);
ASSERT (NameRequestHdr != NULL);
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION); BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
Status = gRT->GetVariable (VariableName, &gDriverSampleFormSetGuid, NULL, &BufferSize, Configuration); Status = gRT->GetVariable (VariableName, &gDriverSampleFormSetGuid, NULL, &BufferSize, Configuration);
if (EFI_ERROR (Status)) { if (EFI_ERROR (Status)) {
@ -1991,12 +1995,18 @@ DriverSampleInit (
// EFI variable for NV config doesn't exit, we should build this variable // EFI variable for NV config doesn't exit, we should build this variable
// based on default values stored in IFR // based on default values stored in IFR
// //
ActionFlag = HiiSetToDefaults (NameRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD);
ASSERT (ActionFlag);
ActionFlag = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD); ActionFlag = HiiSetToDefaults (ConfigRequestHdr, EFI_HII_DEFAULT_CLASS_STANDARD);
ASSERT (ActionFlag); ASSERT (ActionFlag);
} else { } else {
// //
// EFI variable does exist and Validate Current Setting // EFI variable does exist and Validate Current Setting
// //
ActionFlag = HiiValidateSettings (NameRequestHdr);
ASSERT (ActionFlag);
ActionFlag = HiiValidateSettings (ConfigRequestHdr); ActionFlag = HiiValidateSettings (ConfigRequestHdr);
ASSERT (ActionFlag); ASSERT (ActionFlag);
} }

View File

@ -359,6 +359,8 @@ formset
maximum = 0xff, maximum = 0xff,
step = 0, step = 0,
locked, locked,
default = 16, defaultstore = MyStandardDefault, // This is standard default value
default = 17, defaultstore = MyManufactureDefault, // This is manufacture default value
endnumeric; endnumeric;
numeric varid = MyNameValueVar[1], // This numeric take NameValueVar1 as storage numeric varid = MyNameValueVar[1], // This numeric take NameValueVar1 as storage
@ -368,6 +370,8 @@ formset
minimum = 0, minimum = 0,
maximum = 0xffff, maximum = 0xffff,
step = 0, step = 0,
default = 18, defaultstore = MyStandardDefault, // This is standard default value
default = 19, defaultstore = MyManufactureDefault, // This is manufacture default value
endnumeric; endnumeric;
// //

File diff suppressed because it is too large Load Diff

View File

@ -67,6 +67,7 @@ typedef struct {
CHAR16 *Name; CHAR16 *Name;
EFI_VARSTORE_ID VarStoreId; EFI_VARSTORE_ID VarStoreId;
UINT16 Size; UINT16 Size;
UINT8 Type;
LIST_ENTRY BlockEntry; // Link to its Block array LIST_ENTRY BlockEntry; // Link to its Block array
} IFR_VARSTORAGE_DATA; } IFR_VARSTORAGE_DATA;
@ -78,6 +79,7 @@ typedef struct {
UINT8 OpCode; UINT8 OpCode;
UINT8 Scope; UINT8 Scope;
LIST_ENTRY DefaultValueEntry; // Link to its default value array LIST_ENTRY DefaultValueEntry; // Link to its default value array
CHAR16 *Name;
} IFR_BLOCK_DATA; } IFR_BLOCK_DATA;
// //
@ -105,6 +107,7 @@ typedef struct {
#define EFI_HII_VARSTORE_BUFFER 0 #define EFI_HII_VARSTORE_BUFFER 0
#define EFI_HII_VARSTORE_NAME_VALUE 1 #define EFI_HII_VARSTORE_NAME_VALUE 1
#define EFI_HII_VARSTORE_EFI_VARIABLE 2 #define EFI_HII_VARSTORE_EFI_VARIABLE 2
#define EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER 3
#define HII_FORMSET_STORAGE_SIGNATURE SIGNATURE_32 ('H', 'S', 'T', 'G') #define HII_FORMSET_STORAGE_SIGNATURE SIGNATURE_32 ('H', 'S', 'T', 'G')
typedef struct { typedef struct {