2.11 VFR Form Definition
vfrFormDefinition ::=
"form" "formid" "=" Number ","
"title" "=" getStringId ";"
(
vfrStatementImage
| vfrStatementLocked
| vfrStatementRules
| vfrStatementDefault
| vfrStatementStat
| vfrStatementQuestions
| vfrStatementConditional
| vfrStatementLabel
| vfrStatementBanner
| vfrStatementExtension
| vfrStatementModal
)*
"endform" ";"
Note:
formid
must be unique for each form statement in a given formset.None.
vfrFormMapDefinition ::=
"formmap" "formid" "=" Number ","
(
"maptitle" "=" getStringId ";"
"mapguid" "=" guidDefinition ";"
)*
(
vfrStatementImage
| vfrStatementLocked
| vfrStatementRules
| vfrStatementDefault
| vfrStatementStat
| vfrStatementQuestions
| vfrStatementConditional
| vfrStatementLabel
| vfrStatementBanner
| vfrStatementExtension
| vfrStatementModal
)*
"endform" ";"
Note:
formid
must be unique for each form statement in a given formset.None.
vfrStatementImage ::=
vfrImageTag ";"
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementLocked ::=
vfrLockedTag ";"
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementRules ::=
"rule" StringIdentifier ","
vfrStatementExpression
"endrule" ";"
StringIdentifier
is the name that can be referenced by a question. It should be unique in the formset.rule MyRule, 1 + 2
endrule;
vfrStatementStat ::=
vfrStatementSubTitle
| vfrStatementStaticText
| vfrStatementCrossReference
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementSubTitle ::=
"subtitle"
"text" "=" getStringId
{ "," "flags" "=" vfrSubtitleFlags }
(
{ "," vfrStatementStatTagList } ";"
|
{ "," vfrStatementStatTagList }
{ "," (vfrStatementStat | vfrStatementQuestions)*}
"endsubtitle" ";"
)
vfrSubtitleFlags ::=
subtitleFlagsField ( "|" subtitleFlagsField )* ";"
subtitleFlagsField ::=
Number
| "HORIZONTAL"
Note:
flags
is optional, and the default value is 0.subtitle
text = STRING_TOKEN(STR_SUBTITLE_TEXT),
flags = HORIZONTAL;
subtitle
text = STRING_TOKEN(STR_SUBTITLE_TEXT),
text
help = STRING_TOKEN(STR_TEXT_TEXT),
text = STRING_TOKEN(STR_TEXT_TEXT);
flags = RESET_REQUIRED,
key = 0x0001;
endsubtitle;
vfrStatementStaticText ::=
"text"
"help" "=" getStringId ","
"text" "=" getStringId
{ "," "text" "=" getStringId }
{
"," "flags" "=" staticTextFlagsField ( "|" staticTextFlagsField )*
"," "key" "=" Number
}
{ "," vfrStatementStatTagList } ";"
staticTextFlagsField ::=
Number
| questionheaderFlagsField
Note:
flags
is optional. The default value is 0.If
EFI_IFR_FLAGS_CALLBACK
is set in flags
then it will generate an EFI_IFR_ACTION
op-code. Otherwise, it generates the EFI_IFR_TEXT
op-code.The value of
key
will be used as a question ID.Generates
EFI_IFR_TEXT
:text
help = STRING_TOKEN(STR_TEXT_TEXT),
text = STRING_TOKEN(STR_TEXT_TEXT);
Generates
EFI_IFR_ACTION
:text
help = STRING_TOKEN(STR_TEXT_TEXT),
text = STRING_TOKEN(STR_TEXT_TEXT);
flags = RESET_REQUIRED,
key = 0x0001;
vfrStatementCrossReference ::=
vfrStatementGoto
| vfrStatementResetButton
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementGoto ::=
"goto"
{
(
"devicePath" "=" getStringId ","
"formsetguid" "=" guidDefinition ","
"formid" "=" Number ","
"question" "=" Number ","
)
|
(
"formsetguid" "=" guidDefinition ","
"formid" "=" Number ","
"question" "=" Number ","
)
|
(
"formid" "=" Number ","
"question" "="
(
StringIdentifier ","
| Number ","
)
)
|
(
Number ","
)
}
vfrQuestionHeader
{ "," "flags" "=" vfrGotoFlags }
{ "," "key" "=" Number }
{ "," vfrStatementQuestionOptionList }
";"
vfrGotoFlags ::=
gotoFlagsField ( "|" gotoFlagsField )*
gotoFlagsField ::=
Number
| questionheaderFlagsField
The value of
key
is used as a question ID.Generate
EFI_IFR_REF
without key
goto 1,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
Generate
EFI_IFR_REF
with key
goto 1,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
key = 0x1234;
Generate
EFI_IFR_REF2
goto
formid = 1,
question = QuesttionRef,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
Generate
EFI_IFR_REF3
goto
formsetguid = FORMSET_GUID,
formid = 1,
question = QuesttionRef,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
Generate
EFI_IFR_REF4
goto
devicepath = STRING_TOKEN(STR_DEVICE_PATH),
formsetguid = FORMSET_GUID,
formid = 1,
question = QuesttionRef,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
Generate
EFI_IFR_REF5
without varid
goto
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP);
Generate
EFI_IFR_REF5
with varid
goto
varid = MySTestData.mFieldRef,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN STR_GOTO_HELP);
default = FID;QID;GuidValue;STRING_TOKEN(STR_DEVICE_PATH),
;
Generate
EFI_IFR_REF
with option codegoto 1,
prompt = STRING_TOKEN(STR_GOTO_PROMPT),
help = STRING_TOKEN(STR_GOTO_HELP),
refresh interval = 3
;
vfrStatementResetButton ::=
"resetbutton"
"defaultStore" "=" StringIdentifier ","
vfrStatementHeader ","
{ vfrStatementStatTagList "," }
"endresetbutton" ";"
Note:
defaultStore
should point to the default store defined before.resetbutton
defaultstore = DefaultStoreRef,
prompt = STRING_TOKEN(STR_RESET_BUTTON_PROMPT),
help = STRING_TOKEN(STR_RESET_BUTTON_HELP),
endresetbutton;
vfrStatementQuestions ::=
vfrStatementBooleanType
| vfrStatementDate
| vfrStatementNumericType
| vfrStatementStringType
| vfrStatementOrderedList
| vfrStatementTime
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementQuestionTag ::=
vfrStatementStatTag ","
| vfrStatementInconsistentIf
| vfrStatementNoSubmitIf
| vfrStatementDisableIfQuest
| vfrStatementRefresh
| vfrStatementVarstoreDevice
| vfrStatementExtension
| vfrStatementRefreshEvent
| vfrStatementWarningIf
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementInconsistentIf ::=
"inconsistentif"
"prompt" "=" getStringId ","
vfrStatementExpression
"endif"
It can only be used in questions.
checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
questionid = 0xcb,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
inconsistentif
prompt = STRING_TOKEN(STR_INCONSISTENT_IF),
ideqval MySTestData.mField1 == 2007
endif
endcheckbox;
vfrStatementNoSubmitIf ::=
"nosubmitif"
"prompt" "=" getStringId ","
vfrStatementExpression
"endif"
It can only be used in questions.
checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
questionid = 0xcb,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
nosubmitif prompt = STRING_TOKEN(STR_NOSUBMIT_IF),
ideqval MySTestData.mField1 == 2007
endif
endcheckbox;
vfrStatementDisableIfQuest ::=
"disableif" vfrStatementExpression ";"
vfrStatementQuestionOptionList
"endif"
None.
checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
questionid = 0xcb,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
disableif
ideqvallist MySTestData.mField1 == 1 3 5 7;
refresh interval = 1
endif
endcheckbox;
vfrStatementRefresh ::=
"refresh" "interval" "=" Number
It can only be used in questions.
numeric varid = MyData.Data,
prompt = STRING_TOKEN(STR_PROMPT),
help = STRING_TOKEN(STR_HELP),
minimum = 0,
maximum = 0xff,
refresh interval = 3
endnumeric;
vfrStatementVarstoreDevice ::=
"varstoredevice" "=" getStringId ","
It can only be used in questions.
checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
questionid = 0xcb,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
varstoredevice = STRING_TOKEN(STR_VARSTOREDEVICE),
endcheckbox;
vfrStatementRefreshEvent ::=
"refreshguid" "=" guidDefinition ","
It can only be used in questions.
numeric
varid = MySTestData.mField2,
prompt = STRING_TOKEN(STR_NUMERIC_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP),
flags = DISPLAY_UINT_HEX,
minimum = 0,
maximum = 300,
step = 0,
refreshguid = EFI_IFR_REFRESH_ID_OP_GUID,
default = 175,
endnumeric;
WarningIf ::=
"warningif" "prompt" "=" getStringId "," {"timeout" "=" Number ","}
vfrStatementExpression
"endif"
It can only be used in questions.
checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
questionid = 0xcb,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
warningif prompt = STRING_TOKEN(STR_INCONSISTENT_IF), timeout = 5,
ideqval MySTestData.mField1 == 2007
endif
endcheckbox;
vfrStatementQuestionTagList ::=
( vfrStatementQuestionTag )*
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementQuestionOptionTag ::=
vfrStatementSuppressIfQuest
| vfrStatementValue
| vfrStatementDefault
| vfrStatementOptions
| vfrStatementRead
| vfrStatementWrite
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementSuppressIfQuest ::=
"suppressif" vfrStatementExpression ";"
vfrStatementQuestionOptionList
"endif"
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementDefault ::=
"default"
(
(
vfrStatementValue ","
| "=" vfrConstantValueField ","
)
{ "defaultstore" "=" StringIdentifier "," }
)
It can only be used in a question definition.
Note:
defaultstore
is optional and it points to the default store defined previously. If defaultstore
is not defined, the EFIHII_DEFAULT_CLASS_STANDARD
is assigned.default = 1,
default value = 1 + 2,
default = {1,2,3},
vfrStatementValue ::=
"value" "=" vfrStatementExpression ";"
None.
Value = 0;
vfrStatementOptions ::=
vfrStatementOneOfOption
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementOneOfOption ::=
"option"
"text" "=" getStringId ","
"value" "=" vfrConstantValueField ","
"flags" "=" vfrOneOfOptionFlags
( "," vfrImageTag )*
";"
vfrOneOfOptionFlags ::=
oneofoptionFlagsField ( "|" oneofoptionFlagsField )*
oneofoptionFlagsField ::=
Number
| "OPTION_DEFAULT"
| "OPTION_DEFAULT_MFG"
| "INTERACTIVE"
| "RESET_REQUIRED"
| "DEFAULT"
| "REST_STYLE"
An
option
statement is special; it is used to embellish or describe questions.These statements can be used to give the possible value and set the default value for questions. In other words, they are not questions, but they influence the questions they embellish. Therefore, the options'
flags
are treated as question flags
and can accept all values of question flags
.Options with the DEFAULT flags can be used to set the default value for questions.
option text = STRING_TOKEN(STR_ONE_OF_TEXT), value = 0x2, flags = DEFAULT | RESET_REQUIRED;
vfrStatementRead ::=
"read" vfrStatementExpression ";"
None.
None
vfrStatementWrite ::=
"write" vfrStatementExpression ";"
None.
None
vfrStatementQuestionOptionList ::=
(
vfrStatementQuestionTag
| vfrStatementQuestionOptionTag
)*
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementBooleanType ::=
vfrStatementCheckBox
| vfrStatementAction
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementCheckBox ::=
"checkbox"
vfrQuestionHeader ","
{ "flags" "=" vfrCheckBoxFlags "," }
{ "key" "=" Number "," }
vfrStatementQuestionOptionList
"endcheckbox" ";"
vfrCheckBoxFlags ::=
checkboxFlagsField ( "|" checkboxFlagsField )*
checkboxFlagsField ::=
Number
| "CHECKBOX_DEFAULT"
| "CHECKBOX_DEFAULT_MFG"
| questionheaderFlagsField
The value of
key
is used as question ID.Note:
flags
is optional, and the default value is 0.checkbox
name = MyCheckBox,
varid = MySTestData.mField1,
prompt = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
help = STRING_TOKEN(STR_CHECK_BOX_HELP),
flags = CHECKBOX_DEFAULT | INTERACTIVE,
default = TRUE,
endcheckbox;
vfrStatementAction ::=
"action"
vfrQuestionHeader ","
{ "flags" "=" vfrActionFlags "," }
"config" "=" getStringId ","
vfrStatementQuestionTagList
"endaction" ";"
vfrActionFlags ::=
actionFlagsField ( "|" actionFlagsField )*
actionFlagsField ::=
Number
| questionheaderFlagsField
Note:
flags
is optional, and the default value is 0.action
prompt = STRING_TOKEN(STR_ACTION_PROMPT),
help = STRING_TOKEN(STR_ACTION_HELP),
flags = INTERACTIVE,
config = STRING_TOKEN(STR_ACTION_CONFIG),
endaction;
vfrStatementNumericType ::=
vfrStatementNumeric
| vfrStatementOneOf
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementNumeric ::=
"numeric"
vfrQuestionHeader ,
{ "flags" "=" vfrNumericFlags "," }
{ "key" "=" Number "," }
vfrSetMinMaxStep
vfrStatementQuestionOptionList
"endnumeric" ";"
vfrSetMinMaxStep ::=
"minimum" "=" Number ","
"maximum" "=" Number ","
{ "step" "=" Number "," }
vfrNumericFlags ::=
numericFlagsField ( "|" numericFlagsField )*
numericFlagsField ::=
Number
| "NUMERIC_SIZE_1"
| "NUMERIC_SIZE_2"
| "NUMERIC_SIZE_4"
| "NUMERIC_SIZE_8"
| "DISPLAY_INT_DEC"
| "DISPLAY_UINT_DEC"
| "DISPLAY_UINT_HEX"
| questionheaderFlagsField
Note:
flags
is optional, and the default value partly depends on the size of varid
defined in vfrQuestionHeader
.The default display format is
DISPLAY_UINT_DEC
.numeric
varid = STestData.mField2,
prompt = STRING_TOKEN(STR_NUMERIC_PROMPT),
help = STRING_TOKEN(STR_NUMERIC_HELP),
flags = DISPLAY_UINT_HEX,
minimum = 0,
maximum = 300,
step = 0,
default = 175,
endnumeric;
vfrStatementOneOf ::=
"oneof"
vfrQuestionHeader,
{ "flags" "=" vfrOneofFlagsField "," }
{ vfrSetMinMaxStep }
vfrStatementQuestionOptionList
"endoneof" ";"
vfrOneofFlagsField ::=
numericFlagsField ( "|" numericFlagsField )*
Note:
flags
is optional, and the default value partly depends on the size of varid
defined in vfrQuestionHeader
syntax.The flag is defined in the VFR Numeric Statement Definition.
oneof
varid = STestData.mField3[0],
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
help = STRING_TOKEN(STR_ONE_OF_HELP),
flags = DISPLAY_UINT_DEC,
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0x0, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 0x1, flags = 0;
option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 0x2, flags = DEFAULT;
endoneof;
vfrStatementStringType ::=
vfrStatementString
| vfrStatementPassword
Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.
vfrStatementString ::=
"string"
vfrQuestionHeader ","
{ "flags" "=" vfrStringFlagsField "," }
{ "key" "=" Number "," }
"minsize" "=" Number ","
"maxsize" "=" Number ","
vfrStatementQuestionOptionList
"endstring" ";"
vfrStringFlagsField ::=
stringFlagsField ( "|" stringFlagsField )*
stringFlagsField ::=
Number
| "MULTI_LINE"
| questionheaderFlagsField
Note:
flags
is optional, and the default value is 0.string
varid = STestData.mField1,
prompt = STRING_TOKEN(STR_MY_STRING_PROMPT),
help = STRING_TOKEN(STR_MY_STRING_HELP),
flags = MULTI_LINE,
minsize = 6,
maxsize =