audk/IntelFrameworkModulePkg/Universal/DriverSampleDxe/Vfr.vfr

623 lines
22 KiB
Plaintext

// *++
//
// Copyright (c) 2006, 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
// http://opensource.org/licenses/bsd-license.php
//
// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
//
// Module Name:
//
// Vfr.vfr
//
// Abstract:
//
// Sample Setup formset
//
// Revision History:
//
// --*/
#include "NVDataStruc.h"
typedef struct {
UINT8 Field8;
UINT16 Field16;
UINT8 OrderedList[3];
} MyIfrNVData2;
typedef struct {
UINT8 Field8;
UINT16 Field16;
UINT8 OrderedList[3];
} MyIfrNVData3;
#define MY_TEXT_KEY 0x100
#define LABEL_1_VALUE 0x01
#define LABEL_2_VALUE 0x1000
#define LABEL_UPDATE_BBS 0x2222
#define LABEL_END_UPDATE_BBS 0x2223
formset
guid = FORMSET_GUID,
title = STRING_TOKEN(STR_FORM_SET_TITLE),
help = STRING_TOKEN(STR_FORM_SET_TITLE_HELP),
class = 0x10,
subclass = 0,
varstore MyIfrNVData2, key = 0x1234, name = MY_DATA2, guid = FORMSET_GUID;
varstore MyIfrNVData, key = 0x1324, name = MY_DATA1, guid = FORMSET_GUID;
varstore MyIfrNVData3, key = 0x4321, name = MY_DATA3, guid = FORMSET_GUID;
form formid = 1,
title = STRING_TOKEN(STR_FORM1_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT);
subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2);
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 1,
align center;
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 2,
align left;
banner
title = STRING_TOKEN(STR_BANNER_TITLE),
line 2,
align right;
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_CPU_STRING),
text = STRING_TOKEN(STR_CPU_STRING2),
flags = 0,
key = 0;
text
help = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
text = STRING_TOKEN(STR_EXIT_TEXT),
flags = INTERACTIVE,
key = 0x1237;
oneof varid = MyIfrNVData.SuppressGrayOutSomething,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT4), value = 0x0, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT5), value = 0x1, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT6), value = 0x2, flags = DEFAULT;
endoneof;
oneof varid = MyIfrNVData.BootOrderLarge,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = INTERACTIVE, key = 1;
option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = INTERACTIVE | DEFAULT, key = 2;
endoneof;
grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;
label 0;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = 1, // Flags behavior for checkbox is overloaded so that it equals a DEFAULT value. 1 = ON, 0 = off
key = 0,
endcheckbox;
endif;
//
// Ordered list:
// sizeof(MyIfrNVData) storage must be UINT8 array, and
// size written for the variable must be size of the entire
// variable.
//
//
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x0;
label LABEL_UPDATE_BBS;
orderedlist
varid = MyIfrNVData.BootOrder,
prompt = STRING_TOKEN(STR_BOOT_OPTIONS),
help = STRING_TOKEN(STR_NULL_STRING),
option text = STRING_TOKEN(STR_BOOT_OPTION2), value = 2, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION1), value = 1, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION3), value = 3, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_BOOT_OPTION4), value = 4, flags = RESET_REQUIRED;
endlist;
label LABEL_END_UPDATE_BBS;
endif;
suppressif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x2;
orderedlist
varid = MyIfrNVData.OrderedList,
prompt = STRING_TOKEN(STR_TEST_OPCODE),
help = STRING_TOKEN(STR_TEXT_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 4, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 3, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 2, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_TEXT_HELP), value = 1, flags = RESET_REQUIRED;
endlist;
endif;
label 100;
goto 0x1234,
prompt = STRING_TOKEN(STR_GOTO_DYNAMIC),
help = STRING_TOKEN(STR_GOTO_HELP),
flags = INTERACTIVE,
key = 0x1234;
goto 0x1234,
prompt = STRING_TOKEN(STR_GOTO_DYNAMIC2),
help = STRING_TOKEN(STR_GOTO_HELP),
flags = INTERACTIVE,
key = 0x1235;
//
// VARSTORE tests
//
// Till now, been using variable NvData (must be reserved)
// now we do a varselect for variable NvData3
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData3.Field16 == MyIfrNVData3.Field16
endif;
// now we do a varselect_pair for variable NvData2 and NvData3
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData2.Field16 == MyIfrNVData3.Field16
endif;
// now we do a varselect_pair for variable NvData and NvData2
// inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
// ideqid MyIfrNVData2.Field16 == MyIfrNVData.TestLateCheck
// endif;
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData.TestLateCheck == MyIfrNVData.TestLateCheck2
endif;
oneof varid = MyIfrNVData.TestLateCheck,
prompt = STRING_TOKEN(STR_TEST_OPCODE),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = LATE_CHECK | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = LATE_CHECK | DEFAULT | RESET_REQUIRED;
endoneof;
oneof varid = MyIfrNVData.TestLateCheck2,
prompt = STRING_TOKEN(STR_TEST_OPCODE2),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = LATE_CHECK | DEFAULT | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = LATE_CHECK | RESET_REQUIRED;
endoneof;
oneof varid = MyIfrNVData.QuestionAboutTreeHugging,
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT | RESET_REQUIRED;
option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 0x03, flags = RESET_REQUIRED;
endoneof;
string varid = MyIfrNVData.MyStringData,
prompt = STRING_TOKEN(STR_MY_STRING_PROMPT2),
help = STRING_TOKEN(STR_MY_STRING_HELP2),
flags = INTERACTIVE,
key = 0x1234,
minsize = 6,
maxsize = 0x14,
endstring;
text
help = STRING_TOKEN(STR_GRAYOUT_TEST),
text = STRING_TOKEN(STR_GRAYOUT_TEST),
text = STRING_TOKEN(STR_GRAYOUT_TEST),
flags = INTERACTIVE,
key = 0x1555;
text
help = STRING_TOKEN(STR_SUPPRESS_TEST),
text = STRING_TOKEN(STR_SUPPRESS_TEST),
text = STRING_TOKEN(STR_SUPPRESS_TEST),
flags = INTERACTIVE,
key = 0x1556;
text
help = STRING_TOKEN(STR_CLEAR_TEST),
text = STRING_TOKEN(STR_CLEAR_TEST),
text = STRING_TOKEN(STR_CLEAR_TEST),
flags = INTERACTIVE,
key = 0x1557;
grayoutif vareqval var(VAR_EQ_TEST_NAME) == 0x1;
suppressif vareqval var(VAR_EQ_TEST_NAME) == 0x1000;
label 30;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = 1,
key = 0,
endcheckbox;
endif;
numeric varid = MyIfrNVData.HowOldAreYouInYearsManual,
prompt = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP0),
minimum = 0,
maximum = 0xf0, // 0xf0 = 240 in decimal
step = 0, // Stepping of 0 equates to a manual entering
// of a value, otherwise it will auto-increment
// with a left/right arrow
default = 21,
endnumeric;
numeric varid = MyIfrNVData.HowTallAreYouManual,
prompt = STRING_TOKEN(STR_TALL_MANUAL_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP1),
minimum = 0,
maximum = 300,
step = 0, // Stepping of 0 equates to a manual entering
// of a value, otherwise it will auto-increment
// with a left/right arrow
default = 175,
endnumeric;
inventory
help = STRING_TOKEN(STR_INVENTORY_HELP),
text = STRING_TOKEN(STR_INVENTORY_TEXT1),
text = STRING_TOKEN(STR_INVENTORY_TEXT2);
restore defaults,
formid = 4,
prompt = STRING_TOKEN(STR_RESTORE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_RESTORE_DEFAULTS_HELP),
flags = 0,
key = 0;
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP),
flags = 0,
key = 0;
//
// Case with no flags or key
//
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP);
//
// Case with no key
//
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP),
flags = 0;
//
// Case with no flags
//
save defaults,
formid = 4,
prompt = STRING_TOKEN(STR_SAVE_DEFAULTS_PROMPT),
help = STRING_TOKEN(STR_SAVE_DEFAULTS_HELP),
key = 0;
label LABEL_2_VALUE;
grayoutif ideqval MyIfrNVData.HowOldAreYouInYearsManual == 23 AND ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
numeric varid = MyIfrNVData.HowOldAreYouInYears,
prompt = STRING_TOKEN(STR_NUMERIC_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP2),
minimum = 0,
maximum = 243,
step = 3,
default = 18,
endnumeric;
label LABEL_1_VALUE;
//
// Numeric with no step or default specified
//
numeric varid = MyIfrNVData.HowTallAreYou,
prompt = STRING_TOKEN(STR_NUMERIC_PROMPT1),
help = STRING_TOKEN(STR_NUMERIC_HELP3),
minimum = 0,
maximum = 190,
// step = 1, // Stepping of 1 if not specified
// default = minimum; // if not specified
endnumeric;
endif;
string varid = MyIfrNVData.MyStringData,
prompt = STRING_TOKEN(STR_MY_STRING_PROMPT),
help = STRING_TOKEN(STR_MY_STRING_HELP),
minsize = 6,
maxsize = 0x14,
endstring;
password varid = MyIfrNVData.WhatIsThePassword,
prompt = STRING_TOKEN(STR_PASSWORD_PROMPT),
help = STRING_TOKEN(STR_PASSWORD_HELP),
minsize = 6,
maxsize = 20, // new opcode
encoding = 1,
endpassword;
password varid = MyIfrNVData.WhatIsThePassword2,
prompt = STRING_TOKEN(STR_PASSWORD_PROMPT),
help = STRING_TOKEN(STR_PASSWORD_HELP),
minsize = 6,
maxsize = 20, // new opcode
encoding = 1,
endpassword;
//
// Test with flags and key fields
//
password varid = MyIfrNVData.WhatIsThePassword,
prompt = STRING_TOKEN(STR_PASSWORD_PROMPT),
help = STRING_TOKEN(STR_PASSWORD_HELP),
flags = INTERACTIVE,
key = 0x2000,
minsize = 6,
maxsize = 20, // new opcode
encoding = 1,
endpassword;
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);
goto 3,
prompt = STRING_TOKEN(STR_GOTO_FORM3), //ThirdSetupPage // this too has no end-op and basically it's a jump to a form ONLY
help = STRING_TOKEN(STR_GOTO_HELP);
endform;
form formid = 2, // SecondSetupPage,
title = STRING_TOKEN(STR_FORM2_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
date year varid = Date.Year, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_YEAR_HELP),
minimum = 1998,
maximum = 2099,
step = 1,
default = 2004,
month varid = Date.Month, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_MONTH_HELP),
minimum = 1,
maximum = 12,
step = 1,
default = 1,
day varid = Date.Day, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_DAY_HELP),
minimum = 1,
maximum = 31,
step = 0x1,
default = 1,
enddate;
time hour varid = Time.Hours, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_HOUR_HELP),
minimum = 0,
maximum = 23,
step = 1,
default = 0,
minute varid = Time.Minutes, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_MINUTE_HELP),
minimum = 0,
maximum = 59,
step = 1,
default = 0,
second varid = Time.Seconds, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_SECOND_HELP),
minimum = 0,
maximum = 59,
step = 1,
default = 0,
endtime;
date year varid = Date.Year, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_YEAR_HELP),
minimum = 1939,
maximum = 2101,
step = 1,
default = 1964,
month varid = Date.Month, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_MONTH_HELP),
minimum = 1,
maximum = 12,
step = 1,
default = 1,
day varid = Date.Day, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_DATE_PROMPT),
help = STRING_TOKEN(STR_DATE_DAY_HELP),
minimum = 1,
maximum = 31,
step = 0x1,
default = 1,
enddate;
time hour varid = Time.Hours, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_HOUR_HELP),
minimum = 0,
maximum = 23,
step = 1,
default = 0,
minute varid = Time.Minutes, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_MINUTE_HELP),
minimum = 0,
maximum = 59,
step = 1,
default = 0,
second varid = Time.Seconds, // Note that it is a member of NULL, so the RTC will be the system resource to retrieve and save from
prompt = STRING_TOKEN(STR_TIME_PROMPT),
help = STRING_TOKEN(STR_TIME_SECOND_HELP),
minimum = 0,
maximum = 59,
step = 1,
default = 0,
endtime;
grayoutif
ideqval Date.Day == 21
AND
ideqval Date.Month == 8;
hidden value = 32, key = 0x7777;
endif; // grayoutif
suppressif
ideqval Date.Day == 8
AND
ideqval Date.Month == 21;
hidden value = 32, key = 0x7777;
endif; // suppressif
hidden value = 32, key = 0x1234;
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqval MyIfrNVData.HowOldAreYouInYearsManual == 4
endif;
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqvallist MyIfrNVData.HowOldAreYouInYearsManual == 1 2 3 4
endif;
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqid MyIfrNVData.HowOldAreYouInYearsManual == MyIfrNVData.MyFavoriteNumber
endif;
// grayoutif
//
// If the day is 31 AND months is any of the following 2, 4, 6, 9, 11
//
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqval Date.Day == 31
AND
ideqvallist Date.Month == 2 4 6 9 11
endif;
//
// If the day is 30 AND month is 2
//
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqval Date.Day == 30
AND
ideqval Date.Month == 2
endif;
//
// If the day is 29 AND month is 2 AND it year is NOT a leapyear
//
inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
ideqval Date.Day == 0x1D
AND
ideqval Date.Month == 2
AND
NOT
ideqvallist Date.Year == 2004 2008 20012 20016 2020 2024 2028 2032 2036
endif;
checkbox varid = MyIfrNVData.ChooseToActivateNuclearWeaponry,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = 1,
key = 0,
endcheckbox;
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_TEXT_TEXT_1);
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_TEXT_TEXT_1),
text = STRING_TOKEN(STR_TEXT_TEXT_2),
flags = 0,
key = MY_TEXT_KEY;
goto 1,
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);
endform;
form formid = 3, title = STRING_TOKEN(STR_FORM3_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
grayoutif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_TEXT_TEXT_1);
endif; //end grayoutif
text
help = STRING_TOKEN(STR_TEXT_HELP),
text = STRING_TOKEN(STR_TEXT_TEXT_1);
endform;
form formid = 4, title = STRING_TOKEN(STR_FORM3_TITLE);
endform;
form formid = 0x1234, // Dynamically created page,
title = STRING_TOKEN(STR_DYNAMIC_TITLE); // note formid is a variable (for readability) (UINT16) - also added Form to the line to signify the Op-Code
label 0x1234;
endform;
endformset;