4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This protocol is defined in UEFI spec.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The EFI_FORM_BROWSER2_PROTOCOL is the interface to call for drivers to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync leverage the EFI configuration driver interface.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials are licensed and made available under
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncthe terms and conditions of the BSD License that accompanies this distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThe full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __EFI_FORM_BROWSER2_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_FORM_BROWSER2_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Guid/HiiPlatformSetupFormset.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_FORM_BROWSER2_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync {0xb9d4c360, 0xbcfb, 0x4f9b, {0x92, 0x98, 0x53, 0xc1, 0x36, 0x98, 0x22, 0x58 }}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_FORM_BROWSER2_PROTOCOL EFI_FORM_BROWSER2_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param LeftColumn The value that designates the text column
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync where the browser window will begin from
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the left-hand side of the screen
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param RightColumn The value that designates the text
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync column where the browser window will end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync on the right-hand side of the screen.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param TopRow The value that designates the text row from the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync top of the screen where the browser window
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will start.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param BottomRow The value that designates the text row from the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bottom of the screen where the browser
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync window will end.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN LeftColumn;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN RightColumn;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN TopRow;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync UINTN BottomRow;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} EFI_SCREEN_DESCRIPTOR;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef UINTN EFI_BROWSER_ACTION_REQUEST;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_NONE 0
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_RESET 1
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_SUBMIT 2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_EXIT 3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_FORM_SUBMIT_EXIT 4
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT 5
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_FORM_APPLY 6
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD 7
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initialize the browser to display the specified configuration forms.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is the primary interface to the internal forms-based browser.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The forms browser will display forms associated with the specified Handles.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The browser will select all forms in packages which have the specified Type
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync and (for EFI_HII_PACKAGE_TYPE_GUID) the specified PackageGuid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_FORM_BROWSER2_PROTOCOL instance
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param Handles A pointer to an array of Handles. This value should correspond
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to the value of the HII form package that is required to be displayed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param HandleCount The number of Handles specified in Handle.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FormSetGuid This field points to the EFI_GUID which must match the Guid field or one of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync elements of the ClassId field in the EFI_IFR_FORM_SET op-code. If
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FormsetGuid is NULL, then this function will display the the form set class
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_HII_PLATFORM_SETUP_FORMSET_GUID.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param FormId This field specifies the identifier of the form within the form set to render as the first
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync displayable page. If this field has a value of 0x0000, then the Forms Browser will
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync render the first enabled form in the form set.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync characters.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ActionRequest Points to the action recommended by the form.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The function completed successfully
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_NOT_FOUND The variable was not found.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER One of the parameters has an
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync invalid value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_SEND_FORM2)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_FORM_BROWSER2_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_HII_HANDLE *Handle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN HandleCount,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_GUID *FormSetGuid, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_FORM_ID FormId, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_BROWSER_ACTION_REQUEST *ActionRequest OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This function is called by a callback handler to retrieve uncommitted state data from the browser.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This routine is called by a routine which was called by the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync browser. This routine called this service in the browser to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync retrieve or set certain uncommitted state information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param This A pointer to the EFI_FORM_BROWSER2_PROTOCOL instance.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ResultsDataSize A pointer to the size of the buffer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync associated with ResultsData. On input, the size in
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync bytes of ResultsData. On output, the size of data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned in ResultsData.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param ResultsData A string returned from an IFR browser or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync equivalent. The results string will have
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync no routing information in them.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param RetrieveData A BOOLEAN field which allows an agent to
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync retrieve (if RetrieveData = TRUE) data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync from the uncommitted browser state
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync information or set (if RetrieveData =
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync FALSE) data in the uncommitted browser
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync state information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableGuid An optional field to indicate the target
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync variable GUID name to use.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param VariableName An optional field to indicate the target
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync human-readable variable name.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The results have been distributed or are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync awaiting distribution.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The ResultsDataSize specified
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync was too small to contain the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync results data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_BROWSER_CALLBACK2)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_FORM_BROWSER2_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *ResultsDataSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT EFI_STRING ResultsData,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST BOOLEAN RetrieveData,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST EFI_GUID *VariableGuid, OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN CONST CHAR16 *VariableName OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync);
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This interface will allow the caller to direct the configuration
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// driver to use either the HII database or use the passed-in packet of data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_FORM_BROWSER2_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_SEND_FORM2 SendForm;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_BROWSER_CALLBACK2 BrowserCallback;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync} ;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiFormBrowser2ProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync