Revision: 19662
          http://sourceforge.net/p/edk2/code/19662
Author:   dandanbi
Date:     2016-01-19 03:28:46 +0000 (Tue, 19 Jan 2016)
Log Message:
-----------
MdeModulePkg?\239?\188?\154Rename BootMaintenanceManagerLib to 
BootMaintenanceManagerUiLib

Avoid any confusion,add the keyword "Ui",
user can understand the use of the library clearly.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <[email protected]>
Reviewed-by: Eric Dong <[email protected]>

Added Paths:
-----------
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BmLib.c
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenance.c
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManager.h
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManager.vfr
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerStrings.uni
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.inf
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootMaintenanceManagerUiLib.uni
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/BootOption.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/ConsoleOption.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/Data.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/FormGuid.h
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/UpdatePage.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerUiLib/Variable.c

Removed Paths:
-------------
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BmLib.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenance.c
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.h
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.vfr
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManagerLib.inf
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManagerLib.uni
    
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManagerStrings.uni
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootOption.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/ConsoleOption.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/Data.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/FormGuid.h
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/UpdatePage.c
    trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/Variable.c

Deleted: trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BmLib.c
===================================================================
--- trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BmLib.c   
2016-01-18 05:51:18 UTC (rev 19661)
+++ trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BmLib.c   
2016-01-19 03:28:46 UTC (rev 19662)
@@ -1,89 +0,0 @@
-/** @file
-Utility routines used by boot maintenance modules.
-
-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.
-
-**/
-
-#include "BootMaintenanceManager.h"
-
-/**
-  Function deletes the variable specified by VarName and VarGuid.
-
-  @param VarName           A Null-terminated Unicode string that is
-                           the name of the vendor's variable.
-
-  @param VarGuid           A unique identifier for the vendor.
-
-  @retval  EFI_SUCCESS           The variable was found and removed
-  @retval  EFI_UNSUPPORTED       The variable store was inaccessible
-  @retval  EFI_NOT_FOUND         The variable was not found
-
-**/
-EFI_STATUS
-EfiLibDeleteVariable (
-  IN CHAR16   *VarName,
-  IN EFI_GUID *VarGuid
-  )
-{
-  return gRT->SetVariable (
-                VarName,
-                VarGuid,
-                0,
-                0,
-                NULL
-                );
-}
-
-/**
-  Function is used to determine the number of device path instances
-  that exist in a device path.
-
-
-  @param DevicePath      A pointer to a device path data structure.
-
-  @return This function counts and returns the number of device path instances
-          in DevicePath.
-
-**/
-UINTN
-EfiDevicePathInstanceCount (
-  IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath
-  )
-{
-  UINTN Count;
-  UINTN Size;
-
-  Count = 0;
-  while (GetNextDevicePathInstance (&DevicePath, &Size) != NULL) {
-    Count += 1;
-  }
-
-  return Count;
-}
-
-/**
-  Get a string from the Data Hub record based on 
-  a device path.
-
-  @param DevPath         The device Path.
-
-  @return A string located from the Data Hub records based on
-          the device path.
-  @retval NULL  If failed to get the String from Data Hub.
-
-**/
-UINT16 *
-EfiLibStrFromDatahub (
-  IN EFI_DEVICE_PATH_PROTOCOL                 *DevPath
-  )
-{
-  return NULL;
-}

