2.11 VFR Form Definition

vfrFormDefinition ::=
  "form" "formid" "=" Number ","
  "title" "=" getStringId ";"
  (
      vfrStatementImage
    | vfrStatementLocked
    | vfrStatementRules
    | vfrStatementDefault
    | vfrStatementStat
    | vfrStatementQuestions
    | vfrStatementConditional
    | vfrStatementLabel
    | vfrStatementBanner
    | vfrStatementExtension
    | vfrStatementModal
  )*
"endform" ";"

BEHAVIORS AND RESTRICTIONS


Note: formid must be unique for each form statement in a given formset.


Example

None.

2.11.1 VFR Form Map Definition

vfrFormMapDefinition ::=
  "formmap" "formid" "=" Number ","
  (
    "maptitle" "=" getStringId ";"
    "mapguid" "=" guidDefinition ";"
  )*
  (
      vfrStatementImage
    | vfrStatementLocked
    | vfrStatementRules
    | vfrStatementDefault
    | vfrStatementStat
    | vfrStatementQuestions
    | vfrStatementConditional
    | vfrStatementLabel
    | vfrStatementBanner
    | vfrStatementExtension
    | vfrStatementModal
  )*
  "endform" ";"

BEHAVIORS AND RESTRICTIONS


Note: formid must be unique for each form statement in a given formset.


Example

None.

2.11.2 VFR Image Statement Definition

vfrStatementImage ::=
  vfrImageTag ";"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.3 VFR Locked Statement Definition

vfrStatementLocked ::=
  vfrLockedTag ";"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.4 VFR Rule Statement Definition

vfrStatementRules ::=
  "rule" StringIdentifier ","
    vfrStatementExpression
  "endrule" ";"

BEHAVIORS AND RESTRICTIONS:

StringIdentifier is the name that can be referenced by a question. It should be unique in the formset.

Example

rule MyRule, 1 + 2
endrule;

2.11.5 VFR Statement Definition

vfrStatementStat ::=
    vfrStatementSubTitle
  | vfrStatementStaticText
  | vfrStatementCrossReference

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.5.1 VFR SubTitle Definition

vfrStatementSubTitle ::=
  "subtitle"
  "text" "=" getStringId
  { "," "flags" "=" vfrSubtitleFlags }
  (
    { "," vfrStatementStatTagList } ";"
  |
    { "," vfrStatementStatTagList }
    { "," (vfrStatementStat | vfrStatementQuestions)*}
    "endsubtitle" ";"
  )

vfrSubtitleFlags ::=
  subtitleFlagsField ( "|" subtitleFlagsField )* ";"

subtitleFlagsField ::=
    Number
  | "HORIZONTAL"

BEHAVIORS AND RESTRICTIONS


Note: flags is optional, and the default value is 0.


Example

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;

2.11.5.2 VFR Text Definition

vfrStatementStaticText ::=
  "text"
  "help" "=" getStringId ","
  "text" "=" getStringId
  { "," "text" "=" getStringId }
  {
    "," "flags" "=" staticTextFlagsField ( "|" staticTextFlagsField )*
    "," "key" "=" Number
  }
  { "," vfrStatementStatTagList } ";"

staticTextFlagsField ::=
    Number
  | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS


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.

Example

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;

2.11.5.3 VFR Cross Reference Type Statements Definition

vfrStatementCrossReference ::=
    vfrStatementGoto
  | vfrStatementResetButton

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.5.3.1 VFR Goto Statement Definition
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

BEHAVIORS AND RESTRICTIONS

The value of key is used as a question ID.

Example

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 code

goto 1,
  prompt = STRING_TOKEN(STR_GOTO_PROMPT),
  help   = STRING_TOKEN(STR_GOTO_HELP),
  refresh interval = 3
  ;
2.11.5.3.2 VFR ResetButton Statement Definition
vfrStatementResetButton ::=
  "resetbutton"
  "defaultStore" "=" StringIdentifier ","
  vfrStatementHeader ","
  { vfrStatementStatTagList "," }
  "endresetbutton" ";"

