]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Protocol/HiiConfigRouting.h
Update the copyright notice format
[mirror_edk2.git] / MdePkg / Include / Protocol / HiiConfigRouting.h
index 9c592645d04c979b4a262e6e35b2a92580117785..ceff241fe6914432609cca1d80843f4e7a5a6f10 100644 (file)
@@ -5,38 +5,35 @@
   information from configuration applications, routing the\r
   results to the appropriate drivers.\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
-  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
+Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials are licensed and made available under \r
+the terms and conditions of the BSD License that accompanies this distribution.  \r
+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
 **/\r
 \r
 #ifndef __HII_CONFIG_ROUTING_H__\r
 #define __HII_CONFIG_ROUTING_H__\r
 \r
-#error "UEFI 2.1 HII is not fully implemented for now, Please don't include this file now."\r
-\r
 #define EFI_HII_CONFIG_ROUTING_PROTOCOL_GUID \\r
   { 0x587e72d7, 0xcc50, 0x4f79, { 0x82, 0x09, 0xca, 0x29, 0x1f, 0xc1, 0xa1, 0x0f } }\r
 \r
 \r
 typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;\r
 \r
-\r
 /**\r
    \r
   This function allows the caller to request the current\r
   configuration for one or more named elements from one or more\r
   drivers. The resulting string is in the standard HII\r
-  configuration string format. If Successful Results contains an\r
+  configuration string format. If Successful, Results contains an\r
   equivalent string with "=" and the values associated with all\r
   names added in. The expected implementation is for each\r
-  <ConfigRequest> substring in the Request, call the HII\r
+  <ConfigRequest> substring in the Request to call the HII\r
   Configuration Routing Protocol ExtractProtocol function for the\r
   driver corresponding to the <ConfigHdr> at the start of the\r
   <ConfigRequest> substring. The request fails if no driver\r
@@ -48,7 +45,7 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
   They must have an additional description indicating the type of\r
   alternative configuration the string represents,\r
   "ALTCFG=<StringToken>". That <StringToken> (when converted from\r
-  Hex UNICODE to binary) is a reference to a string in the\r
+  hexadecimal (encoded as text) to binary) is a reference to a string in the\r
   associated string pack. As an example, assume that the Request\r
   string is:\r
   GUID=...&NAME=00480050&PATH=...&Fred&George&Ron&Neville A result\r
@@ -56,42 +53,40 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
   GUID=...&NAME=00480050&PATH=...&Fred=16&George=16&Ron=12&Neville=11&\r
   GUID=...&NAME=00480050&PATH=...&ALTCFG=0037&Fred=12&Neville=7\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This       Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
+                    instance.\r
 \r
-  @param Request  A null-terminated Unicode string in\r
-                  <MultiConfigRequest> format.\r
+  @param Request    A null-terminated string in <MultiConfigRequest> format.\r
 \r
   @param Progress   On return, points to a character in the\r
                     Request string. Points to the string's null\r
-                    terminator if request was successful. Points\r
+                    terminator if the request was successful. Points\r
                     to the most recent '&' before the first\r
                     failing name / value pair (or the beginning\r
                     of the string if the failure is in the first\r
                     name / value pair) if the request was not\r
                     successful\r
 \r
-  @param Results    Null-terminated Unicode string in\r
-                    <MultiConfigAltResp> format which has all\r
-                    values filled in for the names in the\r
-                    Request string. String to be allocated by\r
-                    the called function.\r
+  @param Results    A null-terminated string in <MultiConfigAltResp> format\r
+                    which has all values filled in for the names in the\r
+                    Request string.\r
 \r
-  @retval EFI_SUCCESS   The Results string is filled with the\r
-                        values corresponding to all requested\r
-                        names.\r
+  @retval EFI_SUCCESS             The Results string is filled with the\r
+                                  values corresponding to all requested\r
+                                  names.\r
 \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
 \r
   @retval EFI_INVALID_PARAMETER   For example, passing in a NULL\r
                                   for the Request parameter\r
                                   would result in this type of\r
                                   error. The Progress parameter\r
-                                  is set to NULL. EFI_NOT_FOUND\r
-                                  Routing data doesn't match any\r
+                                  is set to NULL. \r
+  \r
+  @retval EFI_NOT_FOUND           Routing data doesn't match any\r
                                   known driver. Progress set to\r
                                   the "G" in "GUID" of the\r
                                   routing header that doesn't\r
@@ -101,8 +96,8 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
                                   configuration extraction.\r
 \r
   @retval EFI_INVALID_PARAMETER   Illegal syntax. Progress set\r
-                                  to most recent & before the\r
-                                  error or the beginning of the\r
+                                  to the most recent & before the\r
+                                  error, or the beginning of the\r
                                   string.\r
   @retval EFI_INVALID_PARAMETER   Unknown name.\r
 \r
@@ -110,42 +105,39 @@ typedef struct _EFI_HII_CONFIG_ROUTING_PROTOCOL EFI_HII_CONFIG_ROUTING_PROTOCOL;
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_EXTRACT_CONFIG ) (\r
+(EFIAPI * EFI_HII_EXTRACT_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
-  IN CONST  EFI_STRING                      *Request,\r
+  IN CONST  EFI_STRING                      Request,\r
   OUT       EFI_STRING                      *Progress,\r
   OUT       EFI_STRING                      *Results\r
 );\r
 \r
 /**\r
-   \r
+  This function allows the caller to request the current configuration \r
+  for the entirety of the current HII database and returns the data in\r
+  a null-terminated string.\r
+\r
   This function allows the caller to request the current\r
   configuration for all of the current HII database. The results\r
   include both the current and alternate configurations as\r
-  described in ExtractConfig() above. Implementation note: This\r
-  call has deceptively few inputs but the implementation is likely\r
-  to be somewhat complex. The requirement is to scan all IFR in\r
-  the HII database to determine the list of names and then request\r
-  the configuration using the corresponding drivers??\r
-  EFI_HII_CONFIG_ACCESS_PROTOCOL.ExtractConfig() interfaces below.\r
+  described in ExtractConfig() above. \r
   \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This     Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
   \r
-  @param Results  A null-terminated Unicode string in\r
-                  <MultiConfigAltResp> format which has all\r
-                  values filled in for the names in the Request\r
-                  string. String to be allocated by this\r
-                  function. De-allocation is up to the caller.\r
+  @param Results  A null-terminated string in <MultiConfigAltResp>\r
+                  format which has all values filled in for the\r
+                  names in the Request string.\r
+                  String to be allocated by this function.\r
+                  De-allocation is up to the caller.\r
   \r
-  @retval EFI_SUCCESS   The Results string is filled with the\r
-                        values corresponding to all requested\r
-                        names.\r
+  @retval EFI_SUCCESS             The Results string is filled with the\r
+                                  values corresponding to all requested\r
+                                  names.\r
   \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
   \r
   @retval EFI_INVALID_PARAMETERS  For example, passing in a NULL\r
                                   for the Results parameter\r
@@ -155,7 +147,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_EXPORT_CONFIG ) (\r
+(EFIAPI * EFI_HII_EXPORT_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   OUT       EFI_STRING                      *Results\r
 );\r
@@ -172,38 +164,36 @@ EFI_STATUS
   to the driver whose routing information is defined by the\r
   <ConfigHdr> in turn.\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This           Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
-  @param Configuration  A null-terminated Unicode string in\r
-                        <MulltiConfigResp> format.\r
+  @param Configuration  A null-terminated string in <MulltiConfigResp> format.\r
 \r
-  @param Progress   A pointer to a string filled in with the\r
-                    offset of the most recent '&' before the\r
-                    first failing name / value pair (or the\r
-                    beginning of the string if the failure is in\r
-                    the first name / value pair) or the\r
-                    terminating NULL if all was successful.\r
+  @param Progress       A pointer to a string filled in with the\r
+                        offset of the most recent '&' before the\r
+                        first failing name / value pair (or the\r
+                        beginning of the string if the failure is in\r
+                        the first name / value pair), or the\r
+                        terminating NULL if all was successful.\r
 \r
-  @retval EFI_SUCCESS   The results have been distributed or are\r
-                        awaiting distribution.\r
+  @retval EFI_SUCCESS             The results have been distributed or are\r
+                                  awaiting distribution.\r
   \r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to store the\r
-                              parts of the results that must be\r
-                              stored awaiting possible future\r
-                              protocols.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to store the\r
+                                  parts of the results that must be\r
+                                  stored awaiting possible future\r
+                                  protocols.\r
   \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   Results parameter would result\r
                                   in this type of error.\r
   \r
-  @retval EFI_NOT_FOUND   Target for the specified routing data\r
-                          was not found\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data\r
+                                  was not found.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_ROUTE_CONFIG ) (\r
+(EFIAPI * EFI_HII_ROUTE_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      Configuration,\r
   OUT       EFI_STRING                      *Progress\r
@@ -217,39 +207,39 @@ EFI_STATUS
   consists of a list of <BlockName> formatted names. It uses the\r
   offset in the name to determine the index into the Block to\r
   start the extraction and the width of each name to determine the\r
-  number of bytes to extract. These are mapped to a UNICODE value\r
+  number of bytes to extract. These are mapped to a string\r
   using the equivalent of the C "%x" format (with optional leading\r
   spaces). The call fails if, for any (offset, width) pair in\r
   ConfigRequest, offset+value >= BlockSize.\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This      Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
-  @param ConfigRequest  A null-terminated Unicode string in\r
-                        <ConfigRequest> format.\r
+  @param ConfigRequest  A null-terminated string in <ConfigRequest> format.\r
 \r
-  @param Block  Array of bytes defining the block's\r
-                configuration.\r
+  @param Block      An array of bytes defining the block's\r
+                    configuration.\r
 \r
-  @param BlockSize  Length in bytes of Block.\r
+  @param BlockSize  The length in bytes of Block.\r
 \r
-  @param Config   Filled-in configuration string. String\r
-                  allocated by the function. Returned only if\r
-                  call is successful.\r
+  @param Config     The filled-in configuration string. String\r
+                    allocated by the function. Returned only if\r
+                    call is successful. The null-terminated string \r
+                    will be <ConfigResp> format.\r
 \r
   @param Progress   A pointer to a string filled in with the\r
                     offset of the most recent '&' before the\r
                     first failing name / value pair (or the\r
                     beginning of the string if the failure is in\r
-                    the first name / value pair) or the\r
+                    the first name / value pair), or the\r
                     terminating NULL if all was successful.\r
 \r
-  @retval EFI_SUCCESS   The request succeeded. Progress points\r
-                        to the null terminator at the end of the\r
-                        ConfigRequest string.\r
-  @retval EFI_OUT_OF_MEMORY   Not enough memory to allocate\r
-                              Config. Progress points to the\r
-                              first character of ConfigRequest.\r
+  @retval EFI_SUCCESS             The request succeeded. Progress points\r
+                                  to the null terminator at the end of the\r
+                                  ConfigRequest string.\r
+\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate\r
+                                  Config. Progress points to the\r
+                                  first character of ConfigRequest.\r
 \r
   @retval EFI_INVALID_PARAMETERS  Passing in a NULL for the\r
                                   ConfigRequest or Block\r
@@ -258,11 +248,11 @@ EFI_STATUS
                                   to the first character of\r
                                   ConfigRequest.\r
 \r
-  @retval EFI_NOT_FOUND   Target for the specified routing data\r
-                          was not found. Progress points to the\r
-                          'G' in "GUID" of the errant routing\r
-                          data. EFI_DEVICE_ERROR Block not large\r
-                          enough. Progress undefined.\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data\r
+                                  was not found. Progress points to the\r
+                                  'G' in "GUID" of the errant routing\r
+                                  data. \r
+  @retval EFI_DEVICE_ERROR        The block is not large enough. Progress undefined.\r
 \r
   @retval EFI_INVALID_PARAMETER   Encountered non <BlockName>\r
                                   formatted string. Block is\r
@@ -273,19 +263,18 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_BLOCK_TO_CONFIG ) (\r
+(EFIAPI * EFI_HII_BLOCK_TO_CONFIG)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
   IN CONST  EFI_STRING                      ConfigRequest,\r
   IN CONST  UINT8                           *Block,\r
   IN CONST  UINTN                           BlockSize,\r
-  OUT       EFI_STRING                      **Config,\r
+  OUT       EFI_STRING                      *Config,\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
 \r
 \r
 /**\r
-   \r
   This function maps a configuration containing a series of\r
   <BlockConfig> formatted name value pairs in ConfigResp into a\r
   Block so it may be stored in a linear mapped storage such as a\r
@@ -299,13 +288,11 @@ EFI_STATUS
   The results are\r
   55 AA 02 07 04 05\r
 \r
-  @param This   Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL\r
-                instance.\r
+  @param This           Points to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
 \r
-  @param ConfigResp   A  null-terminated Unicode string in\r
-                      <ConfigResp> format.\r
+  @param ConfigResp     A null-terminated string in <ConfigResp> format.\r
 \r
-  @param CurrentBlock   A possibly null array of bytes\r
+  @param Block          A possibly null array of bytes\r
                         representing the current block. Only\r
                         bytes referenced in the ConfigResp\r
                         string in the block are modified. If\r
@@ -313,47 +300,103 @@ EFI_STATUS
                         BlockLength parameter is (on input)\r
                         shorter than required by the\r
                         Configuration string, only the BlockSize\r
-                        parameter is updated and an appropriate\r
+                        parameter is updated, and an appropriate\r
                         status (see below) is returned.\r
 \r
-  @param BlockSize  The length of the Block in units of UINT8.\r
-                    On input, this is the size of the Block. On\r
-                    output, if successful, contains the index of\r
-                    the last modified byte in the Block.\r
-\r
-  @param Progress   On return, points to an element of the\r
-                    ConfigResp string filled in with the offset\r
-                    of the most recent "&" before the first\r
-                    failing name / value pair (or the beginning\r
-                    of the string if the failure is in the first\r
-                    name / value pair) or the terminating NULL\r
-                    if all was successful.\r
+  @param BlockSize      The length of the Block in units of UINT8.\r
+                        On input, this is the size of the Block. On\r
+                        output, if successful, contains the index of\r
+                        the last modified byte in the Block.\r
+\r
+  @param Progress       On return, points to an element of the\r
+                        ConfigResp string filled in with the offset\r
+                        of the most recent "&" before the first\r
+                        failing name / value pair (or the beginning\r
+                        of the string if the failure is in the first\r
+                        name / value pair), or the terminating NULL\r
+                        if all was successful.\r
+\r
+  @retval EFI_SUCCESS            The request succeeded. Progress points to the null\r
+                                 terminator at the end of the ConfigResp string.\r
+  @retval EFI_OUT_OF_RESOURCES   Not enough memory to allocate Config. Progress\r
+                                 points to the first character of ConfigResp.\r
+  @retval EFI_INVALID_PARAMETER  Passing in a NULL for the ConfigResp or\r
+                                 Block parameter would result in this type of\r
+                                 error. Progress points to the first character of\r
+                                         ConfigResp.\r
+  @retval EFI_INVALID_PARAMETER  Encountered non <BlockName> formatted name /\r
+                                 value pair. Block is left updated and\r
+                                 Progress points at the '&' preceding the first\r
+                                 non-<BlockName>.\r
 \r
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_HII_ROUTING_CONFIG_TO_BLOCK ) (\r
+(EFIAPI * EFI_HII_CONFIG_TO_BLOCK)(\r
   IN CONST  EFI_HII_CONFIG_ROUTING_PROTOCOL *This,\r
-  IN CONST  EFI_STRING                      *ConfigResp,\r
-  IN CONST  UINT8                           *Block,\r
+  IN CONST  EFI_STRING                      ConfigResp,\r
+  IN OUT    UINT8                           *Block,\r
   IN OUT    UINTN                           *BlockSize,\r
   OUT       EFI_STRING                      *Progress\r
 );\r
 \r
-\r
 /**\r
-   \r
-  This protocol defines the configuration routing interfaces\r
-  between external applications and the HII. There may only be one\r
-  instance of this protocol in the system.\r
-\r
+  This helper function is to be called by drivers to extract portions of \r
+  a larger configuration string.\r
+          \r
+  @param This              A pointer to the EFI_HII_CONFIG_ROUTING_PROTOCOL instance.\r
+  @param ConfigResp        A null-terminated string in <ConfigAltResp> format.\r
+  @param Guid              A pointer to the GUID value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If Guid is NULL, then all GUID \r
+                           values will be searched for.\r
+  @param Name              A pointer to the NAME value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If Name is NULL, then all Name \r
+                           values will be searched for.                         \r
+  @param DevicePath        A pointer to the PATH value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data. If DevicePath is NULL, then all \r
+                           DevicePath values will be searched for.             \r
+  @param AltCfgId          A pointer to the ALTCFG value to search for in the \r
+                           routing portion of the ConfigResp string when retrieving \r
+                           the requested data.  If this parameter is NULL, \r
+                           then the current setting will be retrieved.\r
+  @param AltCfgResp        A pointer to a buffer which will be allocated by the \r
+                           function which contains the retrieved string as requested.  \r
+                           This buffer is only allocated if the call was successful. \r
+                           The null-terminated string will be <ConfigResp> format.\r
+  \r
+  @retval EFI_SUCCESS             The request succeeded. The requested data was extracted \r
+                                  and placed in the newly allocated AltCfgResp buffer.\r
+  @retval EFI_OUT_OF_RESOURCES    Not enough memory to allocate AltCfgResp.    \r
+  @retval EFI_INVALID_PARAMETER   Any parameter is invalid.\r
+  @retval EFI_NOT_FOUND           The target for the specified routing data was not found.\r
 **/\r
