--- /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
+ @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
+ @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
+ @param HandleCount The number of handles in the array specified by Handle.\r
+ @param Packet A pointer to a set of data containing pointers to IFR\r
+ and/or string data.\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
+ @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
+ @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
+ @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
+ @retval EFI_NOT_FOUND The variable was not found.\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
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\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
+ @param HotKey Defines whether a single character is parsed (TRUE)\r
+ and returned in KeyValue or if a string is returned in StringBuffer.\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
+ @param StringBuffer The passed-in pointer to the buffer that will hold\r
+ the typed in string if HotKey is FALSE.\r
+ @param KeyValue The EFI_INPUT_KEY value returned if HotKey is TRUE.\r
+ @param String The pointer to the first string in the list of strings\r
+ that comprise the dialog box.\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
+ @retval EFI_DEVICE_ERROR The user typed in an ESC character to exit the routine.\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