///** @file
//
//    Sample Setup formset.
//
//  Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.<BR>
// (C) Copyright 2020 Hewlett Packard Enterprise Development LP<BR>
//  SPDX-License-Identifier: BSD-2-Clause-Patent
//
//**/


#include <Uefi/UefiMultiPhase.h>
#include "NVDataStruc.h"

//
// Formset class used by Device Manager
//
#define EFI_NON_DEVICE_CLASS              0x00
#define EFI_DISK_DEVICE_CLASS             0x01
#define EFI_VIDEO_DEVICE_CLASS            0x02
#define EFI_NETWORK_DEVICE_CLASS          0x04
#define EFI_INPUT_DEVICE_CLASS            0x08
#define EFI_ON_BOARD_DEVICE_CLASS         0x10
#define EFI_OTHER_DEVICE_CLASS            0x20

//
// Formset subclass
//
#define EFI_SETUP_APPLICATION_SUBCLASS    0x00
#define EFI_GENERAL_APPLICATION_SUBCLASS  0x01
#define EFI_FRONT_PAGE_SUBCLASS           0x02
#define EFI_SINGLE_USE_SUBCLASS           0x03

#define EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID \
  { 0x85b75607, 0xf7ce, 0x471e, { 0xb7, 0xe4, 0x2a, 0xea, 0x5f, 0x72, 0x32, 0xee } }

#define PERL_GUID \
  { 0x63E60A51, 0x497D, 0xD427, {0xC4, 0xA5, 0xB8, 0xAB, 0xDC, 0x3A, 0xAE, 0xB6 }}

//
// Labels definition
//
#define LABEL_1_VALUE               0x01
#define LABEL_2_VALUE               0x1000
#define LABEL_UPDATE_BBS            0x2222