Deleted: 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenance.c
===================================================================
--- trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenance.c 
2016-01-18 05:51:18 UTC (rev 19661)
+++ trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenance.c 
2016-01-19 03:28:46 UTC (rev 19662)
@@ -1,1518 +0,0 @@
-/** @file
-The functions for Boot Maintainence Main menu.
-
-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.
-
-**/
-
-#include "BootMaintenanceManager.h"
-
-#define FRONT_PAGE_KEY_OFFSET          0x4000
-//
-// Boot video resolution and text mode.
-//
-UINT32    mBmmBootHorizontalResolution    = 0;
-UINT32    mBmmBootVerticalResolution      = 0;
-UINT32    mBmmBootTextModeColumn          = 0;
-UINT32    mBmmBootTextModeRow             = 0;
-//
-// BIOS setup video resolution and text mode.
-//
-UINT32    mBmmSetupTextModeColumn         = 0;
-UINT32    mBmmSetupTextModeRow            = 0;
-UINT32    mBmmSetupHorizontalResolution   = 0;
-UINT32    mBmmSetupVerticalResolution     = 0;
-
-EFI_DEVICE_PATH_PROTOCOL  EndDevicePath[] = {
-  {
-    END_DEVICE_PATH_TYPE,
-    END_ENTIRE_DEVICE_PATH_SUBTYPE,
-    {
-      END_DEVICE_PATH_LENGTH,
-      0
-    }
-  }
-};
-
-HII_VENDOR_DEVICE_PATH  mBmmHiiVendorDevicePath = {
-  {
-    {
-      HARDWARE_DEVICE_PATH,
-      HW_VENDOR_DP,
-      {
-        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),
-        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)
-      }
-    },
-    //
-    // {165A028F-0BB2-4b5f-8747-77592E3F6499}
-    //
-    { 0x165a028f, 0xbb2, 0x4b5f, { 0x87, 0x47, 0x77, 0x59, 0x2e, 0x3f, 0x64, 
0x99 } }
-  },
-  {
-    END_DEVICE_PATH_TYPE,
-    END_ENTIRE_DEVICE_PATH_SUBTYPE,
-    { 
-      (UINT8) (END_DEVICE_PATH_LENGTH),
-      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)
-    }
-  }
-};
-
-EFI_GUID mBootMaintGuid          = BOOT_MAINT_FORMSET_GUID;
-
-CHAR16  mBootMaintStorageName[]     = L"BmmData";
-BMM_CALLBACK_DATA  gBootMaintenancePrivate = {
-  BMM_CALLBACK_DATA_SIGNATURE,
-  NULL,
-  NULL,
-  {
-    BootMaintExtractConfig,
-    BootMaintRouteConfig,
-    BootMaintCallback
-  }
-};
-
-BMM_CALLBACK_DATA *mBmmCallbackInfo = &gBootMaintenancePrivate;
-BOOLEAN  mAllMenuInit               = FALSE;
-
-/**
-  Init all memu.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-InitAllMenu (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-  Free up all Menu Option list.
-
-**/
-VOID
-FreeAllMenu (
-  VOID
-  );
-
-/**
-  This function will change video resolution and text mode
-  according to defined setup mode or defined boot mode  
-
-  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode. 
-
-  @retval  EFI_SUCCESS  Mode is changed successfully.
-  @retval  Others       Mode failed to be changed.
-
-**/
-EFI_STATUS
-EFIAPI
-BmmBdsSetConsoleMode (
-  BOOLEAN  IsSetupMode
-  )
-{
-  EFI_GRAPHICS_OUTPUT_PROTOCOL          *GraphicsOutput;
-  EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL       *SimpleTextOut;
-  UINTN                                 SizeOfInfo;
-  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *Info;
-  UINT32                                MaxGopMode;
-  UINT32                                MaxTextMode;
-  UINT32                                ModeNumber;
-  UINT32                                NewHorizontalResolution;
-  UINT32                                NewVerticalResolution;
-  UINT32                                NewColumns;
-  UINT32                                NewRows;
-  UINTN                                 HandleCount;
-  EFI_HANDLE                            *HandleBuffer;
-  EFI_STATUS                            Status;
-  UINTN                                 Index;
-  UINTN                                 CurrentColumn;
-  UINTN                                 CurrentRow;  
-
-  MaxGopMode  = 0;
-  MaxTextMode = 0;
-
-  //
-  // Get current video resolution and text mode 
-  //
-  Status = gBS->HandleProtocol (
-                  gST->ConsoleOutHandle,
-                  &gEfiGraphicsOutputProtocolGuid,
-                  (VOID**)&GraphicsOutput
-                  );
-  if (EFI_ERROR (Status)) {
-    GraphicsOutput = NULL;
-  }
-
-  Status = gBS->HandleProtocol (
-                  gST->ConsoleOutHandle,
-                  &gEfiSimpleTextOutProtocolGuid,
-                  (VOID**)&SimpleTextOut
-                  );
-  if (EFI_ERROR (Status)) {
-    SimpleTextOut = NULL;
-  }  
-
-  if ((GraphicsOutput == NULL) || (SimpleTextOut == NULL)) {
-    return EFI_UNSUPPORTED;
-  }
-
-  if (IsSetupMode) {
-    //
-    // The requried resolution and text mode is setup mode.
-    //
-    NewHorizontalResolution = mBmmSetupHorizontalResolution;
-    NewVerticalResolution   = mBmmSetupVerticalResolution;
-    NewColumns              = mBmmSetupTextModeColumn;
-    NewRows                 = mBmmSetupTextModeRow;
-  } else {
-    //
-    // The required resolution and text mode is boot mode.
-    //
-    NewHorizontalResolution = mBmmBootHorizontalResolution;
-    NewVerticalResolution   = mBmmBootVerticalResolution;
-    NewColumns              = mBmmBootTextModeColumn;
-    NewRows                 = mBmmBootTextModeRow;   
-  }
-
-  if (GraphicsOutput != NULL) {
-    MaxGopMode  = GraphicsOutput->Mode->MaxMode;
-  } 
-
-  if (SimpleTextOut != NULL) {
-    MaxTextMode = SimpleTextOut->Mode->MaxMode;
-  }
-
-  //
-  // 1. If current video resolution is same with required video resolution,
-  //    video resolution need not be changed.
-  //    1.1. If current text mode is same with required text mode, text mode 
need not be changed.
-  //    1.2. If current text mode is different from required text mode, text 
mode need be changed.
-  // 2. If current video resolution is different from required video 
resolution, we need restart whole console drivers.
-  //
-  for (ModeNumber = 0; ModeNumber < MaxGopMode; ModeNumber++) {
-    Status = GraphicsOutput->QueryMode (
-                       GraphicsOutput,
-                       ModeNumber,
-                       &SizeOfInfo,
-                       &Info
-                       );
-    if (!EFI_ERROR (Status)) {
-      if ((Info->HorizontalResolution == NewHorizontalResolution) &&
-          (Info->VerticalResolution == NewVerticalResolution)) {
-        if ((GraphicsOutput->Mode->Info->HorizontalResolution == 
NewHorizontalResolution) &&
-            (GraphicsOutput->Mode->Info->VerticalResolution == 
NewVerticalResolution)) {
-          //
-          // Current resolution is same with required resolution, check if 
text mode need be set
-          //
-          Status = SimpleTextOut->QueryMode (SimpleTextOut, 
SimpleTextOut->Mode->Mode, &CurrentColumn, &CurrentRow);
-          ASSERT_EFI_ERROR (Status);
-          if (CurrentColumn == NewColumns && CurrentRow == NewRows) {
-            //
-            // If current text mode is same with required text mode. Do nothing
-            //
-            FreePool (Info);
-            return EFI_SUCCESS;
-          } else {
-            //
-            // If current text mode is different from requried text mode.  Set 
new video mode
-            //
-            for (Index = 0; Index < MaxTextMode; Index++) {
-              Status = SimpleTextOut->QueryMode (SimpleTextOut, Index, 
&CurrentColumn, &CurrentRow);
-              if (!EFI_ERROR(Status)) {
-                if ((CurrentColumn == NewColumns) && (CurrentRow == NewRows)) {
-                  //
-                  // Required text mode is supported, set it.
-                  //
-                  Status = SimpleTextOut->SetMode (SimpleTextOut, Index);
-                  ASSERT_EFI_ERROR (Status);
-                  //
-                  // Update text mode PCD.
-                  //
-                  Status = PcdSet32S (PcdConOutColumn, 
mBmmSetupTextModeColumn);
-                  ASSERT_EFI_ERROR (Status);
-                  Status = PcdSet32S (PcdConOutRow, mBmmSetupTextModeRow);
-                  ASSERT_EFI_ERROR (Status);
-                  FreePool (Info);
-                  return EFI_SUCCESS;
-                }
-              }
-            }
-            if (Index == MaxTextMode) {
-              //
-              // If requried text mode is not supported, return error.
-              //
-              FreePool (Info);
-              return EFI_UNSUPPORTED;
-            }
-          }
-        } else {
-          //
-          // If current video resolution is not same with the new one, set new 
video resolution.
-          // In this case, the driver which produces simple text out need be 
restarted.
-          //
-          Status = GraphicsOutput->SetMode (GraphicsOutput, ModeNumber);
-          if (!EFI_ERROR (Status)) {
-            FreePool (Info);
-            break;
-          }
-        }
-      }
-      FreePool (Info);
-    }
-  }
-
-  if (ModeNumber == MaxGopMode) {
-    //
-    // If the resolution is not supported, return error.
-    //
-    return EFI_UNSUPPORTED;
-  }
-
-  //
-  // Set PCD to Inform GraphicsConsole to change video resolution.
-  // Set PCD to Inform Consplitter to change text mode.
-  //
-  Status = PcdSet32S (PcdVideoHorizontalResolution, NewHorizontalResolution);
-  ASSERT_EFI_ERROR (Status);
-  Status = PcdSet32S (PcdVideoVerticalResolution, NewVerticalResolution);
-  ASSERT_EFI_ERROR (Status);
-  Status = PcdSet32S (PcdConOutColumn, NewColumns);
-  ASSERT_EFI_ERROR (Status);
-  Status = PcdSet32S (PcdConOutRow, NewRows);
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Video mode is changed, so restart graphics console driver and higher 
level driver.
-  // Reconnect graphics console driver and higher level driver.
-  // Locate all the handles with GOP protocol and reconnect it.
-  //
-  Status = gBS->LocateHandleBuffer (
-                   ByProtocol,
-                   &gEfiSimpleTextOutProtocolGuid,
-                   NULL,
-                   &HandleCount,
-                   &HandleBuffer
-                   );
-  if (!EFI_ERROR (Status)) {
-    for (Index = 0; Index < HandleCount; Index++) {
-      gBS->DisconnectController (HandleBuffer[Index], NULL, NULL);
-    }
-    for (Index = 0; Index < HandleCount; Index++) {
-      gBS->ConnectController (HandleBuffer[Index], NULL, NULL, TRUE);
-    }
-    if (HandleBuffer != NULL) {
-      FreePool (HandleBuffer);
-    }
-  }
-
-  return EFI_SUCCESS;
-}
-
-/**
-  This function converts an input device structure to a Unicode string.
-
-  @param DevPath      A pointer to the device path structure.
-
-  @return             A new allocated Unicode string that represents the 
device path.
-
-**/
-CHAR16 *
-UiDevicePathToStr (
-  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath
-  )
-{
-  EFI_STATUS                       Status;
-  CHAR16                           *ToText;
-  EFI_DEVICE_PATH_TO_TEXT_PROTOCOL *DevPathToText;
-
-  if (DevPath == NULL) {
-    return NULL;
-  }
-
-  Status = gBS->LocateProtocol (
-                  &gEfiDevicePathToTextProtocolGuid,
-                  NULL,
-                  (VOID **) &DevPathToText
-                  );
-  ASSERT_EFI_ERROR (Status);
-  ToText = DevPathToText->ConvertDevicePathToText (
-                            DevPath,
-                            FALSE,
-                            TRUE
-                            );
-  ASSERT (ToText != NULL);
-  return ToText;
-}
-
-/**
-  Extract filename from device path. The returned buffer is allocated using 
AllocateCopyPool.
-  The caller is responsible for freeing the allocated buffer using FreePool().
-
-  @param DevicePath       Device path.
-
-  @return                 A new allocated string that represents the file name.
-
-**/
-CHAR16 *
-ExtractFileNameFromDevicePath (
-  IN   EFI_DEVICE_PATH_PROTOCOL *DevicePath
-  )
-{
-  CHAR16          *String;
-  CHAR16          *MatchString;
-  CHAR16          *LastMatch;
-  CHAR16          *FileName;
-  UINTN           Length;
-
-  ASSERT(DevicePath != NULL);
-
-  String = UiDevicePathToStr(DevicePath);
-  MatchString = String;
-  LastMatch   = String;
-
-  while(MatchString != NULL){
-    LastMatch   = MatchString + 1;
-    MatchString = StrStr(LastMatch,L"\\");
-  }
-
-  Length = StrLen(LastMatch);
-  FileName = AllocateCopyPool ((Length + 1) * sizeof(CHAR16), LastMatch);
-  *(FileName + Length) = 0;
-
-  FreePool(String);
-
-  return FileName;
-}
-
-/**
-  Extract device path for given HII handle and class guid.
-
-  @param Handle          The HII handle.
-
-  @retval  NULL          Fail to get the device path string.
-  @return  PathString    Get the device path string.
-
-**/
-CHAR16 *
-BmmExtractDevicePathFromHiiHandle (
-  IN      EFI_HII_HANDLE      Handle
-  )
-{
-  EFI_STATUS                       Status;
-  EFI_HANDLE                       DriverHandle;
-
-  ASSERT (Handle != NULL);
-
-  if (Handle == NULL) {
-    return NULL;
-  }
-
-  Status = gHiiDatabase->GetPackageListHandle (gHiiDatabase, Handle, 
&DriverHandle);
-  if (EFI_ERROR (Status)) {
-    return NULL;
-  }
-
-  //
-  // Get device path string.
-  //
-  return ConvertDevicePathToText(DevicePathFromHandle (DriverHandle), FALSE, 
FALSE);
-
-}
-
-/**
-  This function allows a caller to extract the current configuration for one
-  or more named elements from the target driver.
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Request         A null-terminated Unicode string in <ConfigRequest> 
format.
-  @param Progress        On return, points to a character in the Request 
string.
-                         Points to the string's null terminator if request was 
successful.
-                         Points to the most recent '&' before the first 
failing name/value
-                         pair (or the beginning of the string if the failure 
is in the
-                         first name/value pair) if the request was not 
successful.
-  @param Results         A null-terminated Unicode string in <ConfigAltResp> 
format which
-                         has all values filled in for the names in the Request 
string.
-                         String to be allocated by the called function.
-
-  @retval  EFI_SUCCESS            The Results is filled with the requested 
values.
-  @retval  EFI_OUT_OF_RESOURCES   Not enough memory to store the results.
-  @retval  EFI_INVALID_PARAMETER  Request is NULL, illegal syntax, or unknown 
name.
-  @retval  EFI_NOT_FOUND          Routing data doesn't match any storage in 
this driver.
-
-**/
-EFI_STATUS
-EFIAPI
-BootMaintExtractConfig (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
-  IN  CONST EFI_STRING                       Request,
-  OUT EFI_STRING                             *Progress,
-  OUT EFI_STRING                             *Results
-  )
-{
-  EFI_STATUS         Status;
-  UINTN              BufferSize;
-  BMM_CALLBACK_DATA  *Private;
-  EFI_STRING                       ConfigRequestHdr;
-  EFI_STRING                       ConfigRequest;
-  BOOLEAN                          AllocatedRequest;
-  UINTN                            Size;
-
-  if (Progress == NULL || Results == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  *Progress = Request;
-  if ((Request != NULL) && !HiiIsConfigHdrMatch (Request, &mBootMaintGuid, 
mBootMaintStorageName)) {
-    return EFI_NOT_FOUND;
-  }
-
-  ConfigRequestHdr = NULL;
-  ConfigRequest    = NULL;
-  AllocatedRequest = FALSE;
-  Size             = 0;
-
-  Private = BMM_CALLBACK_DATA_FROM_THIS (This);
-  //
-  // Convert buffer data to <ConfigResp> by helper function BlockToConfig()
-  //
-  BufferSize = sizeof (BMM_FAKE_NV_DATA);
-  ConfigRequest = Request;
-  if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {
-    //
-    // Request has no request element, construct full request string.
-    // Allocate and fill a buffer large enough to hold the <ConfigHdr> template
-    // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a 
Null-terminator
-    //
-    ConfigRequestHdr = HiiConstructConfigHdr (&mBootMaintGuid, 
mBootMaintStorageName, Private->BmmDriverHandle);
-    Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16);
-    ConfigRequest = AllocateZeroPool (Size);
-    ASSERT (ConfigRequest != NULL);
-    AllocatedRequest = TRUE;
-    UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", 
ConfigRequestHdr, (UINT64)BufferSize);
-    FreePool (ConfigRequestHdr);
-  }
-
-  Status = gHiiConfigRouting->BlockToConfig (
-                                gHiiConfigRouting,
-                                ConfigRequest,
-                                (UINT8 *) &Private->BmmFakeNvData,
-                                BufferSize,
-                                Results,
-                                Progress
-                                );
-  //
-  // Free the allocated config request string.
-  //
-  if (AllocatedRequest) {
-    FreePool (ConfigRequest);
-    ConfigRequest = NULL;
-  }
-  //
-  // Set Progress string to the original request string.
-  //
-  if (Request == NULL) {
-    *Progress = NULL;
-  } else if (StrStr (Request, L"OFFSET") == NULL) {
-    *Progress = Request + StrLen (Request);
-  }
-
-  return Status;
-}
-
-/**
-  This function applies changes in a driver's configuration.
-  Input is a Configuration, which has the routing data for this
-  driver followed by name / value configuration pairs. The driver
-  must apply those pairs to its configurable storage. If the
-  driver's configuration is stored in a linear block of data
-  and the driver's name / value pairs are in <BlockConfig>
-  format, it may use the ConfigToBlock helper function (above) to
-  simplify the job. Currently not implemented.
-
-  @param[in]  This                Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param[in]  Configuration       A null-terminated Unicode string in
-                                  <ConfigString> format.   
-  @param[out] Progress            A pointer to a string filled in with the
-                                  offset of the most recent '&' before the
-                                  first failing name / value pair (or the
-                                  beginn ing of the string if the failure
-                                  is in the first name / value pair) or
-                                  the terminating NULL if all was
-                                  successful.
-
-  @retval EFI_SUCCESS             The results have been distributed or are
-                                  awaiting distribution.  
-  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the
-                                  parts of the results that must be
-                                  stored awaiting possible future
-                                  protocols.
-  @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the
-                                  Results parameter would result
-                                  in this type of error.
-  @retval EFI_NOT_FOUND           Target for the specified routing data
-                                  was not found.
-**/
-EFI_STATUS
-EFIAPI
-BootMaintRouteConfig (
-  IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
-  IN CONST EFI_STRING                     Configuration,
-  OUT EFI_STRING                          *Progress
-  )
-{
-  EFI_STATUS                      Status;
-  UINTN                           BufferSize;
-  EFI_HII_CONFIG_ROUTING_PROTOCOL *ConfigRouting;
-  BMM_FAKE_NV_DATA                *NewBmmData;
-  BMM_FAKE_NV_DATA                *OldBmmData;
-  BM_CONSOLE_CONTEXT              *NewConsoleContext;
-  BM_TERMINAL_CONTEXT             *NewTerminalContext;
-  BM_MENU_ENTRY                   *NewMenuEntry;
-  BM_LOAD_CONTEXT                 *NewLoadContext;
-  UINT16                          Index;
-  BOOLEAN                         TerminalAttChange;
-  BMM_CALLBACK_DATA               *Private; 
-
-  if (Progress == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-  *Progress = Configuration;
-
-  if (Configuration == NULL) {
-    return EFI_INVALID_PARAMETER;
-  }
-
-  //
-  // Check routing data in <ConfigHdr>.
-  // Note: there is no name for Name/Value storage, only GUID will be checked
-  //
-  if (!HiiIsConfigHdrMatch (Configuration, &mBootMaintGuid, 
mBootMaintStorageName)) {
-    return EFI_NOT_FOUND;
-  }
-
-  Status = gBS->LocateProtocol (
-                  &gEfiHiiConfigRoutingProtocolGuid, 
-                  NULL, 
-                  (VOID **)&ConfigRouting
-                  );
-  if (EFI_ERROR (Status)) {
-    return Status;
-  }
-
-  Private = BMM_CALLBACK_DATA_FROM_THIS (This);  
-  //
-  // Get Buffer Storage data from EFI variable
-  //
-  BufferSize = sizeof (BMM_FAKE_NV_DATA);
-  OldBmmData = &Private->BmmOldFakeNVData;
-  NewBmmData = &Private->BmmFakeNvData;
-  //
-  // Convert <ConfigResp> to buffer data by helper function ConfigToBlock()
-  //
-  Status = ConfigRouting->ConfigToBlock (
-                            ConfigRouting,
-                            Configuration,
-                            (UINT8 *) NewBmmData,
-                            &BufferSize,
-                            Progress
-                            );
-  ASSERT_EFI_ERROR (Status);    
-  //
-  // Compare new and old BMM configuration data and only do action for 
modified item to 
-  // avoid setting unnecessary non-volatile variable
-  //
-
-  //
-  // Check data which located in BMM main page and save the settings if need
-  //         
-  if (CompareMem (&NewBmmData->BootNext, &OldBmmData->BootNext, sizeof 
(NewBmmData->BootNext)) != 0) {
-    Status = Var_UpdateBootNext (Private);
-  }
-
-  //
-  // Check data which located in Boot Options Menu and save the settings if 
need
-  //      
-  if (CompareMem (NewBmmData->BootOptionDel, OldBmmData->BootOptionDel, sizeof 
(NewBmmData->BootOptionDel)) != 0) {  
-    for (Index = 0; 
-         ((Index < BootOptionMenu.MenuNumber) && (Index < (sizeof 
(NewBmmData->BootOptionDel) / sizeof (NewBmmData->BootOptionDel[0])))); 
-         Index ++) {
-      NewMenuEntry            = BOpt_GetMenuEntry (&BootOptionMenu, Index);
-      NewLoadContext          = (BM_LOAD_CONTEXT *) 
NewMenuEntry->VariableContext;
-      NewLoadContext->Deleted = NewBmmData->BootOptionDel[Index];
-      NewBmmData->BootOptionDel[Index] = FALSE;
-      NewBmmData->BootOptionDelMark[Index] = FALSE;
-    }
-
-    Var_DelBootOption ();
-  }
-
-  if (CompareMem (NewBmmData->BootOptionOrder, OldBmmData->BootOptionOrder, 
sizeof (NewBmmData->BootOptionOrder)) != 0) {
-    Status = Var_UpdateBootOrder (Private);
-  }
-
-  if (CompareMem (&NewBmmData->BootTimeOut, &OldBmmData->BootTimeOut, sizeof 
(NewBmmData->BootTimeOut)) != 0){
-    Status = gRT->SetVariable(
-                    L"Timeout",
-                    &gEfiGlobalVariableGuid,
-                    EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
-                    sizeof(UINT16),
-                    &(NewBmmData->BootTimeOut)
-                    );
-    ASSERT_EFI_ERROR(Status);
-
-    Private->BmmOldFakeNVData.BootTimeOut = NewBmmData->BootTimeOut;
-  }
-
-  //
-  // Check data which located in Driver Options Menu and save the settings if 
need
-  //              
-  if (CompareMem (NewBmmData->DriverOptionDel, OldBmmData->DriverOptionDel, 
sizeof (NewBmmData->DriverOptionDel)) != 0) {       
-    for (Index = 0; 
-         ((Index < DriverOptionMenu.MenuNumber) && (Index < (sizeof 
(NewBmmData->DriverOptionDel) / sizeof (NewBmmData->DriverOptionDel[0])))); 
-         Index++) {
-      NewMenuEntry            = BOpt_GetMenuEntry (&DriverOptionMenu, Index);
-      NewLoadContext          = (BM_LOAD_CONTEXT *) 
NewMenuEntry->VariableContext;
-      NewLoadContext->Deleted = NewBmmData->DriverOptionDel[Index];
-      NewBmmData->DriverOptionDel[Index] = FALSE;
-      NewBmmData->DriverOptionDelMark[Index] = FALSE;
-    }
-    Var_DelDriverOption ();  
-  }
-
-  if (CompareMem (NewBmmData->DriverOptionOrder, 
OldBmmData->DriverOptionOrder, sizeof (NewBmmData->DriverOptionOrder)) != 0) {  
-    Status = Var_UpdateDriverOrder (Private);
-  }
-
-  if (CompareMem (&NewBmmData->ConsoleOutMode, &OldBmmData->ConsoleOutMode, 
sizeof (NewBmmData->ConsoleOutMode)) != 0){
-    Var_UpdateConMode(Private);
-  }
-
-  TerminalAttChange = FALSE;
-  for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {
-
-    //
-    // only need update modified items
-    //
-    if (CompareMem (&NewBmmData->COMBaudRate[Index], 
&OldBmmData->COMBaudRate[Index], sizeof (NewBmmData->COMBaudRate[Index])) == 0 
&&
-         CompareMem (&NewBmmData->COMDataRate[Index], 
&OldBmmData->COMDataRate[Index], sizeof (NewBmmData->COMDataRate[Index])) == 0 
&&
-         CompareMem (&NewBmmData->COMStopBits[Index], 
&OldBmmData->COMStopBits[Index], sizeof (NewBmmData->COMStopBits[Index])) == 0 
&&
-         CompareMem (&NewBmmData->COMParity[Index], 
&OldBmmData->COMParity[Index], sizeof (NewBmmData->COMParity[Index])) == 0 &&
-         CompareMem (&NewBmmData->COMTerminalType[Index], 
&OldBmmData->COMTerminalType[Index], sizeof 
(NewBmmData->COMTerminalType[Index])) == 0 &&
-         CompareMem (&NewBmmData->COMFlowControl[Index], 
&OldBmmData->COMFlowControl[Index], sizeof (NewBmmData->COMFlowControl[Index])) 
== 0) {
-      continue;
-    }
-
-    NewMenuEntry = BOpt_GetMenuEntry (&TerminalMenu, Index);
-    ASSERT (NewMenuEntry != NULL);
-    NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;
-    NewTerminalContext->BaudRateIndex = NewBmmData->COMBaudRate[Index];
-    ASSERT (NewBmmData->COMBaudRate[Index] < (sizeof (BaudRateList) / sizeof 
(BaudRateList[0])));
-    NewTerminalContext->BaudRate      = 
BaudRateList[NewBmmData->COMBaudRate[Index]].Value;
-    NewTerminalContext->DataBitsIndex = NewBmmData->COMDataRate[Index];
-    ASSERT (NewBmmData->COMDataRate[Index] < (sizeof (DataBitsList) / sizeof 
(DataBitsList[0])));
-    NewTerminalContext->DataBits      = (UINT8) 
DataBitsList[NewBmmData->COMDataRate[Index]].Value;
-    NewTerminalContext->StopBitsIndex = NewBmmData->COMStopBits[Index];
-    ASSERT (NewBmmData->COMStopBits[Index] < (sizeof (StopBitsList) / sizeof 
(StopBitsList[0])));
-    NewTerminalContext->StopBits      = (UINT8) 
StopBitsList[NewBmmData->COMStopBits[Index]].Value;
-    NewTerminalContext->ParityIndex   = NewBmmData->COMParity[Index];
-    ASSERT (NewBmmData->COMParity[Index] < (sizeof (ParityList) / sizeof 
(ParityList[0])));
-    NewTerminalContext->Parity        = (UINT8) 
ParityList[NewBmmData->COMParity[Index]].Value;
-    NewTerminalContext->TerminalType  = NewBmmData->COMTerminalType[Index];
-    NewTerminalContext->FlowControl   = NewBmmData->COMFlowControl[Index];
-    ChangeTerminalDevicePath (
-      NewTerminalContext->DevicePath,
-      FALSE
-      );
-    TerminalAttChange = TRUE;
-  }
-  if (TerminalAttChange) {
-    Var_UpdateConsoleInpOption ();
-    Var_UpdateConsoleOutOption ();
-    Var_UpdateErrorOutOption ();
-  }
-  //
-  // Check data which located in Console Options Menu and save the settings if 
need
-  //
-  if (CompareMem (NewBmmData->ConsoleInCheck, OldBmmData->ConsoleInCheck, 
sizeof (NewBmmData->ConsoleInCheck)) != 0){
-    for (Index = 0; Index < ConsoleInpMenu.MenuNumber; Index++){
-      NewMenuEntry                = BOpt_GetMenuEntry(&ConsoleInpMenu, Index);
-      NewConsoleContext           = (BM_CONSOLE_CONTEXT 
*)NewMenuEntry->VariableContext;
-      ASSERT (Index < MAX_MENU_NUMBER);
-      NewConsoleContext->IsActive = NewBmmData->ConsoleInCheck[Index];
-    }
-    for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {
-      NewMenuEntry                = BOpt_GetMenuEntry (&TerminalMenu, Index);
-      NewTerminalContext          = (BM_TERMINAL_CONTEXT *) 
NewMenuEntry->VariableContext;
-      ASSERT (Index + ConsoleInpMenu.MenuNumber < MAX_MENU_NUMBER);
-      NewTerminalContext->IsConIn = NewBmmData->ConsoleInCheck[Index + 
ConsoleInpMenu.MenuNumber];
-    }
-    Var_UpdateConsoleInpOption();
-  }
-
-  if (CompareMem (NewBmmData->ConsoleOutCheck, OldBmmData->ConsoleOutCheck, 
sizeof (NewBmmData->ConsoleOutCheck)) != 0){
-    for (Index = 0; Index < ConsoleOutMenu.MenuNumber; Index++){
-      NewMenuEntry                = BOpt_GetMenuEntry(&ConsoleOutMenu, Index);
-      NewConsoleContext           = (BM_CONSOLE_CONTEXT 
*)NewMenuEntry->VariableContext;
-      ASSERT (Index < MAX_MENU_NUMBER);
-      NewConsoleContext->IsActive = NewBmmData->ConsoleOutCheck[Index];
-    }
-    for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {
-      NewMenuEntry                = BOpt_GetMenuEntry (&TerminalMenu, Index);
-      NewTerminalContext          = (BM_TERMINAL_CONTEXT *) 
NewMenuEntry->VariableContext;
-      ASSERT (Index + ConsoleOutMenu.MenuNumber < MAX_MENU_NUMBER);
-      NewTerminalContext->IsConOut = NewBmmData->ConsoleOutCheck[Index + 
ConsoleOutMenu.MenuNumber];
-    }
-    Var_UpdateConsoleOutOption();
-  }
-
-  if (CompareMem (NewBmmData->ConsoleErrCheck, OldBmmData->ConsoleErrCheck, 
sizeof (NewBmmData->ConsoleErrCheck)) != 0){
-    for (Index = 0; Index < ConsoleErrMenu.MenuNumber; Index++){
-      NewMenuEntry                = BOpt_GetMenuEntry(&ConsoleErrMenu, Index);
-      NewConsoleContext           = (BM_CONSOLE_CONTEXT 
*)NewMenuEntry->VariableContext;
-      ASSERT (Index < MAX_MENU_NUMBER);
-      NewConsoleContext->IsActive = NewBmmData->ConsoleErrCheck[Index];
-    }
-    for (Index = 0; Index < TerminalMenu.MenuNumber; Index++) {
-      NewMenuEntry                = BOpt_GetMenuEntry (&TerminalMenu, Index);
-      NewTerminalContext          = (BM_TERMINAL_CONTEXT *) 
NewMenuEntry->VariableContext;
-      ASSERT (Index + ConsoleErrMenu.MenuNumber < MAX_MENU_NUMBER);
-      NewTerminalContext->IsStdErr = NewBmmData->ConsoleErrCheck[Index + 
ConsoleErrMenu.MenuNumber];
-    }
-    Var_UpdateErrorOutOption();
-  }
-
-  if (CompareMem (NewBmmData->BootDescriptionData, 
OldBmmData->BootDescriptionData, sizeof (NewBmmData->BootDescriptionData)) != 0 
||
-       CompareMem (NewBmmData->BootOptionalData, OldBmmData->BootOptionalData, 
sizeof (NewBmmData->BootOptionalData)) != 0) {
-    Status = Var_UpdateBootOption (Private);
-    NewBmmData->BootOptionChanged = FALSE;
-    if (EFI_ERROR (Status)) {
-      return Status;
-    }
-    BOpt_GetBootOptions (Private);
-  }
-
-  if (CompareMem (NewBmmData->DriverDescriptionData, 
OldBmmData->DriverDescriptionData, sizeof (NewBmmData->DriverDescriptionData)) 
!= 0 ||
-       CompareMem (NewBmmData->DriverOptionalData, 
OldBmmData->DriverOptionalData, sizeof (NewBmmData->DriverOptionalData)) != 0) {
-    Status = Var_UpdateDriverOption (
-              Private,
-              Private->BmmHiiHandle,
-              NewBmmData->DriverDescriptionData,
-              NewBmmData->DriverOptionalData,
-              NewBmmData->ForceReconnect
-              );
-    NewBmmData->DriverOptionChanged = FALSE;
-    NewBmmData->ForceReconnect      = TRUE;
-    if (EFI_ERROR (Status)) {
-      return Status;
-    }
-
-    BOpt_GetDriverOptions (Private);
-  }
-
-  //
-  // After user do the save action, need to update OldBmmData.
-  //
-  CopyMem (OldBmmData, NewBmmData, sizeof (BMM_FAKE_NV_DATA));
-
-  return EFI_SUCCESS;
-}
-
-/**
-  This function processes the results of changes in configuration.
-
-
-  @param This               Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Action             Specifies the type of action taken by the browser.
-  @param QuestionId         A unique value which is sent to the original 
exporting driver
-                            so that it can identify the type of data to expect.
-  @param Type               The type of value for the question.
-  @param Value              A pointer to the data being sent to the original 
exporting driver.
-  @param ActionRequest      On return, points to the action requested by the 
callback function.
-
-  @retval EFI_SUCCESS           The callback successfully handled the action.
-  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the 
variable and its data.
-  @retval EFI_DEVICE_ERROR      The variable could not be saved.
-  @retval EFI_UNSUPPORTED       The specified Action is not supported by the 
callback.
-  @retval EFI_INVALID_PARAMETER The parameter of Value or ActionRequest is 
invalid.
-**/
-EFI_STATUS
-EFIAPI
-BootMaintCallback (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL         *This,
-  IN        EFI_BROWSER_ACTION                     Action,
-  IN        EFI_QUESTION_ID                        QuestionId,
-  IN        UINT8                                  Type,
-  IN        EFI_IFR_TYPE_VALUE                     *Value,
-  OUT       EFI_BROWSER_ACTION_REQUEST             *ActionRequest
-  )
-{
-  BMM_CALLBACK_DATA *Private;
-  BM_MENU_ENTRY     *NewMenuEntry;
-  BMM_FAKE_NV_DATA  *CurrentFakeNVMap;
-  UINTN             OldValue;
-  UINTN             NewValue;
-  UINTN             Number;
-  UINTN             Index;
-  EFI_DEVICE_PATH_PROTOCOL * File;
-
-  if (Action != EFI_BROWSER_ACTION_CHANGING && Action != 
EFI_BROWSER_ACTION_CHANGED) {
-    //
-    // Do nothing for other UEFI Action. Only do call back when data is 
changed.
-    //
-    return EFI_UNSUPPORTED;
-  }
-  OldValue       = 0;
-  NewValue       = 0;
-  Number         = 0;
-
-  Private        = BMM_CALLBACK_DATA_FROM_THIS (This);
-  //
-  // Retrive uncommitted data from Form Browser
-  //
-  CurrentFakeNVMap = &Private->BmmFakeNvData;
-  HiiGetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof 
(BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap);
-
-  if (Action == EFI_BROWSER_ACTION_CHANGING) {
-    if (Value == NULL) {
-      return EFI_INVALID_PARAMETER;
-    }
-    
-    UpdatePageId (Private, QuestionId);
-
-    if (QuestionId < FILE_OPTION_OFFSET) {
-      if (QuestionId < CONFIG_OPTION_OFFSET) {
-        switch (QuestionId) {
-        case FORM_BOOT_ADD_ID:
-          // Leave BMM and enter FileExplorer. 
-          ChooseFile( NULL, L".efi", (CHOOSE_HANDLER) 
CreateBootOptionFromFile, &File);
-          break;
-
-        case FORM_DRV_ADD_FILE_ID:
-          // Leave BMM and enter FileExplorer.
-          ChooseFile( NULL, L".efi", (CHOOSE_HANDLER) 
CreateDriverOptionFromFile, &File);
-          break;
-
-        case FORM_DRV_ADD_HANDLE_ID:
-          CleanUpPage (FORM_DRV_ADD_HANDLE_ID, Private);
-          UpdateDrvAddHandlePage (Private);
-          break;
-
-        case FORM_BOOT_DEL_ID:
-          CleanUpPage (FORM_BOOT_DEL_ID, Private);
-          UpdateBootDelPage (Private);
-          break;
-
-        case FORM_BOOT_CHG_ID:
-        case FORM_DRV_CHG_ID:
-          UpdatePageBody (QuestionId, Private);
-          break;
-
-        case FORM_DRV_DEL_ID:
-          CleanUpPage (FORM_DRV_DEL_ID, Private);
-          UpdateDrvDelPage (Private);
-          break;
-
-        case FORM_BOOT_NEXT_ID:
-          CleanUpPage (FORM_BOOT_NEXT_ID, Private);
-          UpdateBootNextPage (Private);
-          break;
-
-        case FORM_TIME_OUT_ID:
-          CleanUpPage (FORM_TIME_OUT_ID, Private);
-          UpdateTimeOutPage (Private);
-          break;
-
-        case FORM_CON_IN_ID:
-        case FORM_CON_OUT_ID:
-        case FORM_CON_ERR_ID:
-          UpdatePageBody (QuestionId, Private);
-          break;
-
-        case FORM_CON_MODE_ID:
-          CleanUpPage (FORM_CON_MODE_ID, Private);
-          UpdateConModePage (Private);
-          break;
-
-        case FORM_CON_COM_ID:
-          CleanUpPage (FORM_CON_COM_ID, Private);
-          UpdateConCOMPage (Private);
-          break;
-
-        default:
-          break;
-        }
-      } else if ((QuestionId >= TERMINAL_OPTION_OFFSET) && (QuestionId < 
CONSOLE_OPTION_OFFSET)) {
-        Index                  = (UINT16) (QuestionId - 
TERMINAL_OPTION_OFFSET);
-        Private->CurrentTerminal  = Index;
-
-        CleanUpPage (FORM_CON_COM_SETUP_ID, Private);
-        UpdateTerminalPage (Private);
-
-      } else if (QuestionId >= HANDLE_OPTION_OFFSET) {
-        Index                  = (UINT16) (QuestionId - HANDLE_OPTION_OFFSET);
-
-        NewMenuEntry            = BOpt_GetMenuEntry (&DriverMenu, Index);
-        ASSERT (NewMenuEntry != NULL);
-        Private->HandleContext  = (BM_HANDLE_CONTEXT *) 
NewMenuEntry->VariableContext;
-
-        CleanUpPage (FORM_DRV_ADD_HANDLE_DESC_ID, Private);
-
-        Private->MenuEntry                  = NewMenuEntry;
-        Private->LoadContext->FilePathList  = 
Private->HandleContext->DevicePath;
-
-        UpdateDriverAddHandleDescPage (Private);
-      }
-    }
-    if (QuestionId == KEY_VALUE_BOOT_FROM_FILE){
-      // Leave BMM and enter FileExplorer.
-      ChooseFile( NULL, L".efi", (CHOOSE_HANDLER) BootFromFile, &File);
-    }
-  } else if (Action == EFI_BROWSER_ACTION_CHANGED) {
-    if ((Value == NULL) || (ActionRequest == NULL)) {
-      return EFI_INVALID_PARAMETER;
-    }
-   
-    if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_BOOT) {
-      CurrentFakeNVMap->BootOptionChanged = FALSE;
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
-    } else if (QuestionId == KEY_VALUE_SAVE_AND_EXIT_DRIVER) {
-      CurrentFakeNVMap->DriverOptionChanged = FALSE;
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
-    } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT_DRIVER) {
-      //
-      // Discard changes and exit formset
-      //
-      CurrentFakeNVMap->DriverOptionalData[0]     = 0x0000;
-      CurrentFakeNVMap->DriverDescriptionData[0]  = 0x0000;
-      CurrentFakeNVMap->DriverOptionChanged = FALSE;
-      CurrentFakeNVMap->ForceReconnect      = TRUE;
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
-    } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT_BOOT) {
-      //
-      // Discard changes and exit formset
-      //
-      CurrentFakeNVMap->BootOptionalData[0]     = 0x0000;
-      CurrentFakeNVMap->BootDescriptionData[0]  = 0x0000;
-      CurrentFakeNVMap->BootOptionChanged = FALSE;
-      *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
-    } else if (QuestionId == KEY_VALUE_BOOT_DESCRIPTION || QuestionId == 
KEY_VALUE_BOOT_OPTION) {
-      CurrentFakeNVMap->BootOptionChanged = TRUE;
-    } else if (QuestionId == KEY_VALUE_DRIVER_DESCRIPTION || QuestionId == 
KEY_VALUE_DRIVER_OPTION) {
-      CurrentFakeNVMap->DriverOptionChanged = TRUE;
-    } 
-
-    if ((QuestionId >= BOOT_OPTION_DEL_QUESTION_ID) && (QuestionId < 
BOOT_OPTION_DEL_QUESTION_ID + MAX_MENU_NUMBER)) {
-      if (Value->b){
-        //
-        // Means user try to delete this boot option but not press F10 or 
"Commit Changes and Exit" menu.
-        //
-        CurrentFakeNVMap->BootOptionDelMark[QuestionId - 
BOOT_OPTION_DEL_QUESTION_ID] = TRUE;
-      } else {
-        //
-        // Means user remove the old check status.
-        //
-        CurrentFakeNVMap->BootOptionDelMark[QuestionId - 
BOOT_OPTION_DEL_QUESTION_ID] = FALSE;
-      }
-    } else if ((QuestionId >= DRIVER_OPTION_DEL_QUESTION_ID) && (QuestionId < 
DRIVER_OPTION_DEL_QUESTION_ID + MAX_MENU_NUMBER)) {
-      if (Value->b){
-        CurrentFakeNVMap->DriverOptionDelMark[QuestionId - 
DRIVER_OPTION_DEL_QUESTION_ID] = TRUE;
-      } else {
-        CurrentFakeNVMap->DriverOptionDelMark[QuestionId - 
DRIVER_OPTION_DEL_QUESTION_ID] = FALSE;
-      }
-    } else {
-      switch (QuestionId) {
-      case KEY_VALUE_SAVE_AND_EXIT:
-      case KEY_VALUE_NO_SAVE_AND_EXIT:
-        if (QuestionId == KEY_VALUE_SAVE_AND_EXIT) {
-          *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT;
-        } else if (QuestionId == KEY_VALUE_NO_SAVE_AND_EXIT) {
-          DiscardChangeHandler (Private, CurrentFakeNVMap);
-          *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
-        }
-
-        break;
-
-      case FORM_RESET:
-        gRT->ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL);
-        return EFI_UNSUPPORTED;
-
-      default:
-        break;
-      }
-    }
-  }
-
-  //
-  // Pass changed uncommitted data back to Form Browser
-  //
-  HiiSetBrowserData (&mBootMaintGuid, mBootMaintStorageName, sizeof 
(BMM_FAKE_NV_DATA), (UINT8 *) CurrentFakeNVMap, NULL);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Discard all changes done to the BMM pages such as Boot Order change,
-  Driver order change.
-
-  @param Private            The BMM context data.
-  @param CurrentFakeNVMap   The current Fack NV Map.
-
-**/
-VOID
-DiscardChangeHandler (
-  IN  BMM_CALLBACK_DATA               *Private,
-  IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap
-  )
-{
-  UINT16  Index;
-
-  switch (Private->BmmPreviousPageId) {
-  case FORM_BOOT_CHG_ID:
-    CopyMem (CurrentFakeNVMap->BootOptionOrder, 
Private->BmmOldFakeNVData.BootOptionOrder, sizeof 
(CurrentFakeNVMap->BootOptionOrder));
-    break;
-
-  case FORM_DRV_CHG_ID:
-    CopyMem (CurrentFakeNVMap->DriverOptionOrder, 
Private->BmmOldFakeNVData.DriverOptionOrder, sizeof 
(CurrentFakeNVMap->DriverOptionOrder));
-    break;
-
-  case FORM_BOOT_DEL_ID:
-    ASSERT (BootOptionMenu.MenuNumber <= (sizeof 
(CurrentFakeNVMap->BootOptionDel) / sizeof 
(CurrentFakeNVMap->BootOptionDel[0])));
-    for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {
-      CurrentFakeNVMap->BootOptionDel[Index] = FALSE;
-    }
-    break;
-
-  case FORM_DRV_DEL_ID:
-    ASSERT (DriverOptionMenu.MenuNumber <= (sizeof 
(CurrentFakeNVMap->DriverOptionDel) / sizeof 
(CurrentFakeNVMap->DriverOptionDel[0])));
-    for (Index = 0; Index < DriverOptionMenu.MenuNumber; Index++) {
-      CurrentFakeNVMap->DriverOptionDel[Index] = FALSE;
-    }
-    break;
-
-  case FORM_BOOT_NEXT_ID:
-    CurrentFakeNVMap->BootNext = Private->BmmOldFakeNVData.BootNext;
-    break;
-
-  case FORM_TIME_OUT_ID:
-    CurrentFakeNVMap->BootTimeOut = Private->BmmOldFakeNVData.BootTimeOut;
-    break;
-
-  case FORM_DRV_ADD_HANDLE_DESC_ID:
-  case FORM_DRV_ADD_FILE_ID:
-  case FORM_DRV_ADD_HANDLE_ID:
-    CurrentFakeNVMap->DriverAddHandleDesc[0]          = 0x0000;
-    CurrentFakeNVMap->DriverAddHandleOptionalData[0]  = 0x0000;
-    break;
-
-  default:
-    break;
-  }
-}
-
-/**
-  Create dynamic code for BMM.
-
-  @param  BmmCallbackInfo        The BMM context data.
-
-**/
-VOID
-InitializeDrivers(
-  IN BMM_CALLBACK_DATA        *BmmCallbackInfo
-  )
-{
-  EFI_HII_HANDLE              HiiHandle;
-  VOID                        *StartOpCodeHandle;
-  VOID                        *EndOpCodeHandle;
-  EFI_IFR_GUID_LABEL          *StartLabel;
-  EFI_IFR_GUID_LABEL          *EndLabel;
-  UINTN                       Index;    
-  EFI_STRING                  String;
-  EFI_STRING_ID               Token;
-  EFI_STRING_ID               TokenHelp;  
-  EFI_HII_HANDLE              *HiiHandles;
-  EFI_GUID                    FormSetGuid;
-  CHAR16                      *DevicePathStr;
-  EFI_STRING_ID               DevicePathId;
-  EFI_IFR_FORM_SET            *Buffer;      
-  UINTN                       BufferSize;   
-  UINT8                       ClassGuidNum; 
-  EFI_GUID                    *ClassGuid;   
-  UINTN                       TempSize;
-  UINT8                       *Ptr;
-  EFI_STATUS                  Status;
-
-  TempSize =0;
-  BufferSize = 0;
-  Buffer = NULL;
-
-  HiiHandle = BmmCallbackInfo->BmmHiiHandle;
-  //
-  // Allocate space for creation of UpdateData Buffer
-  //
-  StartOpCodeHandle = HiiAllocateOpCodeHandle ();
-  ASSERT (StartOpCodeHandle != NULL);
-
-  EndOpCodeHandle = HiiAllocateOpCodeHandle ();
-  ASSERT (EndOpCodeHandle != NULL);
-
-  //
-  // Create Hii Extend Label OpCode as the start opcode
-  //
-  StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, 
&gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));
-  StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
-  StartLabel->Number       = LABEL_BMM_PLATFORM_INFORMATION;
-
-  //
-  // Create Hii Extend Label OpCode as the end opcode
-  //
-  EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, 
&gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));
-  EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;
-  EndLabel->Number       = LABEL_END;
-
-  //
-  // Get all the Hii handles
-  //
-  HiiHandles = HiiGetHiiHandles (NULL);
-  ASSERT (HiiHandles != NULL);
-
-  //
-  // Search for formset of each class type
-  //
-  for (Index = 0; HiiHandles[Index] != NULL; Index++) {
-    Status = HiiGetFormSetFromHiiHandle(HiiHandles[Index], 
&Buffer,&BufferSize);
-    if (EFI_ERROR (Status)) {
-      continue;
-    }
-
-    Ptr = (UINT8 *)Buffer;
-    while(TempSize < BufferSize)  {
-      TempSize += ((EFI_IFR_OP_HEADER *) Ptr)->Length;
-
-      if (((EFI_IFR_OP_HEADER *) Ptr)->Length <= OFFSET_OF (EFI_IFR_FORM_SET, 
Flags)){
-        Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;
-        continue;
-      }
-
-      //
-      // Find FormSet OpCode
-      //
-      ClassGuidNum = (UINT8) (((EFI_IFR_FORM_SET *)Ptr)->Flags & 0x3);
-      ClassGuid = (EFI_GUID *) (VOID *)(Ptr + sizeof (EFI_IFR_FORM_SET));
-      while (ClassGuidNum-- > 0) {
-        if (CompareGuid (&gEfiIfrBootMaintenanceGuid, ClassGuid) == 0){
-          ClassGuid ++;
-          continue;
-        }
-
-        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET 
*)Ptr)->FormSetTitle, NULL);
-        if (String == NULL) {
-          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), 
NULL);
-          ASSERT (String != NULL);
-        }
-        Token = HiiSetString (HiiHandle, 0, String, NULL);
-        FreePool (String);
-
-        String = HiiGetString (HiiHandles[Index], ((EFI_IFR_FORM_SET 
*)Ptr)->Help, NULL);
-        if (String == NULL) {
-          String = HiiGetString (HiiHandle, STRING_TOKEN (STR_MISSING_STRING), 
NULL);
-          ASSERT (String != NULL);
-        }
-        TokenHelp = HiiSetString (HiiHandle, 0, String, NULL);
-        FreePool (String);
-
-        FormSetGuid = ((EFI_IFR_FORM_SET *)Ptr)->Guid;
-
-        DevicePathStr = BmmExtractDevicePathFromHiiHandle(HiiHandles[Index]);
-        DevicePathId  = 0;
-        if (DevicePathStr != NULL){
-          DevicePathId = HiiSetString (HiiHandle, 0, DevicePathStr, NULL);
-          FreePool (DevicePathStr);
-        }
-         HiiCreateGotoExOpCode (
-           StartOpCodeHandle,
-           0,
-           Token,
-           TokenHelp,
-           0,
-           (EFI_QUESTION_ID) (Index + FRONT_PAGE_KEY_OFFSET),
-           0,
-           &FormSetGuid,
-           DevicePathId
-         );
-        break;
-      }
-      Ptr += ((EFI_IFR_OP_HEADER *) Ptr)->Length;
-    }
-
-    FreePool(Buffer);
-    Buffer = NULL;
-    TempSize = 0;
-    BufferSize = 0;
-  } 
-  
-  HiiUpdateForm (
-    HiiHandle,
-    &mBootMaintGuid,
-    FORM_MAIN_ID,
-    StartOpCodeHandle,
-    EndOpCodeHandle
-    );
-
-  HiiFreeOpCodeHandle (StartOpCodeHandle);
-  HiiFreeOpCodeHandle (EndOpCodeHandle);  
-  FreePool (HiiHandles);
-}
-
-/**
-   Create dynamic code for BMM and initialize all of BMM configuration data in 
BmmFakeNvData and
-   BmmOldFakeNVData member in BMM context data.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-InitializeBmmConfig (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  )
-{
-  BM_MENU_ENTRY   *NewMenuEntry;
-  BM_LOAD_CONTEXT *NewLoadContext;
-  UINT16          Index;
-
-  ASSERT (CallbackData != NULL);
-
-  InitializeDrivers (CallbackData);
-
-  //
-  // Initialize data which located in BMM main page
-  //
-  CallbackData->BmmFakeNvData.BootNext = NONE_BOOTNEXT_VALUE;
-  for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {
-    NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);
-    NewLoadContext  = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;
-
-    if (NewLoadContext->IsBootNext) {
-      CallbackData->BmmFakeNvData.BootNext = Index;
-      break;
-    }
-  }
-
-  CallbackData->BmmFakeNvData.BootTimeOut = PcdGet16 (PcdPlatformBootTimeOut);
-
-  //
-  // Initialize data which located in Boot Options Menu
-  //
-  GetBootOrder (CallbackData);
-
-  //
-  // Initialize data which located in Driver Options Menu
-  //
-  GetDriverOrder (CallbackData);
-
-  //
-  // Initialize data which located in Console Options Menu
-  //
-  GetConsoleOutMode (CallbackData);
-  GetConsoleInCheck (CallbackData);
-  GetConsoleOutCheck (CallbackData);
-  GetConsoleErrCheck (CallbackData);
-  GetTerminalAttribute (CallbackData);
-
-  CallbackData->BmmFakeNvData.ForceReconnect = TRUE;
-
-  //
-  // Backup Initialize BMM configuartion data to BmmOldFakeNVData
-  //
-  CopyMem (&CallbackData->BmmOldFakeNVData, &CallbackData->BmmFakeNvData, 
sizeof (BMM_FAKE_NV_DATA));
-}
-
-/**
-  Initialized all Menu Option List.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-InitAllMenu (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  )
-{
-  InitializeListHead (&BootOptionMenu.Head);
-  InitializeListHead (&DriverOptionMenu.Head);
-  BOpt_GetBootOptions (CallbackData);
-  BOpt_GetDriverOptions (CallbackData);
-  BOpt_FindDrivers ();
-  InitializeListHead (&ConsoleInpMenu.Head);
-  InitializeListHead (&ConsoleOutMenu.Head);
-  InitializeListHead (&ConsoleErrMenu.Head);
-  InitializeListHead (&TerminalMenu.Head);
-  LocateSerialIo ();
-  GetAllConsoles ();
-  mAllMenuInit = TRUE;
-}
-
-/**
-  Free up all Menu Option list.
-
-**/
-VOID
-FreeAllMenu (
-  VOID
-  )
-{
-  if (!mAllMenuInit){
-    return;
-  }
-  BOpt_FreeMenu (&BootOptionMenu);
-  BOpt_FreeMenu (&DriverOptionMenu);
-  BOpt_FreeMenu (&DriverMenu);
-  FreeAllConsoles ();
-  mAllMenuInit = FALSE;
-}
-
-/**
-
-  Install Boot Maintenance Manager Menu driver.
-
-  @param ImageHandle     The image handle.
-  @param SystemTable     The system table.
-
-  @retval  EFI_SUCEESS  Install Boot manager menu success.
-  @retval  Other        Return error status.
-
-**/
-EFI_STATUS
-EFIAPI
-BootMaintenanceManagerLibConstructor (
-  IN EFI_HANDLE                            ImageHandle,
-  IN EFI_SYSTEM_TABLE                      *SystemTable
-  )
-
-{
-  EFI_STATUS               Status;
-  UINT8                    *Ptr;
-
-  Status = EFI_SUCCESS;
-
-  //
-  // Install Device Path Protocol and Config Access protocol to driver handle
-  //
-  Status = gBS->InstallMultipleProtocolInterfaces (
-                  &mBmmCallbackInfo->BmmDriverHandle,
-                  &gEfiDevicePathProtocolGuid,
-                  &mBmmHiiVendorDevicePath,
-                  &gEfiHiiConfigAccessProtocolGuid,
-                  &mBmmCallbackInfo->BmmConfigAccess,
-                  NULL
-                  );
-  ASSERT_EFI_ERROR (Status);
-
-  //
-  // Post our Boot Maint VFR binary to the HII database.
-  //
-  mBmmCallbackInfo->BmmHiiHandle = HiiAddPackages (
-                                    &mBootMaintGuid,
-                                    mBmmCallbackInfo->BmmDriverHandle,
-                                    BootMaintenanceManagerBin,
-                                    BootMaintenanceManagerLibStrings,
-                                    NULL
-                                    );
-  ASSERT (mBmmCallbackInfo->BmmHiiHandle != NULL);
-
-  //
-  // Locate Formbrowser2 protocol
-  //
-  Status = gBS->LocateProtocol (&gEfiFormBrowser2ProtocolGuid, NULL, (VOID **) 
&mBmmCallbackInfo->FormBrowser2);
-  ASSERT_EFI_ERROR (Status);
-
-  EfiBootManagerRefreshAllBootOption ();
-
-  //
-  // Create LoadOption in BmmCallbackInfo for Driver Callback
-  //
-  Ptr = AllocateZeroPool (sizeof (BM_LOAD_CONTEXT) + sizeof (BM_FILE_CONTEXT) 
+ sizeof (BM_HANDLE_CONTEXT) + sizeof (BM_MENU_ENTRY));
-  ASSERT (Ptr != NULL);
-
-  //
-  // Initialize Bmm callback data.
-  //
-  mBmmCallbackInfo->LoadContext = (BM_LOAD_CONTEXT *) Ptr;
-  Ptr += sizeof (BM_LOAD_CONTEXT);
-
-  mBmmCallbackInfo->FileContext = (BM_FILE_CONTEXT *) Ptr;
-  Ptr += sizeof (BM_FILE_CONTEXT);
-
-  mBmmCallbackInfo->HandleContext = (BM_HANDLE_CONTEXT *) Ptr;
-  Ptr += sizeof (BM_HANDLE_CONTEXT);
-
-  mBmmCallbackInfo->MenuEntry     = (BM_MENU_ENTRY *) Ptr;
-
-  mBmmCallbackInfo->BmmPreviousPageId  = FORM_MAIN_ID;
-  mBmmCallbackInfo->BmmCurrentPageId   = FORM_MAIN_ID;
-
-  InitAllMenu (mBmmCallbackInfo);
-
-  CreateUpdateData();
-  //
-  // Update boot maintenance manager page 
-  //
-  InitializeBmmConfig(mBmmCallbackInfo);
-
-  return EFI_SUCCESS;
-}
-
-/**
-  Unloads the application and its installed protocol.
-
-  @param ImageHandle       Handle that identifies the image to be unloaded.
-  @param  SystemTable      The system table.
-
-  @retval EFI_SUCCESS      The image has been unloaded.
-
-**/
-EFI_STATUS
-EFIAPI
-BootMaintenanceManagerLibDestructor (
-  IN EFI_HANDLE                            ImageHandle,
-  IN EFI_SYSTEM_TABLE                      *SystemTable
-  )
-
-{
-  if (mStartOpCodeHandle != NULL) {
-    HiiFreeOpCodeHandle (mStartOpCodeHandle);
-  }
-
-  if (mEndOpCodeHandle != NULL) {
-    HiiFreeOpCodeHandle (mEndOpCodeHandle);
-  }
-
-  FreeAllMenu ();
-
-  //
-  // Remove our IFR data from HII database
-  //
-  HiiRemovePackages (mBmmCallbackInfo->BmmHiiHandle);
-
-  gBS->UninstallMultipleProtocolInterfaces (
-         mBmmCallbackInfo->BmmDriverHandle,
-         &gEfiDevicePathProtocolGuid,
-         &mBmmHiiVendorDevicePath,
-         &gEfiHiiConfigAccessProtocolGuid,
-         &mBmmCallbackInfo->BmmConfigAccess,
-         NULL
-         );
-
-  FreePool (mBmmCallbackInfo->LoadContext);
-
-  return EFI_SUCCESS;
-}
-

