/** @file
  Legacy Boot Maintainence UI definition.

Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
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.

**/


#ifndef _EFI_LEGACY_BOOT_OPTION_VFR_H_
#define _EFI_LEGACY_BOOT_OPTION_VFR_H_

#include <Guid/HiiBootMaintenanceFormset.h>

#define MAX_MENU_NUMBER 100

#define LEGACY_BOOT_OPTION_FORMSET_GUID  { 0x6bc75598, 0x89b4, 0x483d, { 0x91, 0x60, 0x7f, 0x46, 0x9a, 0x96, 0x35, 0x31 } }

#define VARSTORE_ID_LEGACY_BOOT      0x0001


#define LEGACY_BOOT_FORM_ID          0x1000
#define LEGACY_ORDER_CHANGE_FORM_ID  0x1001


#define FORM_FLOPPY_BOOT_ID          0x2000
#define FORM_HARDDISK_BOOT_ID        0x2001
#define FORM_CDROM_BOOT_ID           0x2002
#define FORM_NET_BOOT_ID             0x2003
#define FORM_BEV_BOOT_ID             0x2004



#define FORM_BOOT_LEGACY_DEVICE_ID   0x9000
#define FORM_BOOT_LEGACY_LABEL_END   0x9001


#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 {
  //
  // Legacy Device Order Selection Storage
  //
  UINT16   LegacyFD[MAX_MENU_NUMBER];
  UINT16   LegacyHD[MAX_MENU_NUMBER];
  UINT16   LegacyCD[MAX_MENU_NUMBER];
  UINT16   LegacyNET[MAX_MENU_NUMBER];
  UINT16   LegacyBEV[MAX_MENU_NUMBER];
} LEGACY_BOOT_NV_DATA;

///
/// 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 {
  //
  // Legacy Device Order Selection Storage
  //
  LEGACY_BOOT_NV_DATA   InitialNvData;
  LEGACY_BOOT_NV_DATA   CurrentNvData;
  LEGACY_BOOT_NV_DATA   LastTimeNvData;
  UINT8                 DisableMap[32];
} LEGACY_BOOT_MAINTAIN_DATA;

#pragma pack()

#endif
