X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdeModulePkg%2FUniversal%2FDriverSampleDxe%2FVfr.vfr;h=d005e7feedb533242c5565669b198170b33b4820;hp=1366e827f21810202953ba5d07fed27f216b2544;hb=d1102dba7210b95e41d06c2338a22ba6af248645;hpb=588fde6c15f60d44248bf42dd1ad545b7c2cbf4f diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr index 1366e827f2..d005e7feed 100644 --- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr +++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr @@ -2,7 +2,7 @@ // // Sample Setup formset. // -// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.
+// Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
// This program and the accompanying materials // are licensed and made available under the terms and conditions of the BSD License // which accompanies this distribution. The full text of the license may be found at @@ -14,6 +14,7 @@ //**/ +#include #include "NVDataStruc.h" // @@ -35,14 +36,6 @@ #define EFI_FRONT_PAGE_SUBCLASS 0x02 #define EFI_SINGLE_USE_SUBCLASS 0x03 -// -// EFI Variable attributes -// -#define EFI_VARIABLE_NON_VOLATILE 0x00000001 -#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x00000002 -#define EFI_VARIABLE_RUNTIME_ACCESS 0x00000004 -#define EFI_VARIABLE_READ_ONLY 0x00000008 - #define EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID \ { 0x85b75607, 0xf7ce, 0x471e, { 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee } } @@ -61,16 +54,16 @@ formset title = STRING_TOKEN(STR_FORM_SET_TITLE), help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP), classguid = EFI_HII_PLATFORM_SETUP_FORMSET_GUID, - + // - // Notes: VfrCompiler will insert a Standard Default Storage declaration + // Notes: VfrCompiler will insert a Standard Default Storage declaration // after the formset declaration. >00000040: 5C 06 00 00 00 00. // So we don't need to declare the Standard Default. // Please check the vfr.lst file for details. // To enable list file for VFR, add "-l" to VfrCompile in [Build.Visual-Form-Representation-File] as follows: // VfrCompile -l --no-pre-processing --output-directory ${d_path} $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.iii // - + // // Define a Buffer Storage (EFI_IFR_VARSTORE) // @@ -83,10 +76,23 @@ formset // Define a EFI variable Storage (EFI_IFR_VARSTORE_EFI) // efivarstore MY_EFI_VARSTORE_DATA, - attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures name = MyEfiVar, guid = DRIVER_SAMPLE_FORMSET_GUID; + // + // Define a Buffer Storage (EFI_IFR_VARSTORE) + // + efivarstore MY_EFI_BITS_VARSTORE_DATA, // This is the data structure type + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures + name = MyEfiBitVar, // Define referenced name in vfr + guid = DRIVER_SAMPLE_FORMSET_GUID; // GUID of this buffer storage + + efivarstore MY_EFI_UNION_DATA, + attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_NON_VOLATILE, // EFI variable attribures + name = MyEfiUnionVar, + guid = DRIVER_SAMPLE_FORMSET_GUID; + // // Define a Name/Value Storage (EFI_IFR_VARSTORE_NAME_VALUE) // @@ -215,7 +221,7 @@ formset option text = STRING_TOKEN(STR_BOOT_OPTION3), value = 3, flags = 0; suppressif ideqval MyIfrNVData.BootOrderLarge == 0; option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = 0; - endif + endif; endlist; // @@ -234,6 +240,7 @@ formset option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 3, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 2, flags = 0; option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 1, flags = 0; + default = {1,2,3}, endlist; endif; @@ -262,7 +269,7 @@ formset option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT; warningif prompt = STRING_TOKEN(STR_WARNING_POPUP), timeout = 5, ideqval MyIfrNVData.TestLateCheck == 0 - endif + endif; endoneof; @@ -275,7 +282,7 @@ formset inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP), ideqid MyIfrNVData.TestLateCheck == MyIfrNVData.TestLateCheck2 - endif + endif; endoneof; @@ -300,7 +307,7 @@ formset maxsize = 40, inconsistentif prompt = STRING_TOKEN(STR_STRING_CHECK_ERROR_POPUP), pushthis != stringref(STRING_TOKEN(STR_STRING_CHECK)) - endif + endif; endstring; // @@ -333,7 +340,7 @@ formset ideqid MyIfrNVData.HowOldAreYouInYearsManual == MyEfiVar.Field8 OR ideqvallist MyIfrNVData.HowOldAreYouInYearsManual == 1 3 5 7 - endif + endif; endnumeric; @@ -408,7 +415,7 @@ formset step = 1, default = 18, defaultstore = MyStandardDefault, // This is standard default value default = 19, defaultstore = MyManufactureDefault, // This is manufacture default value - + endnumeric; endif; @@ -416,7 +423,7 @@ formset questionid = 0x1239, prompt = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_ACCESS_PROMPT), help = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_ACCESS_HELP), - flags = DISPLAY_UINT_HEX | INTERACTIVE, + flags = DISPLAY_UINT_HEX | INTERACTIVE, minimum = 0, maximum = 255, step = 1, @@ -427,54 +434,36 @@ formset questionid = 0x1240, prompt = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_CALLBACK_PROMPT), help = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_CALLBACK_HELP), - flags = DISPLAY_UINT_HEX | INTERACTIVE, + flags = DISPLAY_UINT_HEX | INTERACTIVE, minimum = 0, maximum = 255, step = 1, default = 18, endnumeric; - + + orderedlist + varid = MyIfrNVData.GetDefaultValueFromCallBackForOrderedList, + questionid = 0x1252, + prompt = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_CALLBACK_PROMPT), + help = STRING_TOKEN(STR_DEFAULT_VALUE_FROM_CALLBACK_HELP), + flags = INTERACTIVE, + option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 1, flags = 0; + option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 2, flags = 0; + option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 3, flags = 0; + endlist; + resetbutton defaultstore = MyStandardDefault, prompt = STRING_TOKEN(STR_STANDARD_DEFAULT_PROMPT), help = STRING_TOKEN(STR_STANDARD_DEFAULT_HELP), endresetbutton; - + resetbutton defaultstore = MyManufactureDefault, prompt = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_PROMPT), help = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_HELP), endresetbutton; - // - // Non-interactive password, validate by Setup Browser - // - password varid = MyIfrNVData.WhatIsThePassword, - prompt = STRING_TOKEN(STR_PASSWORD_PROMPT), - help = STRING_TOKEN(STR_PASSWORD_HELP), - minsize = 6, - maxsize = 20, - endpassword; - - string varid = MyIfrNVData.PasswordClearText, - prompt = STRING_TOKEN(STR_MY_STRING_PROMPT), - help = STRING_TOKEN(STR_MY_STRING_HELP), - minsize = 6, - maxsize = 0x14, - endstring; - - // - // Interactive password, validate via ConfigAccess.Callback() - // - password varid = MyIfrNVData.WhatIsThePassword2, - prompt = STRING_TOKEN(STR_PASSWORD_CALLBACK_PROMPT), - help = STRING_TOKEN(STR_PASSWORD_HELP), - flags = INTERACTIVE, - key = 0x2000, - minsize = 6, - maxsize = 20, - endpassword; - // // Sample use case for IFR Security op-code // @@ -483,7 +472,23 @@ formset help = STRING_TOKEN(STR_TEXT_SECRUITY_TEST_HELP), text = STRING_TOKEN(STR_TEXT_SECRUITY_TEST_TEXT); endif; - + + numeric varid = MyEfiVar.SubmittedCallback, + questionid = 0x1250, + prompt = STRING_TOKEN(STR_SUBMITTED_CALLBACK_TEST_PROMPT), + help = STRING_TOKEN(STR_SUBMITTED_CALLBACK_TEST_HELP), + flags = INTERACTIVE, + minimum = 0, + maximum = 255, + default = 18, + endnumeric; + + text + help = STRING_TOKEN(STR_POPUP_TEST_HELP), + text = STRING_TOKEN(STR_POPUP_TEST_PROMPT), + flags = INTERACTIVE, + key = 0x1330; + goto 2, prompt = STRING_TOKEN(STR_GOTO_FORM2), //SecondSetupPage // this too has no end-op and basically it's a jump to a form ONLY help = STRING_TOKEN(STR_GOTO_HELP); @@ -499,26 +504,29 @@ formset goto 5, prompt = STRING_TOKEN(STR_GOTO_FORM5), //FifthSetupPage // this too has no end-op and basically it's a jump to a form ONLY help = STRING_TOKEN(STR_GOTO_FORM5_HELP); - + goto 6, prompt = STRING_TOKEN(STR_GOTO_FORM6), //SixthSetupPage // this too has no end-op and basically it's a jump to a form ONLY help = STRING_TOKEN(STR_GOTO_HELP); - goto + goto formsetguid = DRIVER_SAMPLE_INVENTORY_GUID, formid = 0x1, question = 0x1, prompt = STRING_TOKEN(STR_GOTO_ANOTHER_FORMSET), help = STRING_TOKEN(STR_GOTO_ANOTHER_FORMSET_HELP); - guidop + guidop guid = DRIVER_SAMPLE_FORMSET_GUID, datatype = MY_EFI_VARSTORE_DATA, - data.Field8 = 0x21, + data.Field8 = 0x21, data.Field16 = 0x2121, - data.OrderedList[0] = 0x21, + data.OrderedList[0] = 0x21, endguidop; + goto 7, + prompt = STRING_TOKEN(STR_GOTO_FORM7), + help = STRING_TOKEN(STR_GOTO_FORM7_HELP); endform; @@ -537,7 +545,7 @@ formset ideqval Date.Day == 31 AND ideqvallist Date.Month == 2 4 6 9 11 - endif + endif; // // If the day is 30 AND month is 2 @@ -546,7 +554,7 @@ formset ideqval Date.Day == 30 AND ideqval Date.Month == 2 - endif + endif; // // If the day is 29 AND month is 2 AND it year is NOT a leapyear @@ -558,7 +566,7 @@ formset AND NOT ideqvallist Date.Year == 2004 2008 20012 20016 2020 2024 2028 2032 2036 - endif + endif; enddate; @@ -579,16 +587,16 @@ formset help = STRING_TOKEN(STR_TIME_HELP), flags = STORAGE_TIME, endtime; - - time - name = MyTime, - varid = MyIfrNVData.Time, - prompt = STRING_TOKEN(STR_TIME_PROMPT), - help = STRING_TOKEN(STR_TIME_PROMPT), + + time + name = MyTime, + varid = MyIfrNVData.Time, + prompt = STRING_TOKEN(STR_TIME_PROMPT), + help = STRING_TOKEN(STR_TIME_PROMPT), flags = STORAGE_NORMAL | SECOND_SUPPRESS, - default = 15:33:33, + default = 15:33:33, endtime; - + checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry, prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT), help = STRING_TOKEN(STR_CHECK_BOX_HELP), @@ -608,7 +616,7 @@ formset prompt = STRING_TOKEN(STR_GOTO_FORM1), //MainSetupPage // this too has no end-op and basically it's a jump to a form ONLY help = STRING_TOKEN(STR_GOTO_HELP); - goto + goto varid = MyIfrNVData.RefData, prompt = STRING_TOKEN(STR_GOTO_DYNAMIC3), help = STRING_TOKEN(STR_GOTO_DYNAMIC3_HELP), @@ -617,15 +625,15 @@ formset // // Set the defult value, format is QuestionId; FormId; FormsetGuid; Device Path String Token // - default = 0;0;ZERO_GUID;STRING_TOKEN(STR_NULL_STRING), + default = 0;0;ZERO_GUID;STRING_TOKEN(STR_NULL_STRING), ; // goto opcode end flag. - goto + goto prompt = STRING_TOKEN(STR_GOTO_DYNAMIC4), help = STRING_TOKEN(STR_GOTO_DYNAMIC4_HELP), flags = INTERACTIVE, key = 0x1249; - + endform; endif; @@ -654,7 +662,7 @@ formset endnumeric; grayoutif match2 (stringref(STRING_TOKEN(STR_PATTERN)), stringref(STRING_TOKEN(STR_STRING)), PERL_GUID); - numeric + numeric varid = MyIfrNVData.Match2, prompt = STRING_TOKEN(STR_MATCH2_PROMPT), help = STRING_TOKEN(STR_MATCH2_HELP), @@ -668,19 +676,19 @@ formset endform; - formmap formid = 4, - maptitle = STRING_TOKEN(STR_SAMPL_MAP_METHOD); + formmap formid = 4, + maptitle = STRING_TOKEN(STR_SAMPL_MAP_METHOD); mapguid = DRIVER_SAMPLE_FORMSET_GUID; - maptitle = STRING_TOKEN(STR_STANDARD_MAP_METHOD); + maptitle = STRING_TOKEN(STR_STANDARD_MAP_METHOD); mapguid = EFI_HII_STANDARD_FORM_GUID; - oneof varid = MyIfrNVData.SerialPortNo, + oneof varid = MyIfrNVData.SerialPortNo, prompt = STRING_TOKEN(STR_SERIAL_PORT), help = STRING_TOKEN(STR_ONE_OF_HELP), read cond (get(MyIfrNVData.SerialPortStatus) != 0 ? 0 : cond ((get(MyIfrNVData.SerialPortIo) & 0xF00) >> 0x8 == get(MyIfrNVData.SerialPortIrq) - 1 ? UNDEFINED : map (get(MyIfrNVData.SerialPortIo) : 0x3f8,1; 0x2F8,2; 0x3E8,3; 0x2E8,4;))); write set(MyIfrNVData.SerialPortStatus, pushthis != 0) AND set(MyIfrNVData.SerialPortIo, map (pushthis : 1,0x3F8; 2,0x2F8; 3,0x3E8; 4,0x2E8;)) AND set (MyIfrNVData.SerialPortIrq, map (pushthis: 1,4; 2,3; 3,4; 4,3;)); - + option text = STRING_TOKEN(STR_SERIAL_PORT_DISABLE), value = 0x0, flags = DEFAULT; option text = STRING_TOKEN(STR_SERIAL_PORT1), value = 0x1, flags = 0; option text = STRING_TOKEN(STR_SERIAL_PORT2), value = 0x2, flags = 0; @@ -697,10 +705,10 @@ formset grayoutif TRUE; suppressif ideqval MyIfrNVData.SerialPortStatus == 0; - oneof varid = MyIfrNVData.SerialPortIo, + oneof varid = MyIfrNVData.SerialPortIo, prompt = STRING_TOKEN(STR_SERIAL_PORT_IO_ADDRESS), help = STRING_TOKEN(STR_ONE_OF_HELP), - + option text = STRING_TOKEN(STR_SERIAL_PORT1_IOADDR), value = 0x3F8, flags = DEFAULT; option text = STRING_TOKEN(STR_SERIAL_PORT2_IOADDR), value = 0x2F8, flags = 0; option text = STRING_TOKEN(STR_SERIAL_PORT3_IOADDR), value = 0x3E8, flags = 0; @@ -711,10 +719,10 @@ formset grayoutif TRUE; suppressif ideqval MyIfrNVData.SerialPortStatus == 0; - oneof varid = MyIfrNVData.SerialPortIrq, + oneof varid = MyIfrNVData.SerialPortIrq, prompt = STRING_TOKEN(STR_SERIAL_PORT_IRQ), help = STRING_TOKEN(STR_ONE_OF_HELP), - + option text = STRING_TOKEN(STR_SERIAL_PORT13_IRQ), value = 0x4, flags = DEFAULT; option text = STRING_TOKEN(STR_SERIAL_PORT24_IRQ), value = 0x3, flags = 0; endoneof; @@ -747,7 +755,7 @@ formset endform; form formid = 6, // Form to show the refresh guid group op-code - title = STRING_TOKEN(STR_FORM6_TITLE); + title = STRING_TOKEN(STR_FORM6_TITLE); text help = STRING_TOKEN(STR_TEXT_REFRESH_GUID), @@ -781,4 +789,150 @@ formset endform; + + form formid = 7, // Form to show the question refer to union and bit Varstore + title = STRING_TOKEN(STR_FORM7_TITLE); + + subtitle text = STRING_TOKEN(STR_NEST_BIT_EFI_VARSTORE); + + checkbox varid = MyEfiBitVar.BitsData.NestBitCheckbox, + prompt = STRING_TOKEN(STR_BIT_NEST_CHECK_BOX_PROMPT), + help = STRING_TOKEN(STR_BIT_NEST_CHECK_BOX_HELP), + flags = CHECKBOX_DEFAULT, + endcheckbox; + + oneof varid = MyEfiBitVar.BitsData.NestBitOneof, + prompt = STRING_TOKEN(STR_ONE_OF_BIT_NEST_PROMPT), + help = STRING_TOKEN(STR_ONE_OF_BIT_NEST_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 1, flags = DEFAULT; + endoneof; + + numeric varid = MyEfiBitVar.BitsData.NestBitNumeric, + questionid = 0x6666, + prompt = STRING_TOKEN(STR_BIT_NEST_NUMERIC_PROMPT), + help = STRING_TOKEN(STR_BIT_NEST_NUMERIC_DEFAULT_HELP), + flags = DISPLAY_UINT_HEX | INTERACTIVE, + minimum = 2, + maximum = 15, + step = 1, + endnumeric; + + oneof varid = MyEfiBitVar.BitsData.NestByteField, + prompt = STRING_TOKEN(BYTE_QUESTION_NEST_BIT_PROMPT), + help = STRING_TOKEN(BYTE_QUESTION_NEST_BIT_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 1, flags = DEFAULT; + endoneof; + + subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2); + subtitle text = STRING_TOKEN(STR_BIT_EFI_VARSTORE); + + checkbox varid = MyEfiBitVar.EfiBitCheckbox, + prompt = STRING_TOKEN(STR_BIT_CHECK_BOX_PROMPT), + help = STRING_TOKEN(STR_BIT_CHECK_BOX_HELP), + flags = CHECKBOX_DEFAULT, + endcheckbox; + + grayoutif ideqval MyEfiBitVar.EfiBitGrayoutTest == 0; + numeric varid = MyEfiBitVar.EfiBitNumeric, + prompt = STRING_TOKEN(STR_BIT_NUMERIC_PROMPT), + help = STRING_TOKEN(STR_BIT_NUMERIC_HELP), + minimum = 0, + maximum = 7, + step = 0, + default = 4, defaultstore = MyStandardDefault, + default = 5, defaultstore = MyManufactureDefault, + endnumeric; + endif; + + oneof varid = MyEfiBitVar.EfiBitOneof, + questionid = 0x9999, + prompt = STRING_TOKEN(STR_ONE_OF_BIT_PROMPT), + help = STRING_TOKEN(STR_ONE_OF_BIT_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = DEFAULT; + endoneof; + + subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2); + subtitle text = STRING_TOKEN(STR_NEST_BIT_VARSTORE); + checkbox varid = MyIfrNVData.MyBitData.NestBitCheckbox, + prompt = STRING_TOKEN(STR_BIT_NEST_CHECK_BOX_PROMPT), + help = STRING_TOKEN(STR_BIT_NEST_CHECK_BOX_HELP), + flags = CHECKBOX_DEFAULT, + endcheckbox; + + oneof varid = MyIfrNVData.MyBitData.NestBitOneof, + prompt = STRING_TOKEN(STR_ONE_OF_BIT_NEST_PROMPT), + help = STRING_TOKEN(STR_ONE_OF_BIT_NEST_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 1, flags = DEFAULT; + endoneof; + + numeric varid = MyIfrNVData.MyBitData.NestBitNumeric, + prompt = STRING_TOKEN(STR_BIT_NEST_NUMERIC_PROMPT), + help = STRING_TOKEN(STR_BIT_NEST_NUMERIC_HELP), + minimum = 0, + maximum = 7, + step = 0, + default = 6, defaultstore = MyStandardDefault, + default = 7, defaultstore = MyManufactureDefault, + endnumeric; + + oneof varid = MyIfrNVData.MyBitData.NestByteField, + prompt = STRING_TOKEN(BYTE_QUESTION_NEST_BIT_PROMPT), + help = STRING_TOKEN(BYTE_QUESTION_NEST_BIT_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 1, flags = DEFAULT; + endoneof; + + subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2); + subtitle text = STRING_TOKEN(STR_BIT_VARSTORE); + + oneof varid = MyIfrNVData.BitOneof, + prompt = STRING_TOKEN(STR_ONE_OF_BIT_PROMPT), + help = STRING_TOKEN(STR_ONE_OF_BIT_HELP), + option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0, flags = MANUFACTURING; + option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 1, flags = DEFAULT; + endoneof; + + checkbox varid = MyIfrNVData.BitCheckbox, + prompt = STRING_TOKEN(STR_BIT_CHECK_BOX_PROMPT), + help = STRING_TOKEN(STR_BIT_CHECK_BOX_HELP), + flags = CHECKBOX_DEFAULT, + endcheckbox; + + numeric varid = MyIfrNVData.BitNumeric, + prompt = STRING_TOKEN(STR_BIT_NUMERIC_PROMPT), + help = STRING_TOKEN(STR_BUFFER_BIT_NUMERIC_HELP), + minimum = 0, + maximum = 20, + step = 0, + default = 16, defaultstore = MyStandardDefault, + default = 17, defaultstore = MyManufactureDefault, + endnumeric; + + subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2); + subtitle text = STRING_TOKEN(STR_UNION_EFI_VARSTORE); + + numeric varid = MyEfiUnionVar.UnionNumeric, + prompt = STRING_TOKEN(STR_UNION_BYTE_NUMERIC_PROMPT), + help = STRING_TOKEN(STR_UNION_BYTE_NUMERIC_HELP), + minimum = 0, + maximum = 20, + step = 0, + default = 7, defaultstore = MyStandardDefault, + default = 8, defaultstore = MyManufactureDefault, + endnumeric; + + guidop + guid = DRIVER_SAMPLE_FORMSET_GUID, + datatype = MY_EFI_BITS_VARSTORE_DATA, + data.EfiBitNumeric = 1, + data.EfiBitOneof = 1, + data.EfiBitCheckbox = 1, + endguidop; + + endform; + endformset;