BEHAVIORS AND RESTRICTIONS


Note: defaultStore should point to the default store defined before.


Example

resetbutton
  defaultstore = DefaultStoreRef,
  prompt = STRING_TOKEN(STR_RESET_BUTTON_PROMPT),
  help   = STRING_TOKEN(STR_RESET_BUTTON_HELP),
endresetbutton;

2.11.6 VFR Question Type Statements Definition

vfrStatementQuestions ::=
    vfrStatementBooleanType
 | vfrStatementDate
 | vfrStatementNumericType
 | vfrStatementStringType
 | vfrStatementOrderedList
 | vfrStatementTime

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.1 VFR Question Tag Definition

vfrStatementQuestionTag ::=
    vfrStatementStatTag ","
  | vfrStatementInconsistentIf
  | vfrStatementNoSubmitIf
  | vfrStatementDisableIfQuest
  | vfrStatementRefresh
  | vfrStatementVarstoreDevice
  | vfrStatementExtension
  | vfrStatementRefreshEvent
  | vfrStatementWarningIf

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.1.1 VFR Question Tag InconsistentIf Definition
vfrStatementInconsistentIf ::=
  "inconsistentif"
  "prompt" "=" getStringId ","
  vfrStatementExpression
  "endif"

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

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;
2.11.6.1.2 VFR Question Tag NoSubmitIf Definition
vfrStatementNoSubmitIf ::=
  "nosubmitif"
  "prompt" "=" getStringId ","
  vfrStatementExpression
  "endif"

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

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;
2.11.6.1.3 VFR Question Tag DisableIf Definition
vfrStatementDisableIfQuest ::=
  "disableif" vfrStatementExpression ";"
  vfrStatementQuestionOptionList
  "endif"

BEHAVIORS AND RESTRICTIONS

None.

Example

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;
2.11.6.1.4 VFR Question Tag Refresh Definition
vfrStatementRefresh ::=
  "refresh" "interval" "=" Number

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

numeric varid   = MyData.Data,
        prompt  = STRING_TOKEN(STR_PROMPT),
        help    = STRING_TOKEN(STR_HELP),
        minimum = 0,
        maximum = 0xff,
        refresh interval = 3
endnumeric;
2.11.6.1.5 VFR Question Tag VarstoreDevice Definition
vfrStatementVarstoreDevice ::=
  "varstoredevice" "=" getStringId ","

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

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;
2.11.6.1.6 VFR Question Tag RefreshEvent Definition
vfrStatementRefreshEvent ::=
  "refreshguid" "=" guidDefinition ","

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

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;
2.11.6.1.7 VFR Question Tag WarningIf Definition vfrStatement
WarningIf ::=
  "warningif" "prompt" "=" getStringId "," {"timeout" "=" Number ","}
  vfrStatementExpression
  "endif"

BEHAVIORS AND RESTRICTIONS

It can only be used in questions.

Example

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;

2.11.6.2 VFR Question Tag List Definition

vfrStatementQuestionTagList ::=
  ( vfrStatementQuestionTag )*

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.3 VFR Question Option Tag Definition

vfrStatementQuestionOptionTag ::=
    vfrStatementSuppressIfQuest
  | vfrStatementValue
  | vfrStatementDefault
  | vfrStatementOptions
  | vfrStatementRead
  | vfrStatementWrite

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.3.1 VFR Question SuppressIf Statement Definition
vfrStatementSuppressIfQuest ::=
  "suppressif" vfrStatementExpression ";"
    vfrStatementQuestionOptionList
  "endif"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.3.2 VFR Default Statement Definition
vfrStatementDefault ::=
  "default"
  (
    (
        vfrStatementValue ","
      | "=" vfrConstantValueField ","
    )
    { "defaultstore" "=" StringIdentifier "," }
  )