+typedef\r
+EFI_STATUS \r
+(EFIAPI * EFI_HII_GET_ALT_CFG)(\r
+  IN  CONST EFI_HII_CONFIG_ROUTING_PROTOCOL    *This, \r
+  IN  CONST EFI_STRING                         ConfigResp, \r
+  IN  CONST EFI_GUID                           *Guid, \r
+  IN  CONST EFI_STRING                         Name, \r
+  IN  CONST EFI_DEVICE_PATH_PROTOCOL           *DevicePath,  \r
+  IN  CONST UINT16                             *AltCfgId,\r
+  OUT EFI_STRING                               *AltCfgResp \r
+  );\r
+\r
+///\r
+/// This protocol defines the configuration routing interfaces\r
+/// between external applications and the HII. There may only be one\r
+/// instance of this protocol in the system.\r
+///\r
 struct _EFI_HII_CONFIG_ROUTING_PROTOCOL {\r
-  EFI_HII_ROUTING_EXTRACT_CONFIG  ExtractConfig;\r
-  EFI_HII_ROUTING_EXPORT_CONFIG   ExportConfig;\r
-  EFI_HII_ROUTING_ROUTE_CONFIG    RouteConfig;\r
-  EFI_HII_ROUTING_BLOCK_TO_CONFIG BlockToConfig;\r
-  EFI_HII_ROUTING_CONFIG_TO_BLOCK ConfigToBlock;\r
+  EFI_HII_EXTRACT_CONFIG  ExtractConfig;\r
+  EFI_HII_EXPORT_CONFIG   ExportConfig;\r
+  EFI_HII_ROUTE_CONFIG    RouteConfig;\r
+  EFI_HII_BLOCK_TO_CONFIG BlockToConfig;\r
+  EFI_HII_CONFIG_TO_BLOCK ConfigToBlock;\r
+  EFI_HII_GET_ALT_CFG     GetAltConfig;\r
 };\r
 \r
 extern EFI_GUID gEfiHiiConfigRoutingProtocolGuid;\r