// *++
//
// 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:
//
//   bm.vfr 
// 
// Abstract:
// 
//   Boot Maintenance Utility Formset
// 
// Revision History: 
// 
// --*/

#include "EdkGenericPlatformBdsLibStrDefs.h" 
#include "FormGuid.h"

#pragma pack(1)

//
// This is the structure that will be used to store the 
// question's current value. Use it at initialize time to 
// set default value for each question. When using at run
// time, this map is returned by the callback function,
// so dynamically changing the question's value will be
// possible through this mechanism
//
typedef struct {

//
// Three questions displayed at the main page
// for Timeout, BootNext Variables respectively
//
  UINT16                    BootTimeOut;
  UINT16                    BootNext;

//
// This is the COM1 Attributes value storage
//
  UINT8                     COM1BaudRate;
  UINT8                     COM1DataRate;
  UINT8                     COM1StopBits;
  UINT8                     COM1Parity;
  UINT8                     COM1TerminalType;
  
//
// This is the COM2 Attributes value storage
//
  UINT8                     COM2BaudRate;
  UINT8                     COM2DataRate;
  UINT8                     COM2StopBits;
  UINT8                     COM2Parity;
  UINT8                     COM2TerminalType;

// 
// Driver Option Add Handle page storage
//
  UINT16                    DriverAddHandleDesc[100];
  UINT16                    DriverAddHandleOptionalData[100];
  UINT8                     DriverAddActive;
  UINT8                     DriverAddForceReconnect;
  
//
// Console Input/Output/Errorout using COM port check storage
//
  UINT8                     ConsoleInputCOM1;
  UINT8                     ConsoleInputCOM2;
  UINT8                     ConsoleOutputCOM1;
  UINT8                     ConsoleOutputCOM2;
  UINT8                     ConsoleErrorCOM1;
  UINT8                     ConsoleErrorCOM2;

//
// At most 100 input/output/errorout device for console storage
//
  UINT8                     ConsoleCheck[100];

//
// Boot or Driver Option Order storage
//
  UINT8                     OptionOrder[100];
  UINT8                     DriverOptionToBeDeleted[100];

//
// Boot Option Delete storage
// 
  UINT8                     BootOptionDel[100];
  UINT8                     DriverOptionDel[100];
  
//
// This is the Terminal Attributes value storage
//
  UINT8                     COMBaudRate;
  UINT8                     COMDataRate;
  UINT8                     COMStopBits;
  UINT8                     COMParity;
  UINT8                     COMTerminalType;
  
//
// Legacy Device Order Selection Storage
//
  UINT8                     LegacyFD[100];
  UINT8                     LegacyHD[100];
  UINT8                     LegacyCD[100];
  UINT8                     LegacyNET[100];
  UINT8                     LegacyBEV[100];
} BMM_FAKE_NV_DATA;
#pragma pack()


#define FORM_MAIN_ID                         0x0001
#define FORM_BOOT_ADD_ID                     0x0002
#define FORM_BOOT_DEL_ID                     0x0003
#define FORM_BOOT_CHG_ID                     0x0004
#define FORM_DRV_ADD_ID                      0x0005
#define FORM_DRV_DEL_ID                      0x0006
#define FORM_DRV_CHG_ID                      0x0007
#define FORM_CON_MAIN_ID                     0x0008
#define FORM_CON_IN_ID                       0x0009
#define FORM_CON_OUT_ID                      0x000A
#define FORM_CON_ERR_ID                      0x000B
#define FORM_FILE_SEEK_ID                    0x000C
#define FORM_FILE_NEW_SEEK_ID                0x000D
#define FORM_DRV_ADD_FILE_ID                 0x000E
#define FORM_DRV_ADD_HANDLE_ID               0x000F
#define FORM_DRV_ADD_HANDLE_DESC_ID          0x0010
#define FORM_BOOT_NEXT_ID                    0x0011
#define FORM_TIME_OUT_ID                     0x0012
#define FORM_RESET                           0x0013
#define FORM_BOOT_SETUP_ID                   0x0014
#define FORM_DRIVER_SETUP_ID                 0x0015
#define FORM_BOOT_LEGACY_DEVICE_ID           0x0016
#define FORM_CON_COM_ID                      0x0017
#define FORM_CON_COM_SETUP_ID                0x0018
#define FORM_SET_FD_ORDER_ID                 0x0019
#define FORM_SET_HD_ORDER_ID                 0x001A
#define FORM_SET_CD_ORDER_ID                 0x001B
#define FORM_SET_NET_ORDER_ID                0x001C
#define FORM_SET_BEV_ORDER_ID                0x001D
									