BEHAVIORS AND RESTRICTIONS

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.


Example

default = 1,
default value = 1 + 2,
default = {1,2,3},
2.11.6.3.3 VFR Value Statement Definition
vfrStatementValue ::=
  "value" "=" vfrStatementExpression ";"

BEHAVIORS AND RESTRICTIONS

None.

Example

Value = 0;
2.11.6.3.4 VFR Option Type Statements Definition
vfrStatementOptions ::=
  vfrStatementOneOfOption

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.3.5 VFR OneOf Option Statement Definition
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"

BEHAVIORS AND RESTRICTIONS

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.

Example

option text = STRING_TOKEN(STR_ONE_OF_TEXT), value = 0x2, flags = DEFAULT | RESET_REQUIRED;
2.11.6.3.6 VFR Read Statement Definition
vfrStatementRead ::=
  "read" vfrStatementExpression ";"

BEHAVIORS AND RESTRICTIONS

None.

Example

None

2.11.6.3.7 VFR Write Statement Definition
vfrStatementWrite ::=
  "write" vfrStatementExpression ";"

BEHAVIORS AND RESTRICTIONS

None.

Example

None

2.11.6.4 VFR Question Tag List Definition

vfrStatementQuestionOptionList ::=
  (
      vfrStatementQuestionTag
    | vfrStatementQuestionOptionTag
  )*

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.5 VFR Boolean Type Statement Definition

vfrStatementBooleanType ::=
    vfrStatementCheckBox
  | vfrStatementAction

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.5.1 VFR CheckBox Statement Definition
vfrStatementCheckBox ::=
  "checkbox"
  vfrQuestionHeader ","
  { "flags" "=" vfrCheckBoxFlags "," }
  { "key" "=" Number "," }
  vfrStatementQuestionOptionList
  "endcheckbox" ";"

vfrCheckBoxFlags ::=
  checkboxFlagsField ( "|" checkboxFlagsField )*

checkboxFlagsField ::=
    Number
  | "CHECKBOX_DEFAULT"
  | "CHECKBOX_DEFAULT_MFG"
  | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS

The value of key is used as question ID.


Note: flags is optional, and the default value is 0.


Example

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;
2.11.6.5.2 VFR Action Statement Definition
vfrStatementAction ::=
  "action"
  vfrQuestionHeader ","
  { "flags" "=" vfrActionFlags "," }
  "config" "=" getStringId ","
  vfrStatementQuestionTagList
  "endaction" ";"

vfrActionFlags ::=
  actionFlagsField ( "|" actionFlagsField )*

actionFlagsField ::=
    Number
  | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS


Note: flags is optional, and the default value is 0.


Example

action
  prompt = STRING_TOKEN(STR_ACTION_PROMPT),
  help   = STRING_TOKEN(STR_ACTION_HELP),
  flags  = INTERACTIVE,
  config = STRING_TOKEN(STR_ACTION_CONFIG),
endaction;

2.11.6.6 VFR Numeric Type Statements Definition

vfrStatementNumericType ::=
    vfrStatementNumeric
  | vfrStatementOneOf

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.6.1 VFR Numeric Statement Definition
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

BEHAVIORS AND RESTRICTIONS


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.

Example

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;
2.11.6.6.2 VFR OneOf Statement Definition
vfrStatementOneOf ::=
  "oneof"
  vfrQuestionHeader,
  { "flags" "=" vfrOneofFlagsField "," }
  { vfrSetMinMaxStep }
  vfrStatementQuestionOptionList
  "endoneof" ";"

vfrOneofFlagsField ::=
  numericFlagsField ( "|" numericFlagsField )*

BEHAVIORS AND RESTRICTIONS


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.

Example

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;

2.11.6.7 VFR String Type Statements Definition

