]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/SetupBrowserDxe/Setup.h
MdeModulePkg/Browser: Enhance the logic when getting value from AltResp
[mirror_edk2.git] / MdeModulePkg / Universal / SetupBrowserDxe / Setup.h
index f431bb0f365c77d82c599f20b8d2fec4366b7631..cbc5401323bbf3142cd8957f8894b3ff1541c429 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Private MACRO, structure and function definitions for Setup Browser module.\r
 \r
-Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
 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
@@ -32,10 +32,12 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/HiiString.h>\r
 #include <Protocol/UserManager.h>\r
 #include <Protocol/DevicePathFromText.h>\r
+#include <Protocol/RegularExpressionProtocol.h>\r
 \r
 #include <Guid/MdeModuleHii.h>\r
 #include <Guid/HiiPlatformSetupFormset.h>\r
 #include <Guid/HiiFormMapMethodGuid.h>\r
+#include <Guid/ZeroGuid.h>\r
 \r
 #include <Library/PrintLib.h>\r
 #include <Library/DebugLib.h>\r
@@ -150,7 +152,6 @@ typedef struct {
 \r
   UINT32           Attributes;     // For EFI_IFR_VARSTORE_EFI: EFI Variable attribute\r
 \r
-  CHAR16           *ConfigHdr;     // <ConfigHdr>\r
   CHAR16           *ConfigRequest; // <ConfigRequest> = <ConfigHdr> + <RequestElement>\r
                                    // <RequestElement> includes all fields which is used by current form sets.\r
   UINTN            SpareStrLen;    // Spare length of ConfigRequest string buffer\r
@@ -170,11 +171,15 @@ typedef struct {
 \r
   BROWSER_STORAGE  *BrowserStorage;\r
 \r
+  CHAR16           *ConfigHdr;     // <ConfigHdr>\r
+\r
   CHAR16           *ConfigRequest; // <ConfigRequest> = <ConfigHdr> + <RequestElement>\r
   CHAR16           *ConfigAltResp; // Alt config response string for this ConfigRequest.\r
   BOOLEAN          HasCallAltCfg;  // Flag to show whether browser has call ExtractConfig to get Altcfg string.\r
   UINTN            ElementCount;   // Number of <RequestElement> in the <ConfigRequest>\r
   UINTN            SpareStrLen;    // Spare length of ConfigRequest string buffer\r
+  CHAR16           *RestoreConfigRequest; // When submit formset fail, the element need to be restored\r
+  CHAR16           *SyncConfigRequest;    // When submit formset fail, the element need to be synced\r
 } FORMSET_STORAGE;\r
 \r
 #define FORMSET_STORAGE_FROM_LINK(a)  CR (a, FORMSET_STORAGE, Link, FORMSET_STORAGE_SIGNATURE)\r
@@ -384,6 +389,8 @@ typedef struct {
   CHAR16                *ConfigAltResp; // Alt config response string for this ConfigRequest.\r
   UINTN                 ElementCount;   // Number of <RequestElement> in the <ConfigRequest>  \r
   UINTN                 SpareStrLen;\r
+  CHAR16                *RestoreConfigRequest; // When submit form fail, the element need to be restored\r
+  CHAR16                *SyncConfigRequest;    // When submit form fail, the element need to be synced\r
 \r
   BROWSER_STORAGE       *Storage;\r
 } FORM_BROWSER_CONFIG_REQUEST;\r
@@ -405,6 +412,7 @@ typedef struct {
 \r
   BOOLEAN              ModalForm;            // Whether this is a modal form.\r
   BOOLEAN              Locked;               // Whether this form is locked.\r
+  EFI_GUID             RefreshGuid;          // Form refresh event guid.\r
 \r
   LIST_ENTRY           FormViewListHead;     // List of type FORMID_INFO is Browser View Form History List.\r
   LIST_ENTRY           ExpressionListHead;   // List of Expressions (FORM_EXPRESSION)\r
@@ -451,6 +459,7 @@ typedef struct {
   UINT16                          Class;                // Tiano extended Class code\r
   UINT16                          SubClass;             // Tiano extended Subclass code\r
   EFI_IMAGE_ID                    ImageId;\r
+  EFI_IFR_OP_HEADER               *OpCode;              //mainly for formset op to get ClassGuid\r
 \r
   FORM_BROWSER_STATEMENT          *StatementBuffer;     // Buffer for all Statements and Questions\r
   EXPRESSION_OPCODE               *ExpressionBuffer;    // Buffer for all Expression OpCode\r
@@ -525,14 +534,20 @@ typedef struct {
   //\r
   // Globals defined in Setup.c\r
   //\r
+  BOOLEAN                  FlagReconnect;\r
+  BOOLEAN                  CallbackReconnect;\r
   BOOLEAN                  ResetRequired;\r
   BOOLEAN                  ExitRequired;\r
   EFI_HII_HANDLE           HiiHandle;\r
   EFI_GUID                 FormSetGuid;\r
   EFI_FORM_ID              FormId;\r
   UI_MENU_SELECTION        *Selection;\r
-\r
-  LIST_ENTRY           FormHistoryList;\r
+  FORM_BROWSER_FORMSET     *SystemLevelFormSet;\r
+  EFI_QUESTION_ID          CurFakeQestId;\r
+  BOOLEAN                  HiiPackageListUpdated;\r
+  BOOLEAN                  FinishRetrieveCall;\r
+  LIST_ENTRY               FormHistoryList;\r
+  LIST_ENTRY               FormSetList;\r
 } BROWSER_CONTEXT;\r
 \r
 #define BROWSER_CONTEXT_FROM_LINK(a)  CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)\r
@@ -563,6 +578,8 @@ extern EFI_HII_CONFIG_ROUTING_PROTOCOL   *mHiiConfigRouting;
 extern EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL *mPathFromText;\r
 extern EDKII_FORM_DISPLAY_ENGINE_PROTOCOL *mFormDisplay;\r
 \r
+extern BOOLEAN               gCallbackReconnect;\r
+extern BOOLEAN               gFlagReconnect;\r
 extern BOOLEAN               gResetRequired;\r
 extern BOOLEAN               gExitRequired;\r
 extern LIST_ENTRY            gBrowserFormSetList;\r
@@ -576,9 +593,10 @@ extern SETUP_DRIVER_PRIVATE_DATA mPrivateData;
 //\r
 extern CHAR16            *gEmptyString;\r
 \r
-extern EFI_GUID          gZeroGuid;\r
-\r
 extern UI_MENU_SELECTION  *gCurrentSelection;\r
+extern BOOLEAN            mHiiPackageListUpdated;\r
+extern UINT16             mCurFakeQestId;\r
+extern BOOLEAN            mFinishRetrieveCall;\r
 \r
 //\r
 // Global Procedure Defines\r
@@ -1301,6 +1319,7 @@ SetScope (
   @retval EFI_INVALID_PARAMETER  KeyData is NULL.\r
   @retval EFI_NOT_FOUND          KeyData is not found to be unregistered.\r
   @retval EFI_UNSUPPORTED        Key represents a printable character. It is conflicted with Browser.\r
+  @retval EFI_ALREADY_STARTED    Key already been registered for one hot key.\r
 **/\r
 EFI_STATUS\r
 EFIAPI\r
@@ -1795,4 +1814,64 @@ IsTrue (
   IN EFI_HII_VALUE     *Result\r
   );\r
 \r
+/**\r
+  Get Formset_storage base on the input varstoreid info.\r
+\r
+  @param  FormSet                Pointer of the current FormSet.\r
+  @param  VarStoreId             Varstore ID info.\r
+\r
+  @return Pointer to a FORMSET_STORAGE data structure.\r
+\r
+**/\r
+FORMSET_STORAGE *\r
+GetFstStgFromVarId (\r
+  IN FORM_BROWSER_FORMSET  *FormSet,\r
+  IN EFI_VARSTORE_ID       VarStoreId\r
+  );\r
+\r
+/**\r
+  Get Formset_storage base on the input browser storage.\r
+\r
+  More than one formsets may share the same browser storage,\r
+  this function just get the first formset storage which\r
+  share the browser storage.\r
+\r
+  @param  Storage              browser storage info.\r
+\r
+  @return Pointer to a FORMSET_STORAGE data structure.\r
+  \r
+\r
+**/\r
+FORMSET_STORAGE *\r
+GetFstStgFromBrsStg (\r
+  IN BROWSER_STORAGE       *Storage\r
+  );\r
+\r
+/**\r
+  Reconnect the controller.\r
+\r
+  @param DriverHandle          The controller handle which need to be reconnect.\r
+\r
+  @retval   TRUE     do the reconnect behavior success.\r
+  @retval   FALSE    do the reconnect behavior failed.\r
+  \r
+**/\r
+BOOLEAN\r
+ReconnectController (\r
+  IN EFI_HANDLE   DriverHandle\r
+  );\r
+\r
+/**\r
+  Converts the unicode character of the string from uppercase to lowercase.\r
+  This is a internal function.\r
+\r
+  @param ConfigString  String to be converted\r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+HiiToLower (\r
+  IN EFI_STRING  ConfigString\r
+  );\r
+\r
 #endif\r