summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
diff options
context:
space:
mode:
authorDandan Bi <dandan.bi@intel.com>2016-04-15 13:25:55 +0800
committerStar Zeng <star.zeng@intel.com>2016-04-19 17:48:12 +0800
commit622ce645084b9b1f9fb8b27a6a343d868b377cd3 (patch)
tree4d1982b1fde81ab917aa3a3306f9ef546c4ad716 /MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
parent7f36d62918c74079a3150b87e23b62445c36b5ab (diff)
downloadedk2-platforms-622ce645084b9b1f9fb8b27a6a343d868b377cd3.tar.xz
MdeModulePkg/DriverSampleDxe: Add a sample case
Add the sample case for orderedlist to get standard default value from Callback function. Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c')
-rw-r--r--MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c53
1 files changed, 52 insertions, 1 deletions
diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
index cdb8889e87..9c5d4bb61e 100644
--- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
+++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
@@ -69,6 +69,48 @@ HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath1 = {
};
/**
+ Set value of a data element in an Array by its Index.
+
+ @param Array The data array.
+ @param Type Type of the data in this array.
+ @param Index Zero based index for data in this array.
+ @param Value The value to be set.
+
+**/
+VOID
+SetArrayData (
+ IN VOID *Array,
+ IN UINT8 Type,
+ IN UINTN Index,
+ IN UINT64 Value
+ )
+{
+
+ ASSERT (Array != NULL);
+
+ switch (Type) {
+ case EFI_IFR_TYPE_NUM_SIZE_8:
+ *(((UINT8 *) Array) + Index) = (UINT8) Value;
+ break;
+
+ case EFI_IFR_TYPE_NUM_SIZE_16:
+ *(((UINT16 *) Array) + Index) = (UINT16) Value;
+ break;
+
+ case EFI_IFR_TYPE_NUM_SIZE_32:
+ *(((UINT32 *) Array) + Index) = (UINT32) Value;
+ break;
+
+ case EFI_IFR_TYPE_NUM_SIZE_64:
+ *(((UINT64 *) Array) + Index) = (UINT64) Value;
+ break;
+
+ default:
+ break;
+ }
+}
+
+/**
Add empty function for event process function.
@param Event The Event need to be process
@@ -1283,7 +1325,9 @@ DriverCallback (
EFI_STRING Results;
UINT32 ProgressErr;
CHAR16 *TmpStr;
-
+ UINTN Index;
+ UINT64 BufferValue;
+
if (((Value == NULL) && (Action != EFI_BROWSER_ACTION_FORM_OPEN) && (Action != EFI_BROWSER_ACTION_FORM_CLOSE))||
(ActionRequest == NULL)) {
return EFI_INVALID_PARAMETER;
@@ -1293,6 +1337,7 @@ DriverCallback (
FormId = 0;
ProgressErr = 0;
Status = EFI_SUCCESS;
+ BufferValue = 3;
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
switch (Action) {
@@ -1470,6 +1515,12 @@ DriverCallback (
Value->u8 = DEFAULT_CLASS_STANDARD_VALUE;
break;
+ case 0x1252:
+ for (Index = 0; Index < 3; Index ++) {
+ SetArrayData (Value, EFI_IFR_TYPE_NUM_SIZE_8, Index, BufferValue--);
+ }
+ break;
+
default:
Status = EFI_UNSUPPORTED;
break;