#define KEY_VALUE_BOOT_FROM_FILE             0x0092

formset 
  guid = MAIN_FORMSET_GUID,
  title = STRING_TOKEN(STR_FORM_MAIN_TITLE),  // uint8 opcode, uint8 length, guid Handle, uint16 Title
  help = STRING_TOKEN(STR_NULL_STRING),
  class = 0,      
  subclass = 0,

  form formid = FORM_MAIN_ID,
       title = STRING_TOKEN(STR_FORM_MAIN_TITLE);

    goto FORM_BOOT_SETUP_ID,
         prompt = STRING_TOKEN(STR_FORM_BOOT_SETUP_TITLE),
         help = STRING_TOKEN(STR_FORM_BOOT_SETUP_HELP),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_BOOT_SETUP_ID;

    subtitle text = STRING_TOKEN(STR_NULL_STRING);

    goto FORM_DRIVER_SETUP_ID,
         prompt = STRING_TOKEN(STR_FORM_DRIVER_SETUP_TITLE),
         help = STRING_TOKEN(STR_FORM_DRIVER_SETUP_HELP),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_DRIVER_SETUP_ID;

    subtitle text = STRING_TOKEN(STR_NULL_STRING);

    goto FORM_CON_MAIN_ID,
         prompt = STRING_TOKEN(STR_FORM_CON_MAIN_TITLE),
         help = STRING_TOKEN(STR_FORM_CON_MAIN_HELP),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_CON_MAIN_ID;
   
    subtitle text = STRING_TOKEN(STR_NULL_STRING);

    text 
         help   = STRING_TOKEN(STR_BOOT_FROM_FILE_HELP),  
         text   = STRING_TOKEN(STR_BOOT_FROM_FILE),
         text   = STRING_TOKEN(STR_NULL_STRING),
         flags  = INTERACTIVE | NV_ACCESS,
         key    = KEY_VALUE_BOOT_FROM_FILE;

    subtitle text = STRING_TOKEN(STR_NULL_STRING);

