]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/FormBrowser.h
add a error macro to prevent this file from included for now #error "UEFI 2.1 HII...
[mirror_edk2.git] / MdePkg / Include / Protocol / FormBrowser.h
index a16331bf2cfcf2443400d249b2e66d12bdef4f6f..506acc94e135dc13350ec8ed4ffc03d3eb9f559a 100644 (file)
@@ -1,11 +1,9 @@
 /** @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
+  The file provides services to call for drivers to leverage the\r
+  EFI configuration driver interface.\r
+  \r
+  Copyright (c) 2006 - 2007, 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
   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
+#ifndef __EFI_FORM_BROWSER_H__\r
+#define __EFI_FORM_BROWSER_H__\r
+\r
+#error "UEFI 2.1 HII is not fully implemented for now, Please don't include this file now."\r
 \r
 \r
 #define EFI_FORM_BROWSER_PROTOCOL_GUID \\r
-  { \\r
-    0xe5a1333e, 0xe1b4, 0x4d55, {0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } \\r
-  }\r
+  { 0xe5a1333e, 0xe1b4, 0x4e55, { 0xce, 0xeb, 0x35, 0xc3, 0xef, 0x13, 0x34, 0x43 } }\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
+typedef struct _EFI_FORM_BROWSER_PROTOCOL   EFI_FORM_BROWSER_PROTOCOL;\r
+\r
 \r
-typedef struct {\r
-  EFI_HII_IFR_PACK    *IfrData;\r
-  EFI_HII_STRING_PACK *StringData;\r
-} EFI_IFR_PACKET;\r
 \r
+/**\r
+   \r
+  @param LeftColumn   Value that designates the text column\r
+                      where the browser window will begin from\r
+                      the left-hand side of the screen\r
+                      RightColumn Value that designates the text\r
+                      column where the browser window will end\r
+                      on the right-hand side of the screen.\r
+\r
+  @param TopRow   Value that designates the text row from the\r
+                  top of the screen where the browser window\r
+                  will start.\r
+\r
+  @param BottomRow  Value that designates the text row from the\r
+                    bottom of the screen where the browser\r
+                    window will end. \r
+**/\r
 typedef struct {\r
-  UINTN LeftColumn;\r
-  UINTN RightColumn;\r
-  UINTN TopRow;\r
-  UINTN BottomRow;\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
+  This function is the primary interface to the internal\r
+  forms-based browser. By calling this routine, one is directing\r
+  the browser to use a variety of passed-in information or\r
+  primarily use the HII database as the source of information.\r
+\r
+  @param This   A pointer to the EFI_FORM_BROWSER_PROTOCOL\r
+                instance.\r
+\r
+  @param Handle   A pointer to an array of HII handles to\r
+                  display. This value should correspond to the\r
+                  value of the HII form package that is required\r
+                  to be displayed.\r
+\r
+  @param HandleCount  The number of handles in the array\r
+                      specified by Handle.\r
+\r
+  @param SingleUse  If FALSE, the browser operates as a standard\r
+                    forms processor and exits only when\r
+                    explicitly requested by the user. If TRUE,\r
+                    the browser will return immediately after\r
+                    processing the first user-generated\r
+                    selection.\r
+\r
+  @param ScreenDimensions   Allows the browser to be called so\r
+                            that it occupies a portion of the\r
+                            physical screen instead of\r
+                            dynamically determining the screen\r
+                            dimensions. If the input values\r
+                            violate the platform policy then the\r
+                            dimensions will be dynamically\r
+                            adjusted to comply.\r
+\r
+  @param ResetRequired  This BOOLEAN value will tell the caller\r
+                        if a reset is required based on the data\r
+                        that might have been changed. The\r
+                        ResetRequired parameter is primarily\r
+                        applicable for configuration\r
+                        applications, and is an optional\r
+                        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\r
+                                the result. DataSize has been\r
+                                updated with the size needed to\r
+                                complete the request.\r
+  \r
+  @retval EFI_INVALID_PARAMETER   One of the parameters has an\r
+                                  invalid value.\r
+  \r
+  @retval EFI_DEVICE_ERROR  The variable could not be saved due\r
+                            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
+  IN CONST  EFI_FORM_BROWSER_PROTOCOL *This,\r
+  IN CONST  EFI_HII_HANDLE            *Handle,\r
+  IN CONST  UINTN                     HandleCount,\r
+  IN CONST  BOOLEAN                   SingleUse,\r
+  IN CONST  EFI_SCREEN_DESCRIPTOR     *ScreenDimensions, OPTIONAL\r
+  OUT       BOOLEAN                   *ResetRequired OPTIONAL\r
+);\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
+  This routine is called by a routine which was called by the\r
+  browser. This routine called this service in the browser to\r
+  retrieve or set certain uncommitted state information.\r
+\r
+  @param This   A pointer to the EFI_FORM_BROWSER_PROTOCOL\r
+                instance.\r
+\r
+  @param ResultsDataSize  A pointer to the size of the buffer\r
+                          associated with ResultsData. \r
+\r
+  @param ResultsData  A string returned from an IFR browser or\r
+                      equivalent. The results string will have\r
+                      no routing information in them.\r
+\r
+  @param RetrieveData   A BOOLEAN field which allows an agent to\r
+                        retrieve (if RetrieveData = TRUE) data\r
+                        from the uncommitted browser state\r
+                        information or set (if RetrieveData =\r
+                        FALSE) data in the uncommitted browser\r
+                        state information.\r
+\r
+  @param VariableGuid   An optional field to indicate the target\r
+                        variable GUID name to use.\r
+\r
+  @param VariableName   An optional field to indicate the target\r
+                        human-readable variable name.\r
+\r
+\r
+  @retval EFI_SUCCESS   The results have been distributed or are\r
+                        awaiting distribution.\r
+  \r
+  @retval EFI_OUT_OF_RESOURCES  The ResultsDataSize specified\r
+                                was too small to contain the\r
+                                results data.\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
+(EFIAPI *EFI_BROWSER_CALLBACK ) (\r
+  IN CONST  EFI_FORM_BROWSER_PROTOCOL *This,\r
+  IN OUT    UINTN                     *ResultsDataSize,\r
+  IN OUT    EFI_STRING                ResultsData,\r
+  IN CONST  BOOLEAN                   RetrieveData,\r
+  IN CONST  EFI_GUID                  *VariableGuid, OPTIONAL\r
+  IN CONST  CHAR16                    *VariableName OPTIONAL\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
+  This protocol is the interface to call for drivers to leverage\r
+  the EFI configuration driver interface.\r
+\r
+  @param SendForm   Provides direction to the configuration\r
+                    driver whether to use the HII database or to\r
+                    use a passed-in set of data. This functions\r
+                    also establishes a pointer to the calling\r
+                    driver's callback interface. See the\r
+                    SendForm() function description.\r
+\r
+  @param BrowserCallback  Routine used to expose internal\r
+                          configuration state of the browser.\r
+                          This is primarily used by callback\r
+                          handler routines which were called by\r
+                          the browser and in-turn need to get\r
+                          additional information from the\r
+                          browser itself. See the\r
+                          BrowserCallback() function\r
+                          description.\r
 \r
 **/\r
 struct _EFI_FORM_BROWSER_PROTOCOL {\r
-  EFI_SEND_FORM     SendForm;\r
-  EFI_CREATE_POP_UP CreatePopUp;\r
-};\r
+  EFI_SEND_FORM         SendForm;\r
+  EFI_BROWSER_CALLBACK  BrowserCallback;\r
+} ;\r
+\r
 \r
 extern EFI_GUID gEfiFormBrowserProtocolGuid;\r
 \r
 #endif\r
+\r
+\r