formset
  guid      = DRIVER_SAMPLE_FORMSET_GUID,
  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
  // 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 <Command> 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)
  //
  varstore DRIVER_SAMPLE_CONFIGURATION,     // This is the data structure type
    varid = CONFIGURATION_VARSTORE_ID,      // Optional VarStore ID
    name  = MyIfrNVData,                    // Define referenced name in vfr
    guid  = DRIVER_SAMPLE_FORMSET_GUID;     // GUID of this buffer storage

  //
  // 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
    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)
  //
  namevaluevarstore MyNameValueVar,                // Define storage reference name in vfr
    name = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME0), // Define Name list of this storage, refer it by MyNameValueVar[0]
    name = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME1), // Define Name list of this storage, refer it by MyNameValueVar[1]
    name = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME2), // Define Name list of this storage, refer it by MyNameValueVar[2]
    guid = DRIVER_SAMPLE_FORMSET_GUID;             // GUID of this Name/Value storage

  defaultstore MyStandardDefault,
    prompt      = STRING_TOKEN(STR_STANDARD_DEFAULT_PROMPT),
    attribute   = 0x0000;                         // Default ID: 0000 standard default

  defaultstore MyManufactureDefault,
    prompt      = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_PROMPT),
    attribute   = 0x0001;                         // Default ID: 0001 manufacture default

  //
  // Define a Form (EFI_IFR_FORM)
  //
  form formid = 1,                                // Form ID
       title  = STRING_TOKEN(STR_FORM1_TITLE);    // Form title

    subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT);

    subtitle text = STRING_TOKEN(STR_SUBTITLE_TEXT2);

    //
    // Define a display only text (EFI_IFR_TEXT)
    //
    text
      help   = STRING_TOKEN(STR_TEXT_HELP),       // Help string
      text   = STRING_TOKEN(STR_CPU_STRING),      // Prompt string
        text   = STRING_TOKEN(STR_CPU_STRING2);   // TextTwo

    //
    // Define action button (EFI_IFR_ACTION)
    //
    text
      help   = STRING_TOKEN(STR_EXIT_TEXT),
      text   = STRING_TOKEN(STR_EXIT_TEXT),
      flags  = INTERACTIVE,   // VfrCompiler will generate opcode EFI_IFR_ACTION for Text marked as INTERACTIVE
      key    = 0x1237;

    text
      help   = STRING_TOKEN(STR_SAVE_TEXT),
      text   = STRING_TOKEN(STR_SAVE_TEXT),
      flags  = INTERACTIVE,
      key    = 0x1238;

    text
      help   = STRING_TOKEN(STR_SAVE_CURRENT),
      text   = STRING_TOKEN(STR_SAVE_CURRENT),
      flags  = INTERACTIVE,
      key    = 0x1243;

    text
      help   = STRING_TOKEN(STR_DISCARD_CURRENT_AND_EXIT),
      text   = STRING_TOKEN(STR_DISCARD_CURRENT_AND_EXIT),
      flags  = INTERACTIVE,
      key    = 0x1244;
    //
    // Define oneof (EFI_IFR_ONE_OF)
    //
    oneof name = MyOneOf,                                // Define reference name for Question
      varid   = MyIfrNVData.SuppressGrayOutSomething,    // Use "DataStructure.Member" to reference Buffer Storage
      prompt  = STRING_TOKEN(STR_ONE_OF_PROMPT),
      help    = STRING_TOKEN(STR_ONE_OF_HELP),
      //
      // Define an option (EFI_IFR_ONE_OF_OPTION)
      //
      option text = STRING_TOKEN(STR_ONE_OF_TEXT4), value = 0x0, flags = 0;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT5), value = 0x1, flags = 0;
      //
      // DEFAULT indicate this option will be marked with EFI_IFR_OPTION_DEFAULT
      //
      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),
      default value = cond (pushthis == 0 ? 0 : cond ((questionref(MyOneOf) >> 0x4 & 0xF00) == 0x0 + 0x2 ? 0 : 1)),
      option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = 0;
      option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = 0;
    endoneof;

    grayoutif  ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
      suppressif questionref(MyOneOf) == 0x0;

        checkbox varid   = MyIfrNVData.ChooseToActivateNuclearWeaponry,
                 prompt   = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
                 help     = STRING_TOKEN(STR_CHECK_BOX_HELP),
                 //
                 // CHECKBOX_DEFAULT indicate this checkbox is marked with EFI_IFR_CHECKBOX_DEFAULT
                 // CHECKBOX_DEFAULT_MFG indicate EFI_IFR_CHECKBOX_DEFAULT_MFG.
                 //
                 flags    = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG,
                 default  = TRUE,
        endcheckbox;
      endif;
    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 is defined as an anchor where you want to insert some dynamic
      // opcodes created on-the-fly
      //
      label LABEL_UPDATE_BBS;

      orderedlist
                varid       = MyIfrNVData.BootOrder,
                prompt      = STRING_TOKEN(STR_BOOT_OPTIONS),
                help        = STRING_TOKEN(STR_NULL_STRING),
                flags       = RESET_REQUIRED,
                option text = STRING_TOKEN(STR_BOOT_OPTION2), value = 2, flags = 0;
                option text = STRING_TOKEN(STR_BOOT_OPTION1), value = 1, flags = 0;
                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;
      endlist;

      //
      // label should be paired with each other
      //
      label LABEL_END;

    endif;    // end suppressif

    disableif ideqval MyIfrNVData.SuppressGrayOutSomething == 0x2;
      orderedlist
        varid       = MyIfrNVData.OrderedList,
        prompt      = STRING_TOKEN(STR_TEST_OPCODE),
        help        = STRING_TOKEN(STR_TEXT_HELP),
        flags       = RESET_REQUIRED,
        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;

    label 100;

    //
    // Define a hyperlink (EFI_IFR_REF)
    //
    goto 0x1234,                                  // Destination Form ID
      prompt  = STRING_TOKEN(STR_GOTO_DYNAMIC),   // Prompt string
      help    = STRING_TOKEN(STR_GOTO_HELP),      // Help string
      flags   = INTERACTIVE,                      // INTERACTIVE indicate it's marked with EFI_IFR_FLAG_CALLBACK
      key     = 0x1234;                           // Question ID which will be passed-in in COnfigAccess.Callback()

    goto 0x1234,
      prompt  = STRING_TOKEN(STR_GOTO_DYNAMIC2),
      help    = STRING_TOKEN(STR_GOTO_HELP),
      flags   = INTERACTIVE,
      key     = 0x1235;

    oneof varid  = MyIfrNVData.TestLateCheck,
      prompt      = STRING_TOKEN(STR_TEST_OPCODE),
      help        = STRING_TOKEN(STR_ONE_OF_HELP),
      flags       = RESET_REQUIRED,
      option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = 0;
      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;

    endoneof;

    oneof varid  = MyIfrNVData.TestLateCheck2,
      prompt      = STRING_TOKEN(STR_TEST_OPCODE2),
      help        = STRING_TOKEN(STR_ONE_OF_HELP),
      flags       = RESET_REQUIRED,
      option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = DEFAULT;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = 0;

      inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
        ideqid MyIfrNVData.TestLateCheck == MyIfrNVData.TestLateCheck2
      endif;

    endoneof;

    oneof varid  = MyIfrNVData.QuestionAboutTreeHugging,
      prompt      = STRING_TOKEN(STR_ONE_OF_PROMPT_KEYWORD),
      help        = STRING_TOKEN(STR_ONE_OF_HELP),
      flags       = RESET_REQUIRED,
      option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = 0;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 3, flags = 0;
    endoneof;

    //
    // This is an HII option which has REST_STYLE flag and x-UEFI namespace
    // UNI string associated. This HII option could be configured by either in-band
    // edk2 setup browser or the remote management in out-of-band such as Redfish
    // service. This HII option is configured through EFI_KEYWORD_HANDLER_PROTOCOL.
    //
    oneof varid  = MyIfrNVData.QuestionXUefiKeywordRestStyle,
      prompt      = STRING_TOKEN(STR_ONE_OF_PROMPT_X_UEFI),
      help        = STRING_TOKEN(STR_ONE_OF_PROMPT_X_UEFI_HELP),
      flags       = RESET_REQUIRED | REST_STYLE,
      option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = 0;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT2), value = 1, flags = DEFAULT;
      option text = STRING_TOKEN(STR_ONE_OF_TEXT3), value = 3, flags = 0;
    endoneof;


    //
    // This is a HII option which has REST_STYLE flag but without the x-UEFI namespace
    // UNI string associated. This HII option could be configured by either
    // setup browser or the remote management in out-of-band such as Redfish
    // service. This HII option is configured through EFI HII Configuration Routing
    // Protocol becasue it doesn't have x-UEFI namespace UNI string.
    //
    numeric varid  = MyIfrNVData.QuestionNonXUefiKeywordRestStyle,
      prompt       = STRING_TOKEN(STR_ONE_OF_PROMPT_NON_X_UEFI),
      help         = STRING_TOKEN(STR_ONE_OF_PROMPT_NON_X_UEFI_HELP),
      flags        = RESET_REQUIRED | REST_STYLE,
      minimum      = 0,
      maximum      = 0xf0,
      step         = 0,          // Stepping of 0 equates to a manual entering
                                 // of a value, otherwise it will be adjusted by "+"/"-"
      default      = 0,          // defaultstore could be used to specify the default type
                                 // If no defaultstore is specified, it implies Standard Default
    endnumeric;

    //
    // Define a string (EFI_IFR_STRING)
    //
    string    varid    = MyIfrNVData.MyStringData,
              prompt   = STRING_TOKEN(STR_MY_STRING_PROMPT2),
              help     = STRING_TOKEN(STR_MY_STRING_HELP2),
              flags    = INTERACTIVE,
              key      = 0x1236,
              minsize  = 6,
              maxsize  = 40,
              inconsistentif prompt = STRING_TOKEN(STR_STRING_CHECK_ERROR_POPUP),
                pushthis != stringref(STRING_TOKEN(STR_STRING_CHECK))
              endif;
    endstring;

    //
    // Define a numeric (EFI_IFR_NUMERIC)
    //
    numeric varid   = MyIfrNVData.HowOldAreYouInYearsManual,
            prompt  = STRING_TOKEN(STR_NUMERIC_READONLY_PROMPT),
            help    = STRING_TOKEN(STR_NUMERIC_HELP0),
            flags   = READ_ONLY,  // READ_ONLY indicate it's marked with EFI_IFR_FLAG_READ_ONLY
            minimum = 0,
            maximum = 0xf0,
            step    = 0,          // Stepping of 0 equates to a manual entering
                                  // of a value, otherwise it will be adjusted by "+"/"-"
            default = 21,         // defaultstore could be used to specify the default type
                                  // If no defaultstore is specified, it implies Standard Default

    endnumeric;

    numeric varid   = MyIfrNVData.HowOldAreYouInYearsManual,
            prompt  = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),
            help    = STRING_TOKEN(STR_NUMERIC_HELP0),
            minimum = 0,
            maximum = 0xf0,
            step    = 0,
            default value = questionrefval(devicepath = STRING_TOKEN (STR_DEVICE_PATH), guid = DRIVER_SAMPLE_FORMSET_GUID, 0x1111),

            inconsistentif prompt = STRING_TOKEN(STR_ERROR_POPUP),
              ideqval MyIfrNVData.HowOldAreYouInYearsManual == 99
              OR
              ideqid  MyIfrNVData.HowOldAreYouInYearsManual == MyEfiVar.Field8
              OR
              ideqvallist MyIfrNVData.HowOldAreYouInYearsManual == 1 3 5 7
            endif;

    endnumeric;

    numeric varid   = MyEfiVar.Field8,                    // Reference of EFI variable storage
            questionid  = 0x1111,
            prompt  = STRING_TOKEN(STR_TALL_HEX_PROMPT),
            help    = STRING_TOKEN(STR_NUMERIC_HELP1),
            flags   = DISPLAY_UINT_HEX | INTERACTIVE,     // Display in HEX format (if not specified, default is in decimal format)
            minimum = 0,
            maximum = 250,
            default = 18, defaultstore = MyStandardDefault,     // This is standard default value
            default = 19, defaultstore = MyManufactureDefault,  // This is manufacture default value

    endnumeric;

    //
    // Define numeric using Name/Value Storage
    //
    numeric varid   = MyNameValueVar[0],     // This numeric take NameValueVar0 as storage
            prompt  = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME0),
            help    = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME0_HELP),
            //
            // Size should be defined for numeric when use Name/Value storage
            // Valid value for numerice size are: NUMERIC_SIZE_1, NUMERIC_SIZE_2, NUMERIC_SIZE_4 and NUMERIC_SIZE_8
            //
            flags   = NUMERIC_SIZE_1,        // Size of this numeric is 1 byte
            minimum = 0,
            maximum = 0xff,
            step    = 0,
            locked,
            default = 16, defaultstore = MyStandardDefault,     // This is standard default value
            default = 17, defaultstore = MyManufactureDefault,  // This is manufacture default value
    endnumeric;

    numeric varid   = MyNameValueVar[1],     // This numeric take NameValueVar1 as storage
            prompt  = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME1),
            help    = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME1_HELP),
            flags   = NUMERIC_SIZE_2,        // Size of this numeric is 2 bytes
            minimum = 0,
            maximum = 0xffff,
            step    = 0,
            default = 18, defaultstore = MyStandardDefault,     // This is standard default value
            default = 19, defaultstore = MyManufactureDefault,  // This is manufacture default value
    endnumeric;

    //
    // Define string using Name/Value Storage
    //
    string    varid    = MyNameValueVar[2],     // This string take NameValueVar2 as storage
              prompt   = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME2),
              help     = STRING_TOKEN(STR_NAME_VALUE_VAR_NAME2_HELP),
              minsize  = 2,
              maxsize  = 0x14,
    endstring;

    oneof varid   = MyEfiVar.Field16,
      prompt      = STRING_TOKEN(STR_ONE_OF_PROMPT),
      help        = STRING_TOKEN(STR_NUMERIC_NUM_HELP),
      option text = STRING_TOKEN(STR_BOOT_ORDER1), value = 0x0, flags = 0;
      option text = STRING_TOKEN(STR_BOOT_ORDER2), value = 0x1, flags = DEFAULT;
    endoneof;

    label LABEL_1_VALUE;
    label LABEL_2_VALUE;

    grayoutif  ideqval MyIfrNVData.HowOldAreYouInYearsManual == 23 AND ideqval MyIfrNVData.SuppressGrayOutSomething == 0x1;
      numeric varid   = MyIfrNVData.HowOldAreYouInYears,
              prompt  = STRING_TOKEN(STR_NUMERIC_STEP_PROMPT),
              help    = STRING_TOKEN(STR_NUMERIC_HELP2),
              minimum = 0,
              maximum = 243,
              step    = 1,
              default = 18, defaultstore = MyStandardDefault,     // This is standard default value
              default = 19, defaultstore = MyManufactureDefault,  // This is manufacture default value

      endnumeric;
    endif;

    numeric varid   = MyIfrNVData.GetDefaultValueFromAccess,
            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,
            minimum = 0,
            maximum = 255,
            step    = 1,
            default = 18,
    endnumeric;

    numeric varid   = MyIfrNVData.GetDefaultValueFromCallBack,
            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,
            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;

    //
    // Sample use case for IFR Security op-code
    //
    grayoutif NOT security (EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID);
      text
        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);

    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);

    goto 4,
      prompt = STRING_TOKEN(STR_GOTO_FORM4), //FourthSetupPage  // this too has no end-op and basically it's a jump to a form ONLY
      help   = STRING_TOKEN(STR_GOTO_HELP);

    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
      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
      guid = DRIVER_SAMPLE_FORMSET_GUID,
      datatype = MY_EFI_VARSTORE_DATA,
        data.Field8  = 0x21,
        data.Field16 = 0x2121,
        data.OrderedList[0] = 0x21,
    endguidop;

     goto 7,
      prompt = STRING_TOKEN(STR_GOTO_FORM7),
      help   = STRING_TOKEN(STR_GOTO_FORM7_HELP);

  endform;

  suppressif ideqval MyIfrNVData.BootOrderLarge == 0;
    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
        name    = Date,
        prompt  = STRING_TOKEN(STR_DATE_PROMPT),
        help    = STRING_TOKEN(STR_DATE_HELP),
        flags   = STORAGE_TIME,
        default = 2004/1/1,

        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;

      enddate;

      text
        help   = STRING_TOKEN(STR_SAVE_CURRENT_AND_EXIT),
        text   = STRING_TOKEN(STR_SAVE_CURRENT_AND_EXIT),
        flags  = INTERACTIVE,
        key    = 0x1241;

      text
        help   = STRING_TOKEN(STR_DISCARD_CURRENT),
        text   = STRING_TOKEN(STR_DISCARD_CURRENT),
        flags  = INTERACTIVE,
        key    = 0x1242;

      time
        prompt  = STRING_TOKEN(STR_TIME_PROMPT),
        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),
            flags   = STORAGE_NORMAL | SECOND_SUPPRESS,
            default = 15:33:33,
      endtime;

      checkbox varid   = MyIfrNVData.ChooseToActivateNuclearWeaponry,
              prompt   = STRING_TOKEN(STR_CHECK_BOX_PROMPT),
              help     = STRING_TOKEN(STR_CHECK_BOX_HELP),
              flags    = CHECKBOX_DEFAULT,
      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);

      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);

    goto
      varid   = MyIfrNVData.RefData,
      prompt  = STRING_TOKEN(STR_GOTO_DYNAMIC3),
      help    = STRING_TOKEN(STR_GOTO_DYNAMIC3_HELP),
      flags   = INTERACTIVE,
      key     = 0x1248,
      //
      // Set the defult value, format is QuestionId; FormId; FormsetGuid; Device Path String Token
      //
      default = 0;0;ZERO_GUID;STRING_TOKEN(STR_NULL_STRING),
    ;                                                         // goto opcode end flag.

    goto
      prompt  = STRING_TOKEN(STR_GOTO_DYNAMIC4),
      help    = STRING_TOKEN(STR_GOTO_DYNAMIC4_HELP),
      flags   = INTERACTIVE,
      key     = 0x1249;

    endform;
  endif;

  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

    suppressif  ideqval MyEfiVar.Field8 == 111;
      text
        help = STRING_TOKEN(STR_TEXT_HELP),
        text = STRING_TOKEN(STR_TEXT_TEXT_1);
    endif;

    goto 1,
      prompt = STRING_TOKEN(STR_GOTO_FORM1), //MainSetupPage
      help   = STRING_TOKEN(STR_GOTO_HELP);

    numeric varid   = MyIfrNVData.DynamicRefresh,
            prompt  = STRING_TOKEN(STR_NUMERIC_MANUAL_PROMPT),
            help    = STRING_TOKEN(STR_NUMERIC_HELP0),
            flags   = INTERACTIVE,
            key     = 0x5678,
            minimum = 0,
            maximum = 0xff,
            step    = 0,
            default = 0,
            refresh interval = 3             // Refresh interval in seconds
    endnumeric;

    grayoutif  match2 (stringref(STRING_TOKEN(STR_PATTERN)), stringref(STRING_TOKEN(STR_STRING)), PERL_GUID);
      numeric
        varid   = MyIfrNVData.Match2,
        prompt  = STRING_TOKEN(STR_MATCH2_PROMPT),
        help    = STRING_TOKEN(STR_MATCH2_HELP),
        minimum = 0,
        maximum = 243,
      endnumeric;
    endif;

    label LABEL_UPDATE2;
    label LABEL_END;

  endform;

  formmap formid = 4,
    maptitle = STRING_TOKEN(STR_SAMPL_MAP_METHOD);
    mapguid  = DRIVER_SAMPLE_FORMSET_GUID;
    maptitle = STRING_TOKEN(STR_STANDARD_MAP_METHOD);
    mapguid  = EFI_HII_STANDARD_FORM_GUID;

    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;
      option text = STRING_TOKEN(STR_SERIAL_PORT3), value = 0x3, flags = 0;
      option text = STRING_TOKEN(STR_SERIAL_PORT4), value = 0x4, flags = 0;
    endoneof;

    grayoutif TRUE;
      checkbox varid = MyIfrNVData.SerialPortStatus,
        prompt   = STRING_TOKEN(STR_SERIAL_PORT_STATUS),
        help     = STRING_TOKEN(STR_CHECK_BOX_HELP),
      endcheckbox;
    endif;

    grayoutif TRUE;
      suppressif ideqval MyIfrNVData.SerialPortStatus == 0;
        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;
          option text = STRING_TOKEN(STR_SERIAL_PORT4_IOADDR), value = 0x2E8, flags = 0;
        endoneof;
      endif;
    endif;

    grayoutif TRUE;
      suppressif ideqval MyIfrNVData.SerialPortStatus == 0;
        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;
      endif;
    endif;

    goto 1,
      prompt = STRING_TOKEN(STR_GOTO_FORM1), //MainSetupPage
      help   = STRING_TOKEN(STR_GOTO_HELP);

  endform;

  form formid = 5,            // Modal form
       title = STRING_TOKEN(STR_MODAL_FORM_TITLE);
    //
    //  This form is a modal form.
    //
    modal;
    text
      help   = STRING_TOKEN(STR_EXIT_TEXT),
      text   = STRING_TOKEN(STR_EXIT_TEXT),
      flags  = INTERACTIVE,   // VfrCompiler will generate opcode EFI_IFR_ACTION for Text marked as INTERACTIVE
      key    = 0x1245;

    text
      help   = STRING_TOKEN(STR_SAVE_TEXT),
      text   = STRING_TOKEN(STR_SAVE_TEXT),
      flags  = INTERACTIVE,   // VfrCompiler will generate opcode EFI_IFR_ACTION for Text marked as INTERACTIVE
      key    = 0x1246;
  endform;

  form formid = 6,            // Form to show the refresh guid group op-code
       title = STRING_TOKEN(STR_FORM6_TITLE);

    text
      help   = STRING_TOKEN(STR_TEXT_REFRESH_GUID),
      text   = STRING_TOKEN(STR_TEXT_REFRESH_GUID);

    numeric varid   = MyIfrNVData.RefreshGuidCount,
            prompt  = STRING_TOKEN(STR_TEXT_REFRESH_GUID_COUNT),
            help    = STRING_TOKEN(STR_NUMERIC_HELP0),
            flags   = INTERACTIVE,
            key     = 0x1247,
            minimum = 0,
            maximum = 0xff,
            step    = 0,
            default = 0,
            refreshguid = EFI_IFR_REFRESH_ID_OP_GUID,
    endnumeric;

    label LABEL_UPDATE3;
    label LABEL_END;

  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 LABEL_UPDATE1;
    //
    // This is where we will insert dynamic created opcodes
    //
    label LABEL_END;

  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;