//    label FORM_MAIN_ID;

    goto FORM_BOOT_NEXT_ID,
         prompt = STRING_TOKEN(STR_FORM_BOOT_NEXT_TITLE),
         help = STRING_TOKEN(STR_FORM_BOOT_NEXT_HELP),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_BOOT_NEXT_ID;            

    goto FORM_TIME_OUT_ID,
         prompt = STRING_TOKEN(STR_FORM_TIME_OUT_TITLE),
         help = STRING_TOKEN(STR_FORM_TIME_OUT_HELP),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_TIME_OUT_ID;
         
    subtitle text = STRING_TOKEN(STR_NULL_STRING);

    goto FORM_MAIN_ID,
         prompt = STRING_TOKEN(STR_RESET),
         help = STRING_TOKEN(STR_RESET),
         flags = INTERACTIVE | NV_ACCESS,
         key = FORM_RESET;
         
  endform;       

  form formid = FORM_BOOT_SETUP_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_SETUP_TITLE);

       goto FORM_MAIN_ID,
            prompt = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            help = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_MAIN_ID;

       goto FORM_BOOT_ADD_ID,
            prompt = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE),
            help = STRING_TOKEN(STR_FORM_BOOT_ADD_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_BOOT_ADD_ID;
      
       goto FORM_BOOT_DEL_ID,
            prompt = STRING_TOKEN(STR_FORM_BOOT_DEL_TITLE),
            help = STRING_TOKEN(STR_FORM_NEXT_BOOT_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_BOOT_DEL_ID;
       
       goto FORM_BOOT_CHG_ID,
            prompt = STRING_TOKEN(STR_FORM_BOOT_CHG_TITLE),
            help = STRING_TOKEN(STR_FORM_NEXT_BOOT_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_BOOT_CHG_ID;

       subtitle text = STRING_TOKEN(STR_NULL_STRING);
       //
	   // We will add "Select Legacy Boot Floppy Drive" and "Select Legacy Boot Hard Drive" 
	   // here dynamically
	   //
       label FORM_BOOT_LEGACY_DEVICE_ID;

  endform;       

  form formid = FORM_DRIVER_SETUP_ID,
       title = STRING_TOKEN(STR_FORM_DRIVER_SETUP_TITLE);

       goto FORM_MAIN_ID,
            prompt = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            help = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_MAIN_ID;

       goto FORM_DRV_ADD_ID,
            prompt = STRING_TOKEN(STR_FORM_DRV_ADD_TITLE),
            help = STRING_TOKEN(STR_FORM_DRV_ADD_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_DRV_ADD_ID;
     
       goto FORM_DRV_DEL_ID,
            prompt = STRING_TOKEN(STR_FORM_DRV_DEL_TITLE),
            help = STRING_TOKEN(STR_FORM_NEXT_BOOT_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_DRV_DEL_ID;
       
       goto FORM_DRV_CHG_ID,
            prompt = STRING_TOKEN(STR_FORM_DRV_CHG_TITLE),
            help = STRING_TOKEN(STR_FORM_NEXT_BOOT_HELP),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_DRV_CHG_ID;
  endform;       

  form formid = FORM_BOOT_ADD_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE);

       label FORM_BOOT_ADD_ID;
  endform;

  form formid = FORM_BOOT_DEL_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_DEL_TITLE);

       label FORM_BOOT_DEL_ID;
  endform;

  form formid = FORM_BOOT_CHG_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_CHG_TITLE);

       label FORM_BOOT_CHG_ID;
       
       //
       // This tag is added for bypassing issue of setup browser
       // setup browser could not support dynamic form very well.
       //
       checkbox varid    = BMM_FAKE_NV_DATA.OptionOrder[0],
           prompt   = STRING_TOKEN(STR_FORM_BOOT_CHG_TITLE),
           help     = STRING_TOKEN(STR_FORM_BOOT_CHG_TITLE),  
           flags    = 1,
           key      = 0,
       endcheckbox;
      
  endform;

  form formid = FORM_BOOT_NEXT_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_NEXT_TITLE);

       label FORM_BOOT_NEXT_ID;
  endform;
  
  form formid = FORM_TIME_OUT_ID,
       title = STRING_TOKEN(STR_FORM_TIME_OUT_TITLE);
       
       label FORM_TIME_OUT_ID;
  endform;
  
  form formid = FORM_DRV_ADD_ID,
       title = STRING_TOKEN(STR_FORM_DRV_ADD_TITLE);

       goto FORM_MAIN_ID,
            prompt = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            help = STRING_TOKEN(STR_FORM_GOTO_MAIN),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_MAIN_ID;
              
       goto FORM_DRV_ADD_FILE_ID,
            prompt = STRING_TOKEN(STR_FORM_DRV_ADD_FILE_TITLE),
            help = STRING_TOKEN(STR_FORM_DRV_ADD_FILE_TITLE),
            flags = INTERACTIVE | NV_ACCESS,
            key = FORM_DRV_ADD_FILE_ID;

  endform;

  form formid = FORM_DRV_DEL_ID,
       title = STRING_TOKEN(STR_FORM_DRV_DEL_TITLE);

       label FORM_DRV_DEL_ID;

  endform;

  form formid = FORM_DRV_CHG_ID,
       title = STRING_TOKEN(STR_FORM_DRV_CHG_TITLE);

       label FORM_DRV_CHG_ID;
      
       //
       // This tag is added for bypassing issue of setup browser
       // setup browser could not support dynamic form very well.
       //
       checkbox varid    = BMM_FAKE_NV_DATA.OptionOrder[0],
           prompt   = STRING_TOKEN(STR_FORM_DRV_CHG_TITLE),
           help     = STRING_TOKEN(STR_FORM_DRV_CHG_TITLE),  
           flags    = 1,
           key      = 0,
       endcheckbox;
       
  endform;

  form formid = FORM_CON_MAIN_ID,
       title = STRING_TOKEN(STR_FORM_CON_MAIN_TITLE);

       goto FORM_MAIN_ID,
       prompt = STRING_TOKEN(STR_FORM_GOTO_MAIN),
       help = STRING_TOKEN(STR_FORM_GOTO_MAIN),
       flags = INTERACTIVE | NV_ACCESS,
       key = FORM_MAIN_ID;

       goto FORM_CON_IN_ID,
       prompt = STRING_TOKEN(STR_FORM_CON_IN_TITLE),
       help = STRING_TOKEN(STR_FORM_CON_IN_HELP),
       flags = INTERACTIVE | NV_ACCESS,
       key = FORM_CON_IN_ID;

       goto FORM_CON_OUT_ID,
       prompt = STRING_TOKEN(STR_FORM_CON_OUT_TITLE),
       help = STRING_TOKEN(STR_FORM_CON_OUT_HELP),
       flags = INTERACTIVE | NV_ACCESS,
       key = FORM_CON_OUT_ID;
  
       goto FORM_CON_ERR_ID,
       prompt = STRING_TOKEN(STR_FORM_STD_ERR_TITLE),
       help = STRING_TOKEN(STR_FORM_STD_ERR_HELP),
       flags = INTERACTIVE | NV_ACCESS,
       key = FORM_CON_ERR_ID;

       goto FORM_CON_COM_ID,
       prompt = STRING_TOKEN(STR_FORM_COM_TITLE),
       help = STRING_TOKEN(STR_FORM_COM_HELP),
       flags = INTERACTIVE | NV_ACCESS,
       key = FORM_CON_COM_ID;
  endform;

  form formid = FORM_CON_COM_ID,
       title = STRING_TOKEN(STR_FORM_COM_TITLE);

       label FORM_CON_COM_ID;
  endform;

  form formid = FORM_CON_COM_SETUP_ID,
       title = STRING_TOKEN(STR_CON_COM_SETUP);

       label FORM_CON_COM_SETUP_ID;
  endform;

  form formid = FORM_FILE_SEEK_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE);

       label FORM_FILE_SEEK_ID;
  endform;

  form formid = FORM_FILE_NEW_SEEK_ID,
       title = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE);

       label FORM_FILE_NEW_SEEK_ID;
  endform;

  form formid = FORM_DRV_ADD_FILE_ID,
       title = STRING_TOKEN(STR_FORM_DRV_ADD_FILE_TITLE);

       label FORM_DRV_ADD_FILE_ID;
  endform;

  form formid = FORM_DRV_ADD_HANDLE_ID,
       title = STRING_TOKEN(STR_FORM_DRV_ADD_HANDLE_TITLE);

       label FORM_DRV_ADD_HANDLE_ID;
  endform;     

  form formid = FORM_DRV_ADD_HANDLE_DESC_ID,
       title = STRING_TOKEN(STR_FORM_DRV_ADD_DESC_TITLE);

       label FORM_DRV_ADD_HANDLE_DESC_ID;

  endform;

  form formid = FORM_CON_IN_ID,
       title = STRING_TOKEN(STR_FORM_CON_IN_TITLE);

       label FORM_CON_IN_ID;

  endform;

  form formid = FORM_CON_OUT_ID,
       title = STRING_TOKEN(STR_FORM_CON_OUT_TITLE);

       label FORM_CON_OUT_ID;

  endform;

  form formid = FORM_CON_ERR_ID,
       title = STRING_TOKEN(STR_FORM_STD_ERR_TITLE);

       label FORM_CON_ERR_ID;

  endform;

  form formid = FORM_SET_FD_ORDER_ID,
       title = STRING_TOKEN(STR_FORM_SET_FD_ORDER_TITLE);

       label FORM_SET_FD_ORDER_ID;
  endform;
  
  form formid = FORM_SET_HD_ORDER_ID,
       title = STRING_TOKEN(STR_FORM_SET_HD_ORDER_TITLE);

       label FORM_SET_HD_ORDER_ID;
  endform;

  form formid = FORM_SET_CD_ORDER_ID,
       title = STRING_TOKEN(STR_FORM_SET_CD_ORDER_TITLE);

       label FORM_SET_CD_ORDER_ID;
  endform;

  form formid = FORM_SET_NET_ORDER_ID,
       title = STRING_TOKEN(STR_FORM_SET_NET_ORDER_TITLE);

       label FORM_SET_NET_ORDER_ID;
  endform;

  form formid = FORM_SET_BEV_ORDER_ID,
       title = STRING_TOKEN(STR_FORM_SET_BEV_ORDER_TITLE);

       label FORM_SET_BEV_ORDER_ID;
  endform;

endformset;
