--- /dev/null
+/** @file\r
+ The EFI_FORM_BROWSER_PROTOCOL is the interface to the EFI \r
+ Configuration Driver. This will allow the caller to direct the \r
+ configuration driver to use either the HII database or use the passed \r
+ in packet of data. This will also allow the caller to post messages \r
+ into the configuration drivers internal mailbox.\r
+\r
+ Copyright (c) 2006, Intel Corporation \r
+ All rights reserved. This program and the accompanying materials \r
+ are licensed and made available under the terms and conditions of the BSD License \r
+ which accompanies this distribution. The full text of the license may be found at \r
+ http://opensource.org/licenses/bsd-license.php \r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+ Module Name: FormBrowser.h\r
+\r
+ @par Revision Reference:\r
+ This protocol is defined in HII spec 0.92.\r
+\r
+**/\r
+\r
+#ifndef __FORM_BROWSER_H__\r
+#define __FORM_BROWSER_H__\r
+\r
+\r
+#define EFI_FORM_BROWSER_PROTOCOL_GUID \\r
+ { \\r
+ 0xe5a1333e, 0xe1b4, 0x4d55, {0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } \\r
+ }\r
+\r
+typedef struct _EFI_FORM_BROWSER_PROTOCOL EFI_FORM_BROWSER_PROTOCOL;\r
+\r
+typedef struct {\r
+ UINT32 Length;\r
+ UINT16 Type;\r
+ UINT8 Data[1];\r
+} EFI_HII_PACKET;\r
+\r
+typedef struct {\r
+ EFI_HII_IFR_PACK *IfrData;\r
+ EFI_HII_STRING_PACK *StringData;\r
+} EFI_IFR_PACKET;\r
+\r
+typedef struct {\r
+ UINTN LeftColumn;\r
+ UINTN RightColumn;\r
+ UINTN TopRow;\r
+ UINTN BottomRow;\r
+} EFI_SCREEN_DESCRIPTOR;\r
+\r
+/**\r
+ Provides direction to the configuration driver whether to use the HII \r
+ database or a passed-in set of data. This function also establishes a \r
+ pointer to the calling driver¡¯s callback interface. \r
+\r
+ @param This A pointer to the EFI_FORM_BROWSER_PROTOCOL instance.\r
+ \r
+ @param UseDatabase Determines whether the HII database is to be \r
+ used to gather information. If the value is FALSE, the configuration \r
+ driver will get the information provided in the passed-in Packet parameters.\r
+ \r
+ @param Handle A pointer to an array of HII handles to display. This value \r
+ should correspond to the value of the HII form package that is required to \r
+ be displayed.\r
+ \r
+ @param HandleCount The number of handles in the array specified by Handle.\r
+ \r
+ @param Packet A pointer to a set of data containing pointers to IFR \r
+ and/or string data. \r
+ \r
+ @param CallbackHandle The handle to the driver¡¯s callback interface. \r
+ This parameter is used only when the UseDatabase parameter is FALSE \r
+ and an application wants to register a callback with the browser\r
+ \r
+ @param NvMapOverride This buffer is used only when there is no NV variable \r
+ to define the current settings and the caller needs to provide to the browser \r
+ the current settings for the "fake" NV variable.\r
+ \r
+ @param ScreenDimensions Allows the browser to be called so that it occupies \r
+ a portion of the physical screen instead of dynamically determining the \r
+ screen dimensions. \r
+ \r
+ @param ResetRequired This BOOLEAN value will tell the caller if a reset \r
+ is required based on the data that might have been changed. The ResetRequired \r
+ parameter is primarily applicable for configuration applications, and is an \r
+ optional parameter. \r
+\r
+ @retval EFI_SUCCESS The function completed successfully\r
+ \r
+ @retval EFI_NOT_FOUND The variable was not found.\r
+ \r
+ @retval EFI_BUFFER_TOO_SMALL The DataSize is too small for the result. \r
+ DataSize has been updated with the size needed to complete the request.\r
+ \r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
+ \r
+ @retval EFI_DEVICE_ERROR The variable could not be saved due to a hardware failure. \r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_SEND_FORM) (\r
+ IN EFI_FORM_BROWSER_PROTOCOL *This,\r
+ IN BOOLEAN UseDatabase,\r
+ IN EFI_HII_HANDLE *Handle,\r
+ IN UINTN HandleCount,\r
+ IN EFI_IFR_PACKET *Packet, OPTIONAL\r
+ IN EFI_HANDLE CallbackHandle, OPTIONAL\r
+ IN UINT8 *NvMapOverride, OPTIONAL\r
+ IN EFI_SCREEN_DESCRIPTOR *ScreenDimensions, OPTIONAL\r
+ OUT BOOLEAN *ResetRequired OPTIONAL\r
+ );\r
+\r
+/**\r
+ Routine used to abstract a generic dialog interface and return the selected \r
+ key or string.\r
+\r
+ @param NumberOfLines The number of lines for the dialog box.\r
+ \r
+ @param HotKey Defines whether a single character is parsed (TRUE) \r
+ and returned in KeyValue or if a string is returned in StringBuffer. \r
+ \r
+ @param MaximumStringSize The maximum size in bytes of a typed-in string. \r
+ Because each character is a CHAR16, the minimum string returned is two bytes.\r
+ \r
+ @param StringBuffer The passed-in pointer to the buffer that will hold \r
+ the typed in string if HotKey is FALSE.\r
+ \r
+ @param KeyValue The EFI_INPUT_KEY value returned if HotKey is TRUE.\r
+ \r
+ @param String The pointer to the first string in the list of strings \r
+ that comprise the dialog box.\r
+ \r
+ @param ... A series of NumberOfLines text strings that will be used \r
+ to construct the dialog box. \r
+\r
+ @retval EFI_SUCCESS The dialog was displayed and user interaction was received.\r
+ \r
+ @retval EFI_DEVICE_ERROR The user typed in an ESC character to exit the routine.\r
+ \r
+ @retval EFI_INVALID_PARAMETER One of the parameters was invalid\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_CREATE_POP_UP) (\r
+ IN UINTN NumberOfLines,\r
+ IN BOOLEAN HotKey,\r
+ IN UINTN MaximumStringSize,\r
+ OUT CHAR16 *StringBuffer,\r
+ OUT EFI_INPUT_KEY *KeyValue,\r
+ IN CHAR16 *String,\r
+ ...\r
+ );\r
+\r
+/**\r
+ @par Protocol Description:\r
+ The EFI_FORM_BROWSER_PROTOCOL is the interface to call for drivers to \r
+ leverage the EFI configuration driver interface. \r
+\r
+ @param SendForm\r
+ Provides direction to the configuration driver whether to use the HII \r
+ database or to use a passed-in set of data. This functions also establishes \r
+ a pointer to the calling driver¡¯s callback interface. \r
+\r
+ @param CreatePopUp\r
+ Routine used to abstract a generic dialog interface and return the \r
+ selected key or string.\r
+\r
+**/\r
+struct _EFI_FORM_BROWSER_PROTOCOL {\r
+ EFI_SEND_FORM SendForm;\r
+ EFI_CREATE_POP_UP CreatePopUp;\r
+};\r
+\r
+extern EFI_GUID gEfiFormBrowserProtocolGuid;\r
+\r
+#endif\r