Deleted: 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.h
===================================================================
--- 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.h
  2016-01-18 05:51:18 UTC (rev 19661)
+++ 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.h
  2016-01-19 03:28:46 UTC (rev 19662)
@@ -1,1388 +0,0 @@
-/** @file
-Header file for boot maintenance module.
-
-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 _BOOT_MAINT_H_
-#define _BOOT_MAINT_H_
-
-#include "FormGuid.h"
-
-#include <Guid/TtyTerm.h>
-#include <Guid/MdeModuleHii.h>
-#include <Guid/FileSystemVolumeLabelInfo.h>
-#include <Guid/GlobalVariable.h>
-#include <Guid/HiiBootMaintenanceFormset.h>
-
-#include <Protocol/LoadFile.h>
-#include <Protocol/HiiConfigAccess.h>
-#include <Protocol/SimpleFileSystem.h>
-#include <Protocol/SerialIo.h>
-#include <Protocol/DevicePathToText.h>
-
-#include <Library/PrintLib.h>
-#include <Library/DebugLib.h>
-#include <Library/BaseMemoryLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/UefiRuntimeServicesTableLib.h>
-#include <Library/DevicePathLib.h>
-#include <Library/HiiLib.h>
-#include <Library/UefiHiiServicesLib.h>
-#include <Library/UefiBootManagerLib.h>
-#include <Library/FileExplorerLib.h>
-
-#pragma pack(1)
-
-///
-/// HII specific Vendor Device Path definition.
-///
-typedef struct {
-  VENDOR_DEVICE_PATH             VendorDevicePath;
-  EFI_DEVICE_PATH_PROTOCOL       End;
-} HII_VENDOR_DEVICE_PATH;
-#pragma pack()
-
-//
-// Constants which are variable names used to access variables
-//
-
-#define VAR_CON_OUT_MODE L"ConOutMode"
-
-//
-// Variable created with this flag will be "Efi:...."
-//
-#define VAR_FLAG  EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE
-
-extern EFI_GUID mBootMaintGuid;
-extern CHAR16   mBootMaintStorageName[];
-//
-// These are the VFR compiler generated data representing our VFR data.
-//
-extern UINT8    BootMaintenanceManagerBin[];
-
-//
-// Below are the number of options in Baudrate, Databits,
-// Parity and Stopbits selection for serial ports.
-//
-#define BM_COM_ATTR_BUADRATE  19
-#define BM_COM_ATTR_DATABITS  4
-#define BM_COM_ATTR_PARITY    5
-#define BM_COM_ATTR_STOPBITS  3
-
-//
-// Callback function helper
-//
-#define BMM_CALLBACK_DATA_SIGNATURE     SIGNATURE_32 ('C', 'b', 'c', 'k')
-#define BMM_CALLBACK_DATA_FROM_THIS(a)  CR (a, BMM_CALLBACK_DATA, 
BmmConfigAccess, BMM_CALLBACK_DATA_SIGNATURE)
-
-//
-// Enumeration type definition
-//
-typedef UINT8 BBS_TYPE;
-
-typedef enum _TYPE_OF_TERMINAL {
-  TerminalTypePcAnsi                = 0,
-  TerminalTypeVt100,
-  TerminalTypeVt100Plus,
-  TerminalTypeVtUtf8,
-  TerminalTypeTtyTerm
-} TYPE_OF_TERMINAL;
-
-//
-// All of the signatures that will be used in list structure
-//
-#define BM_MENU_OPTION_SIGNATURE      SIGNATURE_32 ('m', 'e', 'n', 'u')
-#define BM_LOAD_OPTION_SIGNATURE      SIGNATURE_32 ('l', 'o', 'a', 'd')
-#define BM_CONSOLE_OPTION_SIGNATURE   SIGNATURE_32 ('c', 'n', 's', 'l')
-#define BM_FILE_OPTION_SIGNATURE      SIGNATURE_32 ('f', 'i', 'l', 'e')
-#define BM_HANDLE_OPTION_SIGNATURE    SIGNATURE_32 ('h', 'n', 'd', 'l')
-#define BM_TERMINAL_OPTION_SIGNATURE  SIGNATURE_32 ('t', 'r', 'm', 'l')
-#define BM_MENU_ENTRY_SIGNATURE       SIGNATURE_32 ('e', 'n', 't', 'r')
-
-#define BM_LOAD_CONTEXT_SELECT        0x0
-#define BM_CONSOLE_CONTEXT_SELECT     0x1
-#define BM_FILE_CONTEXT_SELECT        0x2
-#define BM_HANDLE_CONTEXT_SELECT      0x3
-#define BM_TERMINAL_CONTEXT_SELECT    0x5
-
-#define BM_CONSOLE_IN_CONTEXT_SELECT  0x6
-#define BM_CONSOLE_OUT_CONTEXT_SELECT 0x7
-#define BM_CONSOLE_ERR_CONTEXT_SELECT 0x8
-
-//
-// Buffer size for update data
-//
-#define UPDATE_DATA_SIZE        0x100000
-
-//
-// Namespace of callback keys used in display and file system navigation
-//
-#define MAX_BBS_OFFSET          0xE000
-#define NET_OPTION_OFFSET       0xD800
-#define BEV_OPTION_OFFSET       0xD000
-#define FD_OPTION_OFFSET        0xC000
-#define HD_OPTION_OFFSET        0xB000
-#define CD_OPTION_OFFSET        0xA000
-#define FILE_OPTION_OFFSET      0x8000
-#define FILE_OPTION_MASK        0x7FFF
-#define HANDLE_OPTION_OFFSET    0x7000
-#define CONSOLE_OPTION_OFFSET   0x6000
-#define TERMINAL_OPTION_OFFSET  0x5000
-#define CONFIG_OPTION_OFFSET    0x1200
-#define KEY_VALUE_OFFSET        0x1100
-#define FORM_ID_OFFSET          0x1000
-
-//
-// VarOffset that will be used to create question
-// all these values are computed from the structure
-// defined below
-//
-#define VAR_OFFSET(Field)              ((UINT16) ((UINTN) &(((BMM_FAKE_NV_DATA 
*) 0)->Field)))
-
-//
-// Question Id of Zero is invalid, so add an offset to it
-//
-#define QUESTION_ID(Field)             (VAR_OFFSET (Field) + 
CONFIG_OPTION_OFFSET)
-
-#define BOOT_TIME_OUT_VAR_OFFSET        VAR_OFFSET (BootTimeOut)
-#define BOOT_NEXT_VAR_OFFSET            VAR_OFFSET (BootNext)
-#define COM1_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM1BaudRate)
-#define COM1_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM1DataRate)
-#define COM1_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM1StopBits)
-#define COM1_PARITY_VAR_OFFSET          VAR_OFFSET (COM1Parity)
-#define COM1_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
-#define COM2_BAUD_RATE_VAR_OFFSET       VAR_OFFSET (COM2BaudRate)
-#define COM2_DATA_RATE_VAR_OFFSET       VAR_OFFSET (COM2DataRate)
-#define COM2_STOP_BITS_VAR_OFFSET       VAR_OFFSET (COM2StopBits)
-#define COM2_PARITY_VAR_OFFSET          VAR_OFFSET (COM2Parity)
-#define COM2_TERMINAL_VAR_OFFSET        VAR_OFFSET (COM2TerminalType)
-#define DRV_ADD_HANDLE_DESC_VAR_OFFSET  VAR_OFFSET (DriverAddHandleDesc)
-#define DRV_ADD_ACTIVE_VAR_OFFSET       VAR_OFFSET (DriverAddActive)
-#define DRV_ADD_RECON_VAR_OFFSET        VAR_OFFSET (DriverAddForceReconnect)
-#define CON_IN_COM1_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM1)
-#define CON_IN_COM2_VAR_OFFSET          VAR_OFFSET (ConsoleInputCOM2)
-#define CON_OUT_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM1)
-#define CON_OUT_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleOutputCOM2)
-#define CON_ERR_COM1_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM1)
-#define CON_ERR_COM2_VAR_OFFSET         VAR_OFFSET (ConsoleErrorCOM2)
-#define CON_MODE_VAR_OFFSET             VAR_OFFSET (ConsoleOutMode)
-#define CON_DEVICE_VAR_OFFSET           VAR_OFFSET (ConsoleCheck)
-#define CON_IN_DEVICE_VAR_OFFSET        VAR_OFFSET (ConsoleInCheck)
-#define CON_OUT_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleOutCheck)
-#define CON_ERR_DEVICE_VAR_OFFSET       VAR_OFFSET (ConsoleErrCheck)
-#define BOOT_OPTION_ORDER_VAR_OFFSET    VAR_OFFSET (BootOptionOrder)
-#define DRIVER_OPTION_ORDER_VAR_OFFSET  VAR_OFFSET (DriverOptionOrder)
-#define BOOT_OPTION_DEL_VAR_OFFSET      VAR_OFFSET (BootOptionDel)
-#define DRIVER_OPTION_DEL_VAR_OFFSET    VAR_OFFSET (DriverOptionDel)
-#define DRIVER_ADD_OPTION_VAR_OFFSET    VAR_OFFSET 
(DriverAddHandleOptionalData)
-#define COM_BAUD_RATE_VAR_OFFSET        VAR_OFFSET (COMBaudRate)
-#define COM_DATA_RATE_VAR_OFFSET        VAR_OFFSET (COMDataRate)
-#define COM_STOP_BITS_VAR_OFFSET        VAR_OFFSET (COMStopBits)
-#define COM_PARITY_VAR_OFFSET           VAR_OFFSET (COMParity)
-#define COM_TERMINAL_VAR_OFFSET         VAR_OFFSET (COMTerminalType)
-#define COM_FLOWCONTROL_VAR_OFFSET      VAR_OFFSET (COMFlowControl)
-
-#define BOOT_TIME_OUT_QUESTION_ID       QUESTION_ID (BootTimeOut)
-#define BOOT_NEXT_QUESTION_ID           QUESTION_ID (BootNext)
-#define COM1_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM1BaudRate)
-#define COM1_DATA_RATE_QUESTION_ID      QUESTION_ID (COM1DataRate)
-#define COM1_STOP_BITS_QUESTION_ID      QUESTION_ID (COM1StopBits)
-#define COM1_PARITY_QUESTION_ID         QUESTION_ID (COM1Parity)
-#define COM1_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
-#define COM2_BAUD_RATE_QUESTION_ID      QUESTION_ID (COM2BaudRate)
-#define COM2_DATA_RATE_QUESTION_ID      QUESTION_ID (COM2DataRate)
-#define COM2_STOP_BITS_QUESTION_ID      QUESTION_ID (COM2StopBits)
-#define COM2_PARITY_QUESTION_ID         QUESTION_ID (COM2Parity)
-#define COM2_TERMINAL_QUESTION_ID       QUESTION_ID (COM2TerminalType)
-#define DRV_ADD_HANDLE_DESC_QUESTION_ID QUESTION_ID (DriverAddHandleDesc)
-#define DRV_ADD_ACTIVE_QUESTION_ID      QUESTION_ID (DriverAddActive)
-#define DRV_ADD_RECON_QUESTION_ID       QUESTION_ID (DriverAddForceReconnect)
-#define CON_IN_COM1_QUESTION_ID         QUESTION_ID (ConsoleInputCOM1)
-#define CON_IN_COM2_QUESTION_ID         QUESTION_ID (ConsoleInputCOM2)
-#define CON_OUT_COM1_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM1)
-#define CON_OUT_COM2_QUESTION_ID        QUESTION_ID (ConsoleOutputCOM2)
-#define CON_ERR_COM1_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM1)
-#define CON_ERR_COM2_QUESTION_ID        QUESTION_ID (ConsoleErrorCOM2)
-#define CON_MODE_QUESTION_ID            QUESTION_ID (ConsoleOutMode)
-#define CON_DEVICE_QUESTION_ID          QUESTION_ID (ConsoleCheck)
-#define CON_IN_DEVICE_QUESTION_ID       QUESTION_ID (ConsoleInCheck)
-#define CON_OUT_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleOutCheck)
-#define CON_ERR_DEVICE_QUESTION_ID      QUESTION_ID (ConsoleErrCheck)
-#define BOOT_OPTION_ORDER_QUESTION_ID   QUESTION_ID (BootOptionOrder)
-#define DRIVER_OPTION_ORDER_QUESTION_ID QUESTION_ID (DriverOptionOrder)
-#define BOOT_OPTION_DEL_QUESTION_ID     QUESTION_ID (BootOptionDel)
-#define DRIVER_OPTION_DEL_QUESTION_ID   QUESTION_ID (DriverOptionDel)
-#define DRIVER_ADD_OPTION_QUESTION_ID   QUESTION_ID 
(DriverAddHandleOptionalData)
-#define COM_BAUD_RATE_QUESTION_ID       QUESTION_ID (COMBaudRate)
-#define COM_DATA_RATE_QUESTION_ID       QUESTION_ID (COMDataRate)
-#define COM_STOP_BITS_QUESTION_ID       QUESTION_ID (COMStopBits)
-#define COM_PARITY_QUESTION_ID          QUESTION_ID (COMParity)
-#define COM_TERMINAL_QUESTION_ID        QUESTION_ID (COMTerminalType)
-#define COM_FLOWCONTROL_QUESTION_ID     QUESTION_ID (COMFlowControl)
-
-#define STRING_DEPOSITORY_NUMBER        8
-
-#define NONE_BOOTNEXT_VALUE             (0xFFFF + 1)
-
-///
-/// Serial Ports attributes, first one is the value for
-/// return from callback function, stringtoken is used to
-/// display the value properly
-///
-typedef struct {
-  UINTN   Value;
-  UINT16  StringToken;
-} COM_ATTR;
-
-typedef struct {
-  UINT64                    BaudRate;
-  UINT8                     DataBits;
-  UINT8                     Parity;
-  UINT8                     StopBits;
-
-  UINT8                     BaudRateIndex;
-  UINT8                     DataBitsIndex;
-  UINT8                     ParityIndex;
-  UINT8                     StopBitsIndex;
-
-  UINT8                     FlowControl;
-
-  UINT8                     IsConIn;
-  UINT8                     IsConOut;
-  UINT8                     IsStdErr;
-  UINT8                     TerminalType;
-
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
-} BM_TERMINAL_CONTEXT;
-
-typedef struct {
-  BOOLEAN                   IsBootNext;
-  BOOLEAN                   LoadOptionModified;
-  BOOLEAN                   Deleted;
-
-  BOOLEAN                   IsLegacy;
-  BOOLEAN                   IsActive;
-  BOOLEAN                   ForceReconnect;
-  UINTN                     OptionalDataSize;
-
-  UINTN                     LoadOptionSize;
-  UINT8                     *LoadOption;
-
-  UINT32                    Attributes;
-  UINT16                    FilePathListLength;
-  UINT16                    *Description;
-  EFI_DEVICE_PATH_PROTOCOL  *FilePathList;
-  UINT8                     *OptionalData;
-
-  UINT16                    BbsIndex;
-} BM_LOAD_CONTEXT;
-
-typedef struct {
-
-  BOOLEAN                   IsActive;
-
-  BOOLEAN                   IsTerminal;
-
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
-} BM_CONSOLE_CONTEXT;
-
-typedef struct {
-  UINTN   Column;
-  UINTN   Row;
-} CONSOLE_OUT_MODE;
-
-typedef struct {
-  EFI_HANDLE                        Handle;
-  EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
-  EFI_FILE_HANDLE                   FHandle;
-  UINT16                            *FileName;
-  EFI_FILE_SYSTEM_VOLUME_LABEL      *Info;
-
-  BOOLEAN                           IsRoot;
-  BOOLEAN                           IsDir;
-  BOOLEAN                           IsRemovableMedia;
-  BOOLEAN                           IsLoadFile;
-  BOOLEAN                           IsBootLegacy;
-} BM_FILE_CONTEXT;
-
-typedef struct {
-  EFI_HANDLE                Handle;
-  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
-} BM_HANDLE_CONTEXT;
-
-typedef struct {
-  UINTN           Signature;
-  LIST_ENTRY      Head;
-  UINTN           MenuNumber;
-} BM_MENU_OPTION;
-
-typedef struct {
-  UINTN           Signature;
-  LIST_ENTRY      Link;
-  UINTN           OptionNumber;
-  UINT16          *DisplayString;
-  UINT16          *HelpString;
-  EFI_STRING_ID   DisplayStringToken;
-  EFI_STRING_ID   HelpStringToken;
-  UINTN           ContextSelection;
-  VOID            *VariableContext;
-} BM_MENU_ENTRY;
-
-typedef struct {
-  
-  UINTN                          Signature;
-
-  EFI_HII_HANDLE                 BmmHiiHandle;
-  EFI_HANDLE                     BmmDriverHandle;
-  ///
-  /// Boot Maintenance  Manager Produced protocols
-  ///
-  EFI_HII_CONFIG_ACCESS_PROTOCOL BmmConfigAccess;
-  EFI_FORM_BROWSER2_PROTOCOL     *FormBrowser2;
-
-  BM_MENU_ENTRY                  *MenuEntry;
-  BM_HANDLE_CONTEXT              *HandleContext;
-  BM_FILE_CONTEXT                *FileContext;
-  BM_LOAD_CONTEXT                *LoadContext;
-  BM_TERMINAL_CONTEXT            *TerminalContext;
-  UINTN                          CurrentTerminal;
-  BBS_TYPE                       BbsType;
-
-  //
-  // BMM main formset callback data.
-  //
-  
-  EFI_FORM_ID                    BmmCurrentPageId;
-  EFI_FORM_ID                    BmmPreviousPageId;
-  BOOLEAN                        BmmAskSaveOrNot;
-  BMM_FAKE_NV_DATA               BmmFakeNvData;
-  BMM_FAKE_NV_DATA               BmmOldFakeNVData;
-
-} BMM_CALLBACK_DATA;
-
-/**
-
-  Find drivers that will be added as Driver#### variables from handles
-  in current system environment
-  All valid handles in the system except those consume SimpleFs, LoadFile
-  are stored in DriverMenu for future use.
-
-  @retval EFI_SUCCESS The function complets successfully.
-  @return Other value if failed to build the DriverMenu.
-
-**/
-EFI_STATUS
-BOpt_FindDrivers (
-  VOID
-  );
-
-/**
-
-  Build the BootOptionMenu according to BootOrder Variable.
-  This Routine will access the Boot#### to get EFI_LOAD_OPTION.
-
-  @param CallbackData The BMM context data.
-
-  @return The number of the Var Boot####.
-
-**/
-EFI_STATUS
-BOpt_GetBootOptions (
-  IN  BMM_CALLBACK_DATA         *CallbackData
-  );
-
-/**
-
-  Build up all DriverOptionMenu
-
-  @param CallbackData The BMM context data.
-
-  @return EFI_SUCESS The functin completes successfully.
-  @retval EFI_OUT_OF_RESOURCES Not enough memory to compete the operation.
-  
-
-**/
-EFI_STATUS
-BOpt_GetDriverOptions (
-  IN  BMM_CALLBACK_DATA         *CallbackData
-  );
-
-/**
-  Free resources allocated in Allocate Rountine.
-
-  @param FreeMenu        Menu to be freed
-
-**/
-VOID
-BOpt_FreeMenu (
-  BM_MENU_OPTION        *FreeMenu
-  );
-
-/**
-
-  Get the Option Number that has not been allocated for use.
-
-  @param Type  The type of Option.
-
-  @return The available Option Number.
-
-**/
-UINT16
-BOpt_GetOptionNumber (
-  CHAR16        *Type
-  );
-
-/**
-
-  Get the Option Number for Boot#### that does not used.
-
-  @return The available Option Number.
-
-**/
-UINT16
-BOpt_GetBootOptionNumber (
-  VOID
-  );
-
-/**
-
-Get the Option Number for Driver#### that does not used.
-
-@return The unused Option Number.
-
-**/
-UINT16
-BOpt_GetDriverOptionNumber (
-  VOID
-  );
-
-/**
-  Create a menu entry give a Menu type.
-
-  @param MenuType        The Menu type to be created.
-
-
-  @retval NULL           If failed to create the menu.
-  @return                The menu.
-
-**/
-BM_MENU_ENTRY                     *
-BOpt_CreateMenuEntry (
-  UINTN           MenuType
-  );
-
-/**
-  Free up all resource allocated for a BM_MENU_ENTRY.
-
-  @param MenuEntry   A pointer to BM_MENU_ENTRY.
-
-**/
-VOID
-BOpt_DestroyMenuEntry (
-  BM_MENU_ENTRY         *MenuEntry
-  );
-
-/**
-  Get the Menu Entry from the list in Menu Entry List.
-
-  If MenuNumber is great or equal to the number of Menu
-  Entry in the list, then ASSERT.
-
-  @param MenuOption      The Menu Entry List to read the menu entry.
-  @param MenuNumber      The index of Menu Entry.
-
-  @return The Menu Entry.
-
-**/
-BM_MENU_ENTRY                     *
-BOpt_GetMenuEntry (
-  BM_MENU_OPTION      *MenuOption,
-  UINTN               MenuNumber
-  );
-
-/**
-  Get option number according to Boot#### and BootOrder variable. 
-  The value is saved as #### + 1.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID  
-GetBootOrder (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-  Get driver option order from globalc DriverOptionMenu.
-
-  @param CallbackData    The BMM context data.
-  
-**/
-VOID  
-GetDriverOrder (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-//
-// Locate all serial io devices for console
-//
-/**
-  Build a list containing all serial devices.
-
-  @retval EFI_SUCCESS The function complete successfully.
-  @retval EFI_UNSUPPORTED No serial ports present.
-
-**/
-EFI_STATUS
-LocateSerialIo (
-  VOID
-  );
-
-//
-// Initializing Console menu
-//
-/**
-  Build up ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
-
-  @retval EFI_SUCCESS    The function always complete successfully.
-
-**/
-EFI_STATUS
-GetAllConsoles(
-  VOID
-  );
-
-//
-// Get current mode information
-//
-/**
-  Get mode number according to column and row
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-GetConsoleOutMode (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-//
-// Cleaning up console menu
-//
-/**
-  Free ConsoleOutMenu, ConsoleInpMenu and ConsoleErrMenu
-
-  @retval EFI_SUCCESS    The function always complete successfully.
-**/
-EFI_STATUS
-FreeAllConsoles (
-  VOID
-  );
-
-/**
-  Update the device path that describing a terminal device
-  based on the new BaudRate, Data Bits, parity and Stop Bits
-  set.
-
-  @param DevicePath     The devicepath protocol instance wanted to be updated.
-
-**/
-VOID
-ChangeVariableDevicePath (
-  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath
-  );
-
-/**
-  Update the multi-instance device path of Terminal Device based on
-  the global TerminalMenu. If ChangeTernimal is TRUE, the terminal 
-  device path in the Terminal Device in TerminalMenu is also updated.
-
-  @param DevicePath      The multi-instance device path.
-  @param ChangeTerminal  TRUE, then device path in the Terminal Device 
-                         in TerminalMenu is also updated; FALSE, no update.
-
-  @return EFI_SUCCESS    The function completes successfully.
-
-**/
-EFI_STATUS
-ChangeTerminalDevicePath (
-  IN OUT EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
-  IN BOOLEAN                   ChangeTerminal
-  );
-
-//
-// Variable operation by menu selection
-//
-/**
-  This function create a currently loaded Boot Option from 
-  the BMM. It then appends this Boot Option to the end of 
-  the "BootOrder" list. It also append this Boot Opotion to the end
-  of BootOptionMenu.
-
-  @param CallbackData           The BMM context data.
-
-  @retval EFI_OUT_OF_RESOURCES  If not enought memory to complete the 
operation.
-  @retval EFI_SUCCESS           If function completes successfully.
-
-**/
-EFI_STATUS
-Var_UpdateBootOption (
-  IN  BMM_CALLBACK_DATA                   *CallbackData
-  );
-
-/**
-  Delete Boot Option that represent a Deleted state in BootOptionMenu.
-  After deleting this boot option, call Var_ChangeBootOrder to
-  make sure BootOrder is in valid state.
-
-  @retval EFI_SUCCESS   If all boot load option EFI Variables corresponding to 
 
-                        BM_LOAD_CONTEXT marked for deletion is deleted
-  @return Others        If failed to update the "BootOrder" variable after 
deletion. 
-
-**/
-EFI_STATUS
-Var_DelBootOption (
-  VOID
-  );
-
-/**
-  After any operation on Boot####, there will be a discrepancy in BootOrder.
-  Since some are missing but in BootOrder, while some are present but are
-  not reflected by BootOrder. Then a function rebuild BootOrder from
-  scratch by content from BootOptionMenu is needed.
-
-  @retval  EFI_SUCCESS  The boot order is updated successfully.
-  @return  other than EFI_SUCCESS if failed to change the "BootOrder" EFI 
Variable.
-
-**/
-EFI_STATUS
-Var_ChangeBootOrder (
-  VOID
-  );
-
-/**
-  This function create a currently loaded Drive Option from 
-  the BMM. It then appends this Driver Option to the end of 
-  the "DriverOrder" list. It append this Driver Opotion to the end
-  of DriverOptionMenu.
-
-  @param CallbackData    The BMM context data.
-  @param HiiHandle       The HII handle associated with the BMM formset.
-  @param DescriptionData The description of this driver option.
-  @param OptionalData    The optional load option.
-  @param ForceReconnect  If to force reconnect.
-
-  @retval EFI_OUT_OF_RESOURCES If not enought memory to complete the operation.
-  @retval EFI_SUCCESS          If function completes successfully.
-
-**/
-EFI_STATUS
-Var_UpdateDriverOption (
-  IN  BMM_CALLBACK_DATA         *CallbackData,
-  IN  EFI_HII_HANDLE            HiiHandle,
-  IN  UINT16                    *DescriptionData,
-  IN  UINT16                    *OptionalData,
-  IN  UINT8                     ForceReconnect
-  );
-
-/**
-  Delete Load Option that represent a Deleted state in BootOptionMenu.
-  After deleting this Driver option, call Var_ChangeDriverOrder to
-  make sure DriverOrder is in valid state.
-
-  @retval EFI_SUCCESS Load Option is successfully updated.
-  @return Other value than EFI_SUCCESS if failed to update "Driver Order" EFI
-          Variable.
-
-**/
-EFI_STATUS
-Var_DelDriverOption (
-  VOID
-  );
-
-/**
-  After any operation on Driver####, there will be a discrepancy in
-  DriverOrder. Since some are missing but in DriverOrder, while some
-  are present but are not reflected by DriverOrder. Then a function
-  rebuild DriverOrder from scratch by content from DriverOptionMenu is
-  needed.
-
-  @retval  EFI_SUCCESS  The driver order is updated successfully.
-  @return  other than EFI_SUCCESS if failed to set the "DriverOrder" EFI 
Variable.
-
-**/
-EFI_STATUS
-Var_ChangeDriverOrder (
-  VOID
-  );
-
-/**
-  This function delete and build multi-instance device path ConIn
-  console device.
-
-  @retval EFI_SUCCESS    The function complete successfully.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.
-**/
-EFI_STATUS
-Var_UpdateConsoleInpOption (
-  VOID
-  );
-
-/**
-  This function delete and build multi-instance device path ConOut console 
device.
-
-  @retval EFI_SUCCESS    The function complete successfully.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.
-**/
-EFI_STATUS
-Var_UpdateConsoleOutOption (
-  VOID
-  );
-
-/**
-  This function delete and build multi-instance device path ErrOut console 
device.
-
-  @retval EFI_SUCCESS    The function complete successfully.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.
-**/
-EFI_STATUS
-Var_UpdateErrorOutOption (
-  VOID
-  );
-
-/**
-  This function delete and build Out of Band console device.
-  
-  @param   MenuIndex   Menu index which user select in the terminal menu list.
-  
-  @retval EFI_SUCCESS    The function complete successfully.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.  
-**/
-EFI_STATUS
-Var_UpdateOutOfBandOption (
-  IN  UINT16           MenuIndex
-  );
-
-/**
-  Update the device path of "ConOut", "ConIn" and "ErrOut" based on the new 
BaudRate, Data Bits, 
-  parity and stop Bits set.
-
-**/
-VOID
-Var_UpdateAllConsoleOption (
-  VOID
-  );
-
-/**
-  This function update the "BootNext" EFI Variable. If there is no "BootNex" 
specified in BMM, 
-  this EFI Variable is deleted.
-  It also update the BMM context data specified the "BootNext" value.
-
-  @param CallbackData    The BMM context data.
-
-  @retval EFI_SUCCESS    The function complete successfully.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.
-
-**/
-EFI_STATUS
-Var_UpdateBootNext (
-  IN BMM_CALLBACK_DATA            *CallbackData
-  );
-
-/**
-  This function update the "BootOrder" EFI Variable based on BMM Formset's NV 
map. It then refresh 
-  BootOptionMenu with the new "BootOrder" list.
-
-  @param CallbackData           The BMM context data.
-
-  @retval EFI_SUCCESS           The function complete successfully.
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
-  @return not The EFI variable can not be saved. See gRT->SetVariable for 
detail return information.
-
-**/
-EFI_STATUS
-Var_UpdateBootOrder (
-  IN BMM_CALLBACK_DATA            *CallbackData
-  );
-
-/**
-  This function update the "DriverOrder" EFI Variable based on
-  BMM Formset's NV map. It then refresh DriverOptionMenu
-  with the new "DriverOrder" list.
-
-  @param CallbackData    The BMM context data.
-
-  @retval EFI_SUCCESS           The function complete successfully.
-  @retval EFI_OUT_OF_RESOURCES  Not enough memory to complete the function.
-  @return The EFI variable can not be saved. See gRT->SetVariable for detail 
return information.
-
-**/
-EFI_STATUS
-Var_UpdateDriverOrder (
-  IN BMM_CALLBACK_DATA            *CallbackData
-  );
-
-/**
-  Update the Text Mode of Console.
-
-  @param CallbackData  The context data for BMM.
-
-  @retval EFI_SUCCSS If the Text Mode of Console is updated.
-  @return Other value if the Text Mode of Console is not updated.
-
-**/
-EFI_STATUS
-Var_UpdateConMode (
-  IN BMM_CALLBACK_DATA            *CallbackData
-  );
-
-//
-// Following are page create and refresh functions
-//
-/**
- Create the global UpdateData structure.
-
-**/
-VOID
-CreateUpdateData (
-  VOID
-  );
-
-/**
-  Refresh the global UpdateData structure.
-
-**/
-VOID
-RefreshUpdateData (
-  VOID
-  );
-
-/**
-  Clean up the dynamic opcode at label and form specified by
-  both LabelId. 
-
-  @param LabelId         It is both the Form ID and Label ID for
-                         opcode deletion.
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-CleanUpPage (
-  IN UINT16                           LabelId,
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create a lit of boot option from global BootOptionMenu. It
-  allow user to delete the boot option.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-UpdateBootDelPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create a lit of driver option from global DriverMenu.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateDrvAddHandlePage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create a lit of driver option from global DriverOptionMenu. It
-  allow user to delete the driver option.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateDrvDelPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Prepare the page to allow user to add description for a Driver Option.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateDriverAddHandleDescPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Dispatch the correct update page function to call based on the UpdatePageId.
-
-  @param UpdatePageId    The form ID.
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdatePageBody (
-  IN UINT16                           UpdatePageId,
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create the dynamic page to allow user to set the "BootNext" vaule.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateBootNextPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create the dynamic page to allow user to set the "TimeOut" vaule.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateTimeOutPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create the dynamic page which allows user to set the property such as Baud 
Rate, Data Bits,
-  Parity, Stop Bits, Terminal Type.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateTerminalPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Refresh the text mode page
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateConModePage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
-  Create a list of Goto Opcode for all terminal devices logged
-  by TerminaMenu. This list will be inserted to form FORM_CON_COM_SETUP_ID.
-
-  @param CallbackData    The BMM context data.
-**/
-VOID
-UpdateConCOMPage (
-  IN BMM_CALLBACK_DATA                *CallbackData
-  );
-
-/**
- Update add boot/driver option page.
-
-  @param CallbackData    The BMM context data.
-  @param FormId             The form ID to be updated.
-  @param DevicePath       Device path.
-
-**/
-VOID
-UpdateOptionPage(
-  IN   BMM_CALLBACK_DATA        *CallbackData,
-  IN   EFI_FORM_ID              FormId,
-  IN   EFI_DEVICE_PATH_PROTOCOL *DevicePath
-  );
-
-/**
-  Function deletes the variable specified by VarName and VarGuid.
-
-
-  @param VarName            A Null-terminated Unicode string that is
-                            the name of the vendor's variable.
-                         
-  @param VarGuid            A unique identifier for the vendor.
-
-  @retval  EFI_SUCCESS           The variable was found and removed
-  @retval  EFI_UNSUPPORTED       The variable store was inaccessible
-  @retval  EFI_OUT_OF_RESOURCES  The temporary buffer was not available
-  @retval  EFI_NOT_FOUND         The variable was not found
-
-**/
-EFI_STATUS
-EfiLibDeleteVariable (
-  IN CHAR16   *VarName,
-  IN EFI_GUID *VarGuid
-  );
-
-/**
-  Function is used to determine the number of device path instances
-  that exist in a device path.
-
-
-  @param DevicePath      A pointer to a device path data structure.
-
-  @return This function counts and returns the number of device path instances
-          in DevicePath.
-
-**/
-UINTN
-EfiDevicePathInstanceCount (
-  IN EFI_DEVICE_PATH_PROTOCOL      *DevicePath
-  );
-
-/**
-  Get a string from the Data Hub record based on 
-  a device path.
-
-  @param DevPath         The device Path.
-
-  @return A string located from the Data Hub records based on
-          the device path.
-  @retval NULL  If failed to get the String from Data Hub.
-
-**/
-UINT16 *
-EfiLibStrFromDatahub (
-  IN EFI_DEVICE_PATH_PROTOCOL                 *DevPath
-  );
-
-/**
-  Get the index number (#### in Boot####) for the boot option pointed to a BBS 
legacy device type
-  specified by DeviceType.
-
-  @param DeviceType      The legacy device type. It can be floppy, network, 
harddisk, cdrom,
-                         etc.
-  @param OptionIndex     Returns the index number (#### in Boot####).
-  @param OptionSize      Return the size of the Boot### variable.
-
-**/
-VOID *
-GetLegacyBootOptionVar (
-  IN  UINTN                            DeviceType,
-  OUT UINTN                            *OptionIndex,
-  OUT UINTN                            *OptionSize
-  );
-
-/**
-  Discard all changes done to the BMM pages such as Boot Order change,
-  Driver order change.
-
-  @param Private         The BMM context data.
-  @param CurrentFakeNVMap The current Fack NV Map.
-
-**/
-VOID
-DiscardChangeHandler (
-  IN  BMM_CALLBACK_DATA               *Private,
-  IN  BMM_FAKE_NV_DATA                *CurrentFakeNVMap
-  );
-
-/**
-  Dispatch the display to the next page based on NewPageId.
-
-  @param Private         The BMM context data.
-  @param NewPageId       The original page ID.
-
-**/
-VOID
-UpdatePageId (
-  BMM_CALLBACK_DATA              *Private,
-  UINT16                         NewPageId
-  );
-
-/**
-  Remove the installed BootMaint and FileExplorer HiiPackages.
-
-**/
-VOID
-FreeBMPackage(
-  VOID
-  );
-
-/**
-  Install BootMaint and FileExplorer HiiPackages.
-
-**/
-VOID
-InitBootMaintenance(
-  VOID
-  );
-
-/**
-
-  Initialize console input device check box to ConsoleInCheck[MAX_MENU_NUMBER]
-  in BMM_FAKE_NV_DATA structure.
-
-  @param CallbackData    The BMM context data.
-
-**/  
-VOID  
-GetConsoleInCheck (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-
-  Initialize console output device check box to 
ConsoleOutCheck[MAX_MENU_NUMBER]
-  in BMM_FAKE_NV_DATA structure.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-GetConsoleOutCheck (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-
-  Initialize standard error output device check box to 
ConsoleErrCheck[MAX_MENU_NUMBER]
-  in BMM_FAKE_NV_DATA structure.
-
-  @param CallbackData    The BMM context data.
-
-**/        
-VOID
-GetConsoleErrCheck (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-
-  Initialize terminal attributes (baudrate, data rate, stop bits, parity and 
terminal type)
-  to BMM_FAKE_NV_DATA structure.
-
-  @param CallbackData    The BMM context data.
-
-**/
-VOID
-GetTerminalAttribute (
-  IN  BMM_CALLBACK_DATA    *CallbackData
-  );
-
-/**
-  This function will change video resolution and text mode
-  according to defined setup mode or defined boot mode  
-
-  @param  IsSetupMode   Indicate mode is changed to setup mode or boot mode. 
-
-  @retval  EFI_SUCCESS  Mode is changed successfully.
-  @retval  Others             Mode failed to be changed.
-
-**/
-EFI_STATUS
-EFIAPI
-BmmBdsSetConsoleMode (
-  BOOLEAN  IsSetupMode
-  );
-
-
-/**
-  This function converts an input device structure to a Unicode string.
-
-  @param DevPath       A pointer to the device path structure.
-
-  @return              A new allocated Unicode string that represents the 
device path.
-
-**/
-CHAR16 *
-UiDevicePathToStr (
-  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath
-  );
-
-/**
-  Extract filename from device path. The returned buffer is allocated using 
AllocateCopyPool.
-  The caller is responsible for freeing the allocated buffer using FreePool().
-
-  @param DevicePath      Device path.
-
-  @return                A new allocated string that represents the file name.
-
-**/
-CHAR16 *
-ExtractFileNameFromDevicePath (
-  IN   EFI_DEVICE_PATH_PROTOCOL *DevicePath
-  );
-
-/**
-  This function allows a caller to extract the current configuration for one
-  or more named elements from the target driver.
-
-  @param This            Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Request         A null-terminated Unicode string in <ConfigRequest> 
format.
-  @param Progress        On return, points to a character in the Request 
string.
-                         Points to the string's null terminator if request was 
successful.
-                         Points to the most recent '&' before the first 
failing name/value
-                         pair (or the beginning of the string if the failure 
is in the
-                         first name/value pair) if the request was not 
successful.
-  @param Results         A null-terminated Unicode string in <ConfigAltResp> 
format which
-                         has all values filled in for the names in the Request 
string.
-                         String to be allocated by the called function.
-
-  @retval  EFI_SUCCESS            The Results is filled with the requested 
values.
-  @retval  EFI_OUT_OF_RESOURCES   Not enough memory to store the results.
-  @retval  EFI_INVALID_PARAMETER  Request is NULL, illegal syntax, or unknown 
name.
-  @retval  EFI_NOT_FOUND          Routing data doesn't match any storage in 
this driver.
-
-**/
-EFI_STATUS
-EFIAPI
-BootMaintExtractConfig (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL   *This,
-  IN  CONST EFI_STRING                       Request,
-  OUT EFI_STRING                             *Progress,
-  OUT EFI_STRING                             *Results
-  );
-
-/**
-  This function applies changes in a driver's configuration.
-  Input is a Configuration, which has the routing data for this
-  driver followed by name / value configuration pairs. The driver
-  must apply those pairs to its configurable storage. If the
-  driver's configuration is stored in a linear block of data
-  and the driver's name / value pairs are in <BlockConfig>
-  format, it may use the ConfigToBlock helper function (above) to
-  simplify the job. Currently not implemented.
-
-  @param[in]  This                Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param[in]  Configuration       A null-terminated Unicode string in
-                                  <ConfigString> format.   
-  @param[out] Progress            A pointer to a string filled in with the
-                                  offset of the most recent '&' before the
-                                  first failing name / value pair (or the
-                                  beginn ing of the string if the failure
-                                  is in the first name / value pair) or
-                                  the terminating NULL if all was
-                                  successful.
-
-  @retval EFI_SUCCESS             The results have been distributed or are
-                                  awaiting distribution.  
-  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the
-                                  parts of the results that must be
-                                  stored awaiting possible future
-                                  protocols.
-  @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the
-                                  Results parameter would result
-                                  in this type of error.
-  @retval EFI_NOT_FOUND           Target for the specified routing data
-                                  was not found.
-**/
-EFI_STATUS
-EFIAPI
-BootMaintRouteConfig (
-  IN CONST EFI_HII_CONFIG_ACCESS_PROTOCOL *This,
-  IN CONST EFI_STRING                     Configuration,
-  OUT EFI_STRING                          *Progress
-  );
-
-/**
-  This function processes the results of changes in configuration.
-
-
-  @param This               Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.
-  @param Action             Specifies the type of action taken by the browser.
-  @param QuestionId         A unique value which is sent to the original 
exporting driver
-                            so that it can identify the type of data to expect.
-  @param Type               The type of value for the question.
-  @param Value              A pointer to the data being sent to the original 
exporting driver.
-  @param ActionRequest      On return, points to the action requested by the 
callback function.
-
-  @retval EFI_SUCCESS           The callback successfully handled the action.
-  @retval EFI_OUT_OF_RESOURCES  Not enough storage is available to hold the 
variable and its data.
-  @retval EFI_DEVICE_ERROR      The variable could not be saved.
-  @retval EFI_UNSUPPORTED       The specified Action is not supported by the 
callback.
-  @retval EFI_INVALID_PARAMETER The parameter of Value or ActionRequest is 
invalid.
-**/
-EFI_STATUS
-EFIAPI
-BootMaintCallback (
-  IN  CONST EFI_HII_CONFIG_ACCESS_PROTOCOL         *This,
-  IN        EFI_BROWSER_ACTION                     Action,
-  IN        EFI_QUESTION_ID                        QuestionId,
-  IN        UINT8                                  Type,
-  IN        EFI_IFR_TYPE_VALUE                     *Value,
-  OUT       EFI_BROWSER_ACTION_REQUEST             *ActionRequest
-  );
-
-/**
-  Create boot option base on the input file path info.
-
-  @param FilePath    Point to the file path.
-
-  @retval TRUE   Exit caller function.
-  @retval FALSE  Not exit caller function.
-
-**/
-BOOLEAN 
-CreateBootOptionFromFile (
-  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
-  );
-
-/**
-  Create driver option base on the input file path info.
-
-  @param FilePath    Point to the file path.
-
-  @retval TRUE   Exit caller function.
-  @retval FALSE  Not exit caller function.
-**/
-BOOLEAN 
-CreateDriverOptionFromFile (
-  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
-  );
-
-/**
-  Boot the file specified by the input file path info.
-
-  @param FilePath    Point to the file path.
-
-  @retval TRUE   Exit caller function.
-  @retval FALSE  Not exit caller function.
-  
-**/
-BOOLEAN 
-BootFromFile (
-  IN EFI_DEVICE_PATH_PROTOCOL    *FilePath
-  );
-
-//
-// Global variable in this program (defined in data.c)
-//
-extern BM_MENU_OPTION             BootOptionMenu;
-extern BM_MENU_OPTION             DriverOptionMenu;
-extern BM_MENU_OPTION             ConsoleInpMenu;
-extern BM_MENU_OPTION             ConsoleOutMenu;
-extern BM_MENU_OPTION             ConsoleErrMenu;
-extern BM_MENU_OPTION             DriverMenu;
-extern BM_MENU_OPTION             TerminalMenu;
-extern UINT16                     TerminalType[5];
-extern COM_ATTR                   BaudRateList[19];
-extern COM_ATTR                   DataBitsList[4];
-extern COM_ATTR                   ParityList[5];
-extern COM_ATTR                   StopBitsList[3];
-extern EFI_GUID                   TerminalTypeGuid[5];
-extern EFI_DEVICE_PATH_PROTOCOL   EndDevicePath[];
-extern UINT16                     mFlowControlType[2];
-extern UINT32                     mFlowControlValue[2];
-
-//
-// Shared IFR form update data
-//
-extern VOID                        *mStartOpCodeHandle;
-extern VOID                        *mEndOpCodeHandle;
-extern EFI_IFR_GUID_LABEL          *mStartLabel;
-extern EFI_IFR_GUID_LABEL          *mEndLabel;
-extern BMM_CALLBACK_DATA           gBootMaintenancePrivate;
-extern BMM_CALLBACK_DATA           *mBmmCallbackInfo;
-
-#endif

Deleted: 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.vfr
===================================================================
--- 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.vfr
        2016-01-18 05:51:18 UTC (rev 19661)
+++ 
trunk/edk2/MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.vfr
        2016-01-19 03:28:46 UTC (rev 19662)
@@ -1,440 +0,0 @@
-///** @file
-//  Boot Maintenance Utility Formset
-//
-//  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.
-//  
-//**/
-
-#include "FormGuid.h"
-
-formset
-  guid = BOOT_MAINT_FORMSET_GUID,
-  title = STRING_TOKEN(STR_FORM_MAIN_TITLE),
-  help = STRING_TOKEN(STR_BOOT_MAINT_MANAGER_HELP),
-  classguid = gEfiIfrFrontPageGuid,
-
-  varstore BMM_FAKE_NV_DATA,
-    varid = VARSTORE_ID_BOOT_MAINT,
-    name = BmmData,
-    guid = BOOT_MAINT_FORMSET_GUID;
-
-  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,
-         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,
-         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,
-         key = FORM_CON_MAIN_ID;
-
-    subtitle text = STRING_TOKEN(STR_NULL_STRING);
-
-    goto FORM_MAIN_ID,
-         prompt = STRING_TOKEN(STR_BOOT_FROM_FILE),
-         help = STRING_TOKEN(STR_BOOT_FROM_FILE_HELP),
-         flags = INTERACTIVE,
-         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,
-         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,
-         key = FORM_TIME_OUT_ID;
-
-    subtitle text = STRING_TOKEN(STR_NULL_STRING);
-
-    text
-         help   = STRING_TOKEN(STR_RESET),
-         text   = STRING_TOKEN(STR_RESET),
-         flags  = INTERACTIVE,
-         key    = FORM_RESET;
-         
-    label LABEL_BMM_PLATFORM_INFORMATION;
-    //
-    // This is where we will dynamically add a Action type op-code to show 
-    // the platform information.
-    //
-    
-    //
-    // This is where we will dynamically add a Action type op-code to show 
-    // the advanced menu.
-    //
-    
-    //
-    // This is where we will dynamically add a Action type op-code to show 
-    // the intel test menu.
-    //
-    label LABEL_END; 
-  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,
-            //key = FORM_MAIN_ID;
-
-       goto FORM_BOOT_SETUP_ID,
-            prompt = STRING_TOKEN(STR_FORM_BOOT_ADD_TITLE),
-            help = STRING_TOKEN(STR_FORM_BOOT_ADD_HELP),
-            flags = INTERACTIVE,
-            key = FORM_BOOT_ADD_ID;
-
-       goto FORM_BOOT_DEL_ID,
-            prompt = STRING_TOKEN(STR_FORM_BOOT_DEL_TITLE),
-            help = STRING_TOKEN(STR_FORM_BOOT_IMMEDIATE_HELP),

@@ Diff output truncated at 100000 characters. @@

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to