Add Example for EFI_BROWSER_ACTION_RETRIEVE callback
authorlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Fri, 13 Nov 2009 07:13:11 +0000 (07:13 +0000)
committerlgao4 <lgao4@de2fecce-e211-0410-80a6-f3fac2684e05>
Fri, 13 Nov 2009 07:13:11 +0000 (07:13 +0000)
git-svn-id: https://edk2.tianocore.org/svn/edk2/trunk@9426 de2fecce-e211-0410-80a6-f3fac2684e05

edk2/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c
edk2/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr

index a3aa251..d40d60d 100644 (file)
@@ -556,6 +556,7 @@ DriverCallback (
   EFI_IFR_GUID_LABEL              *EndLabel;\r
   EFI_INPUT_KEY                   Key;\r
   DRIVER_SAMPLE_CONFIGURATION     *Configuration;\r
+  UINTN                           MyVarSize;\r
 \r
   if (Action == EFI_BROWSER_ACTION_FORM_OPEN) {\r
     //\r
@@ -624,7 +625,6 @@ DriverCallback (
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-\r
   Status = EFI_SUCCESS;\r
   PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);\r
 \r
@@ -821,12 +821,13 @@ DriverCallback (
     // Change an EFI Variable storage (MyEfiVar) asynchronous, this will cause\r
     // the first statement in Form 3 be suppressed\r
     //\r
+    MyVarSize = 1;\r
     MyVar = 111;\r
     Status = gRT->SetVariable(\r
                     L"MyVar",\r
                     &mFormSetGuid,\r
                     EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,\r
-                    1,\r
+                    MyVarSize,\r
                     &MyVar\r
                     );\r
     break;\r
@@ -870,6 +871,21 @@ DriverCallback (
 \r
     break;\r
 \r
+  case 0x1111:\r
+    //\r
+    // EfiVarstore question takes sample action (print value as debug information) \r
+    // after read/write question.\r
+    //\r
+    MyVarSize = 1;\r
+    Status = gRT->GetVariable(\r
+                    L"MyVar",\r
+                    &mFormSetGuid,\r
+                    NULL,\r
+                    &MyVarSize,\r
+                    &MyVar\r
+                    );\r
+    ASSERT_EFI_ERROR (Status);\r
+    DEBUG ((DEBUG_INFO, "EfiVarstore question: Tall value is %d with value width %d\n", MyVar, MyVarSize));\r
   default:\r
     break;\r
   }\r
index e8aae2b..d5f906b 100644 (file)
@@ -84,7 +84,7 @@ formset
   // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI)\r
   //\r
   efivarstore MyEfiVar,                           // Define referenced name in vfr\r
-    attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS,  // EFI variable attribures\r
+    attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE,  // EFI variable attribures\r
     name      = STRING_TOKEN(STR_VAR_NAME),       // EFI variable name\r
     varsize   = 1,                                // Size of the EFI variable\r
     guid      = FORMSET_GUID;                     // EFI variable GUID\r
@@ -153,9 +153,9 @@ formset
     oneof varid  = MyIfrNVData.BootOrderLarge,\r
       prompt      = STRING_TOKEN(STR_ONE_OF_PROMPT),\r
       help        = STRING_TOKEN(STR_ONE_OF_HELP),\r
-      default value = cond (questionref(MyOneOf) == 0x0 ? 0 : 1),\r
+      default value = cond (pushthis == 0 ? 0 : cond ((questionref(MyOneOf) >> 0x4 & 0xF00) == 0x0 + 0x2 ? 0 : 1)),\r
       option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = 0;\r
-      option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = DEFAULT;\r
+      option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = 0;\r
     endoneof;\r
 \r
     grayoutif  ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;\r
@@ -313,9 +313,10 @@ formset
     endnumeric;\r
 \r
     numeric varid   = MyEfiVar,                           // Reference of EFI variable storage\r
+            questionid  = 0x1111,\r
             prompt  = STRING_TOKEN(STR_TALL_HEX_PROMPT),\r
             help    = STRING_TOKEN(STR_NUMERIC_HELP1),\r
-            flags   = DISPLAY_UINT_HEX,                   // Display in HEX format (if not specified, default is in decimal format)\r
+            flags   = DISPLAY_UINT_HEX | INTERACTIVE,     // Display in HEX format (if not specified, default is in decimal format)\r
             minimum = 0,\r
             maximum = 250,\r
             default = 175,\r