vfrStatementStringType ::=
    vfrStatementString
  | vfrStatementPassword

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.6.7.1 VFR String Statement Definition
vfrStatementString ::=
  "string"
  vfrQuestionHeader ","
  { "flags" "=" vfrStringFlagsField "," }
  { "key" "=" Number "," }
  "minsize" "=" Number ","
  "maxsize" "=" Number ","
  vfrStatementQuestionOptionList
  "endstring" ";"

vfrStringFlagsField ::=
  stringFlagsField ( "|" stringFlagsField )*

stringFlagsField ::=
    Number
  | "MULTI_LINE"
  | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS


Note: flags is optional, and the default value is 0.


Example

string
  varid   = STestData.mField1,
  prompt  = STRING_TOKEN(STR_MY_STRING_PROMPT),
  help    = STRING_TOKEN(STR_MY_STRING_HELP),
  flags   = MULTI_LINE,
  minsize = 6,
  maxsize = 0x14,
endstring;
2.11.6.7.2 VFR Password Statement Definition
vfrStatementPassword ::=
  "password"
  vfrQuestionHeader ,
  { "flags" "=" vfrPasswordFlagsField "," }
  { "key" "=" Number "," }
  "minsize" "=" Number ","
  "maxsize" "=" Number ","
  vfrStatementQuestionOptionList
  "endpassword" ";"

vfrPasswordFlagsField ::=
  passwordFlagsField ( "|" passwordFlagsField )*

passwordFlagsField ::=
    Number
  | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS


Note: flags is optional, and the default value is 0.


The value of key is used as a question ID.

Example

password
  varid    = STestData.mPrivate.mField2,
  prompt  = STRING_TOKEN(STR_PASSWORD_PROMPT),
  help    = STRING_TOKEN(STR_PASSWORD_HELP),
  minsize = 6,
  maxsize = 20,
endpassword;

2.11.6.8 VFR OrderedList Statement Definition

vfrStatementOrderedList ::=
  "orderedlist"
  vfrQuestionHeader ","
  { "maxcontainers" "=" Number "," }
  { "flags" "=" vfrOrderedListFlags }
  vfrStatementQuestionOptionList
  "endlist" ";"

vfrOrderedListFlags ::=
   orderedlistFlagsField ( "|" orderedlistFlagsField )*

orderedlistFlagsField ::=
    Number
 | "UNIQUE"
 | "NOEMPTY"
 | questionheaderFlagsField

BEHAVIORS AND RESTRICTIONS


Note: maxcontainers is optional, and the default value depends on the variable size defined by varid in vfrQuestionHeader.


Note: flags is optional, and the default value is 0.


Example

orderedlist
  varid  = STestPriData.mField3,
  prompt = STRING_TOKEN(STR_BOOT_OPTIONS),
  help   = STRING_TOKEN(STR_BOOT_OPTIONS),

  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;
  option text = STRING_TOKEN(STR_EMPTY_STRING), value = {1, 2, 3, 4}, flags = DEFAULT;
endlist;

2.11.6.9 VFR Date Statement Definition

vfrStatementDate ::=
  "date"
  (
    (
      vfrQuestionHeader ,
      { "flags" "=" vfrDateFlags "," }
      vfrStatementQuestionOptionList
    )
    |
    (
      "year" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxDateStepDefault

      "month" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxDateStepDefault

      "day" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxDateStepDefault

      ( vfrStatementInconsistentIf )*
    )
  )
  "enddate" ";"

minMaxDateStepDefault ::=
  "minimum" "=" Number ","
  "maximum" "=" Number ","
  { "step" "=" Number "," }
  { "default" "=" Number "," }

vfrDateFlags ::=
  dateFlagsField ( "|" dateFlagsField )*

dateFlagsField ::=
    Number
  | "YEAR_SUPPRESS"
  | "MONTH_SUPPRESS"
  | "DAY_SUPPRESS"
  | "STORAGE_NORMAL"
  | "STORAGE_TIME"
  | "STORAGE_WAKEUP"

BEHAVIORS AND RESTRICTIONS

