]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkCompatibilityPkg/Compatibility/FrameworkHiiToUefiHiiThunk/ConfigAccess.h
Bug fixes for FrameworkHiiToUefiHiiThunk;
[mirror_edk2.git] / EdkCompatibilityPkg / Compatibility / FrameworkHiiToUefiHiiThunk / ConfigAccess.h
index d9abdcc1090f3a1dd534ee4d1d07f597462b16e7..fb728074d1e2ce079c60cfee40534b8826abae00 100644 (file)
@@ -17,15 +17,56 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #ifndef _HII_THUNK_CONFIG_ACCESS_H\r
 #define _HII_THUNK_CONFIG_ACCESS_H\r
 \r
+/**\r
+  This function installs a EFI_CONFIG_ACCESS_PROTOCOL instance for a form package registered\r
+  by a module using Framework HII Protocol Interfaces.\r
 \r
+   UEFI HII require EFI_HII_CONFIG_ACCESS_PROTOCOL to be installed on a EFI_HANDLE, so\r
+   that Setup Utility can load the Buffer Storage using this protocol.\r
+   \r
+   @param Packages          The framework package list.\r
+   @param ThunkContext          The Thunk Layer Handle Mapping Database Entry.\r
+   \r
+   @retval  EFI_SUCCESS         The Config Access Protocol is installed successfully.\r
+   @retval  EFI_OUT_RESOURCE    There is not enough memory.\r
+   \r
+**/\r
 EFI_STATUS\r
-InstallDefaultUefiConfigAccessProtocol (\r
+InstallDefaultConfigAccessProtocol (\r
   IN  CONST EFI_HII_PACKAGES                         *Packages,\r
-  OUT       EFI_HANDLE                               *Handle,\r
-  IN  OUT   HII_TRHUNK_HANDLE_MAPPING_DATABASE_ENTRY *MapEntry\r
+  IN  OUT   HII_THUNK_CONTEXT *ThunkContext\r
+  )\r
+;\r
+\r
+VOID\r
+UninstallDefaultConfigAccessProtocol (\r
+  IN  HII_THUNK_CONTEXT                   *ThunkContext\r
   )\r
 ;\r
 \r
+/**\r
+\r
+  This function implement the EFI_HII_CONFIG_ACCESS_PROTOCOL.ExtractConfig\r
+  so that data can be read from the data storage such as UEFI Variable or module's\r
+  customized storage exposed by EFI_FRAMEWORK_CALLBACK.\r
+\r
+   @param This        Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL\r
+   @param Request     A null-terminated Unicode string in <ConfigRequest> format. Note that this\r
+                      includes the routing information as well as the configurable name / value pairs. It is\r
+                      invalid for this string to be in <MultiConfigRequest> format.\r
+\r
+   @param Progress    On return, points to a character in the Request string. Points to the string's null\r
+                      terminator if request was successful. Points to the most recent '&' before the first\r
+                      failing name / value pair (or the beginning of the string if the failure is in the first\r
+                      name / value pair) if the request was not successful\r
+   @param Results     A null-terminated Unicode string in <ConfigAltResp> format which has all\r
+                      values filled in for the names in the Request string. String to be allocated by the called\r
+                      function.\r
+   \r
+   @retval EFI_INVALID_PARAMETER   If there is no Buffer Storage for this Config Access instance.\r
+   @retval EFI_SUCCESS             The setting is retrived successfully.\r
+   @retval !EFI_SUCCESS            The error returned by UEFI Get Variable or Framework Form Callback Nvread.\r
+ **/\r
 EFI_STATUS\r
 EFIAPI\r
 ThunkExtractConfig (\r
@@ -37,6 +78,22 @@ ThunkExtractConfig (
 ;\r
 \r
 \r
+/**\r
+\r
+  This function implement the EFI_HII_CONFIG_ACCESS_PROTOCOL.RouteConfig\r
+  so that data can be written to the data storage such as UEFI Variable or module's\r
+  customized storage exposed by EFI_FRAMEWORK_CALLBACK.\r
+   \r
+   @param This              Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL\r
+   @param Configuration     A null-terminated Unicode string in <ConfigResp> format.\r
+   @param Progress          A pointer to a string filled in with the offset of the most recent '&' before the first\r
+                            failing name / value pair (or the beginning of the string if the failure is in the first\r
+                            name / value pair) or the terminating NULL if all was successful.\r
+   \r
+   @retval EFI_INVALID_PARAMETER   If there is no Buffer Storage for this Config Access instance.\r
+   @retval EFI_SUCCESS             The setting is saved successfully.\r
+   @retval !EFI_SUCCESS            The error returned by UEFI Set Variable or Framework Form Callback Nvwrite.\r
+**/  \r
 EFI_STATUS\r
 EFIAPI\r
 ThunkRouteConfig (\r
@@ -46,6 +103,31 @@ ThunkRouteConfig (
   )\r
 ;\r
 \r
+/**\r
+  Wrap the EFI_HII_CONFIG_ACCESS_PROTOCOL.CallBack to EFI_FORM_CALLBACK_PROTOCOL.Callback. Therefor,\r
+  the framework HII module willl do no porting (except some porting works needed for callback for EFI_ONE_OF_OPTION opcode)\r
+  and still work with a UEFI HII SetupBrowser.\r
+   \r
+   @param This                  Points to the EFI_HII_CONFIG_ACCESS_PROTOCOL.\r
+   @param Action                Specifies the type of action taken by the browser. See EFI_BROWSER_ACTION_x.\r
+   @param QuestionId            A unique value which is sent to the original exporting driver so that it can identify the\r
+                                type of data to expect. The format of the data tends to vary based on the opcode that\r
+                                generated the callback.\r
+   @param Type                  The type of value for the question. See EFI_IFR_TYPE_x in\r
+                                EFI_IFR_ONE_OF_OPTION.\r
+   @param Value                 A pointer to the data being sent to the original exporting driver. The type is specified\r
+                                by Type. Type EFI_IFR_TYPE_VALUE is defined in\r
+                                EFI_IFR_ONE_OF_OPTION.\r
+   @param ActionRequest         On return, points to the action requested by the callback function. Type\r
+                                EFI_BROWSER_ACTION_REQUEST is specified in SendForm() in the Form\r
+                                Browser Protocol.\r
+   \r
+   @retval EFI_UNSUPPORTED      If the Framework HII module does not register Callback although it specify the opcode under\r
+                                focuse to be INTERRACTIVE.\r
+   @retval EFI_SUCCESS          The callback complete successfully.\r
+   @retval !EFI_SUCCESS         The error code returned by EFI_FORM_CALLBACK_PROTOCOL.Callback.\r
+   \r
+ **/\r
 EFI_STATUS\r
 EFIAPI\r
 ThunkCallback (\r