There are old and new syntax of the VFR Date statement, but they are incompatible. The old VFR Date only uses EFI Date/Time Storage, instead of normal question value storage. The new VFR Date can use either the normal question value storage or EFI Date/Time Storage.

For the new syntax of VFR, flags is optional, and the default value is 0 Examples follow.

New syntax of VFR Date:

date
  varid   = STestData.mDate,
  prompt  = STRING_TOKEN(STR_DATE_PROMPT),
  help    = STRING_TOKEN(STR_DATE_PROMPT),
  flags   = STORAGE_NORMAL,
  default = 2007/08/26,
enddate;

Old syntax of VFR Date:

date year varid       = Date.Year,
          prompt      = STRING_TOKEN(STR_DATE_PROMPT),
          help        = STRING_TOKEN(STR_DATE_HELP),
          minimum     = 2003,
          maximum     = 2100,
          step        = 1,
          default     = 2003,

          month varid = Date.Month
          prompt      = STRING_TOKEN(STR_DATE_PROMPT),
          help        = STRING_TOKEN(STR_DATE_HELP),
          minimum     = 1,
          maximum     = 12,
          step        = 1,
          default     = 1,

          day varid   = Date.Day,
          prompt      = STRING_TOKEN(STR_DATE_PROMPT),
          help        = STRING_TOKEN(STR_DATE_HELP),
          minimum     = 1,
          maximum     = 31,
          step        = 0x1,
          default     = 1,
enddate;

2.11.6.10 VFR Time Statement Definition

vfrStatementTime :
  "time"
  (
    (
      vfrQuestionHeader ","
      { "flags" "=" vfrTimeFlags "," }
      vfrStatementQuestionOptionList
    )
    |
    (
      "hour" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxTimeStepDefault

      "minute" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxTimeStepDefault

      "second" "varid" "=" StringIdentifier "." StringIdentifier ","
      "prompt" "=" getStringId ","
      "help" "=" getStringId ","
      minMaxTimeStepDefault

      ( vfrStatementInconsistentIf )*
    )
  )
  "endtime" ";"

minMaxTimeStepDefault ::=
  "minimum"   "=" Number ","
  "maximum"   "=" Number ","
  { "step"    "=" Number "," }
  { "default" "=" Number "," }

vfrTimeFlags ::=
  timeFlagsField ( "|" timeFlagsField )*

timeFlagsField ::=
    Number
  | "HOUR_SUPPRESS"
  | "MINUTE_SUPPRESS"
  | "SECOND_SUPPRESS"
  | "STORAGE_NORMAL"
  | "STORAGE_TIME"
  | "STORAGE_WAKEUP"

BEHAVIORS AND RESTRICTIONS:

There are old and new syntax of VFR Time statements. They are incompatible.

  • New: VFR Time can use either the normal question value storage or EFI Date/Time Storage.

  • Old: VFR Date can use only EFI Date/Time Storage, instead of normal question value storage.

In the new syntax of VFR, flags is optional, and the default value is 0

Example

New Time Syntax:

time
      name    = MyTime,
      varid   = STestData.mTime,
      prompt  = STRING_TOKEN(STR_TIME_PROMPT),
      help    = STRING_TOKEN(STR_TIME_PROMPT),
      flags   = STORAGE_NORMAL,
      default = 15:33:33,
endtime;

Old Time Syntax:

time hour varid = Time.Hour,
     prompt     = STRING_TOKEN(STR_TIME_PROMPT),
     help       = STRING_TOKEN(STR_TIME_HELP),
     minimum    = 0,
     maximum    = 23,
     step       = 1,
     default    = 0,

     minute varid = Time.Minute,
     prompt       = STRING_TOKEN(STR_TIME_PROMPT),
     help         = STRING_TOKEN(STR_TIME_HELP),
     minimum      = 0,
     maximum      = 59,
     step         = 1,
     default      = 0,

     second varid = Time.Second,
     prompt       = STRING_TOKEN(STR_TIME_PROMPT),
     help         = STRING_TOKEN(STR_TIME_HELP),
     minimum      = 0,
     maximum      = 59,
     step         = 1,
     default      = 0,
endtime;

2.11.7 VFR Conditional Type Statements Definition

vfrStatementConditional ::=
    vfrStatementDisableIfStat
  | vfrStatementSuppressIfStat
  | vfrStatementGrayOutIfStat

Note: There are no BEHAVIORS AND RESTRICTION or an Example for this section.


2.11.7.1 VFR Statement List Definition

vfrStatementStatList ::=
    vfrStatementStat
  | vfrStatementQuestions
  | vfrStatementConditional
  | vfrStatementLabel
  | vfrStatementExtension

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.7.2 VFR Statement DisalbeIf Definition

vfrStatementDisableIfStat ::=
  "disableif" vfrStatementExpression ";"
  ( vfrStatementStatList )*
  "endif" ";"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.7.3 VFR Statement SuppressIf Definition

vfrStatementSuppressIfStat ::=
  "suppressif" vfrStatementExpression ";"
  ( vfrStatementStatList )*
  "endif" ";"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.7.4 VFR Statement GrayOutIf Definition

vfrStatementGrayOutIfStat ::=
  "grayoutif" vfrStatementExpression ";"
  ( vfrStatementStatList )*
  "endif" ";"

Note: There are no BEHAVIORS AND RESTRICTIONS or an Example for this section.


2.11.8 VFR GUID Statement Definition

2.11.8.1 VFR Label Statement Definition

vfrStatementLabel ::=
  "label" Number ";"

BEHAVIORS AND RESTRICTIONS

It is an extended EFI_IFR_GUID op-code.

It should be paired in the VFR program.


Note: label is used to insert op-codes at runtime.


Example

label LABEL_START;
label LABEL_END;

2.11.8.2 VFR Banner Statement Definition

vfrStatementBanner ::=
  "banner" { "," }
  "title" "=" getStringId ","
  (
    (
      "line" Number ","
      "align" ( "left" | "center" | "right" ) ";"
    )
    |
    ( "timeout" "=" Number ";" )
  )

BEHAVIORS AND RESTRICTIONS

It is an extended EFI_IFR_GUID op-code.

Example

banner
  title = STRING_TOKEN(STR_BANNER_TITLE),
  line 1,
  align center;

2.11.8.3 VFR GUID Extension Definition

vfrStatementExtension ::=
  "guidop"
  "guid" "=" guidDefinition
  {
    "," "datatype" "="
    (
        "UINT64" { "[" Number "]" }
      | "UINT32" { "[" Number "]" }
      | "UINT16" { "[" Number "]" }
      | "UINT8" { "[" Number "]" }
      | "BOOLEAN" { "[" Number "]" }
      | "EFI_STRING_ID" { "[" Number "]" }
      | "EFI_HII_DATE" { "[" Number "]" }
      | "EFI_HII_TIME" { "[" Number "]" }
      | "EFI_HII_REF" { "[" Number "]" }
      | StringIdentifier { "[" Number "]" }
    )
    vfrExtensionData
  }
  {
    "," ( vfrStatementExtension )*
    "endguidop"
  }
  ";"

vfrExtensionData ::=
  (
    "," "data" { "[" Number "]" }
    (
      "." StringIdentifier { "[" Number "]" }
    )*
    "=" Number
  )*

BEHAVIORS AND RESTRICTIONS

The generic guidop statement is used to specify user extension opcodes. By default, unassigned byte will be zero. The array number in the "data" part cannot be equal to or larger than the one in the "datatype" part. That is, the array index starts from zero.

Example

guidop
  guid = GUID,
  datatype = UINT32,
  data = 0x12345678;

2.11.9 VFR Modal Statement Definition

vfrStatementModal ::=
  modal";"

BEHAVIORS AND RESTRICTIONS

It is only used in a form.

Example

modal;