REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			1869 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1869 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| Private MACRO, structure and function definitions for Setup Browser module.
 | |
| 
 | |
| Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _SETUP_H_
 | |
| #define _SETUP_H_
 | |
| 
 | |
| #include <PiDxe.h>
 | |
| 
 | |
| #include <Protocol/SimpleTextOut.h>
 | |
| #include <Protocol/SimpleTextIn.h>
 | |
| #include <Protocol/FormBrowser2.h>
 | |
| #include <Protocol/FormBrowserEx2.h>
 | |
| #include <Protocol/DisplayProtocol.h>
 | |
| #include <Protocol/DevicePath.h>
 | |
| #include <Protocol/UnicodeCollation.h>
 | |
| #include <Protocol/HiiConfigAccess.h>
 | |
| #include <Protocol/HiiConfigRouting.h>
 | |
| #include <Protocol/HiiDatabase.h>
 | |
| #include <Protocol/HiiString.h>
 | |
| #include <Protocol/UserManager.h>
 | |
| #include <Protocol/DevicePathFromText.h>
 | |
| #include <Protocol/RegularExpressionProtocol.h>
 | |
| 
 | |
| #include <Guid/MdeModuleHii.h>
 | |
| #include <Guid/HiiPlatformSetupFormset.h>
 | |
| #include <Guid/HiiFormMapMethodGuid.h>
 | |
| #include <Guid/ZeroGuid.h>
 | |
| 
 | |
| #include <Library/PrintLib.h>
 | |
| #include <Library/DebugLib.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/UefiRuntimeServicesTableLib.h>
 | |
| #include <Library/UefiDriverEntryPoint.h>
 | |
| #include <Library/UefiBootServicesTableLib.h>
 | |
| #include <Library/BaseLib.h>
 | |
| #include <Library/MemoryAllocationLib.h>
 | |
| #include <Library/HiiLib.h>
 | |
| #include <Library/PcdLib.h>
 | |
| #include <Library/DevicePathLib.h>
 | |
| #include <Library/UefiLib.h>
 | |
| 
 | |
| //
 | |
| // This is the generated header file which includes whatever needs to be exported (strings + IFR)
 | |
| //
 | |
| 
 | |
| #define UI_ACTION_NONE             0
 | |
| #define UI_ACTION_REFRESH_FORM     1
 | |
| #define UI_ACTION_REFRESH_FORMSET  2
 | |
| #define UI_ACTION_EXIT             3
 | |
| 
 | |
| //
 | |
| //
 | |
| // Time definitions
 | |
| //
 | |
| #define ONE_SECOND  10000000
 | |
| 
 | |
| // Incremental string lenght of ConfigRequest
 | |
| //
 | |
| #define CONFIG_REQUEST_STRING_INCREMENTAL  1024
 | |
| 
 | |
| //
 | |
| // Incremental size of stack for expression
 | |
| //
 | |
| #define EXPRESSION_STACK_SIZE_INCREMENT  0x100
 | |
| 
 | |
| #define EFI_IFR_SPECIFICATION_VERSION  (UINT16) (((EFI_SYSTEM_TABLE_REVISION >> 16) << 8) | (((EFI_SYSTEM_TABLE_REVISION & 0xFFFF) / 10) << 4) | ((EFI_SYSTEM_TABLE_REVISION & 0xFFFF) % 10))
 | |
| 
 | |
| #define SETUP_DRIVER_SIGNATURE  SIGNATURE_32 ('F', 'B', 'D', 'V')
 | |
| typedef struct {
 | |
|   UINT32                                    Signature;
 | |
| 
 | |
|   EFI_HANDLE                                Handle;
 | |
| 
 | |
|   //
 | |
|   // Produced protocol
 | |
|   //
 | |
|   EFI_FORM_BROWSER2_PROTOCOL                FormBrowser2;
 | |
|   EDKII_FORM_BROWSER_EXTENSION_PROTOCOL     FormBrowserEx;
 | |
| 
 | |
|   EDKII_FORM_BROWSER_EXTENSION2_PROTOCOL    FormBrowserEx2;
 | |
| } SETUP_DRIVER_PRIVATE_DATA;
 | |
| 
 | |
| //
 | |
| // IFR relative definition
 | |
| //
 | |
| #define EFI_HII_EXPRESSION_INCONSISTENT_IF  0
 | |
| #define EFI_HII_EXPRESSION_NO_SUBMIT_IF     1
 | |
| #define EFI_HII_EXPRESSION_GRAY_OUT_IF      2
 | |
| #define EFI_HII_EXPRESSION_SUPPRESS_IF      3
 | |
| #define EFI_HII_EXPRESSION_DISABLE_IF       4
 | |
| #define EFI_HII_EXPRESSION_VALUE            5
 | |
| #define EFI_HII_EXPRESSION_RULE             6
 | |
| #define EFI_HII_EXPRESSION_READ             7
 | |
| #define EFI_HII_EXPRESSION_WRITE            8
 | |
| #define EFI_HII_EXPRESSION_WARNING_IF       9
 | |
| 
 | |
| #define EFI_HII_VARSTORE_BUFFER               0
 | |
| #define EFI_HII_VARSTORE_NAME_VALUE           1
 | |
| #define EFI_HII_VARSTORE_EFI_VARIABLE         2   // EFI Varstore type follow UEFI spec before 2.3.1.
 | |
| #define EFI_HII_VARSTORE_EFI_VARIABLE_BUFFER  3   // EFI varstore type follow UEFI spec 2.3.1 and later.
 | |
| 
 | |
| #define FORM_INCONSISTENT_VALIDATION  0
 | |
| #define FORM_NO_SUBMIT_VALIDATION     1
 | |
| 
 | |
| #define NAME_VALUE_NODE_SIGNATURE  SIGNATURE_32 ('N', 'V', 'S', 'T')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN         Signature;
 | |
|   LIST_ENTRY    Link;
 | |
|   CHAR16        *Name;
 | |
|   CHAR16        *Value;
 | |
|   CHAR16        *EditValue;
 | |
| } NAME_VALUE_NODE;
 | |
| 
 | |
| #define NAME_VALUE_NODE_FROM_LINK(a)  CR (a, NAME_VALUE_NODE, Link, NAME_VALUE_NODE_SIGNATURE)
 | |
| 
 | |
| #define BROWSER_STORAGE_SIGNATURE  SIGNATURE_32 ('B', 'S', 'T', 'G')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN             Signature;
 | |
|   LIST_ENTRY        Link;
 | |
| 
 | |
|   UINT8             Type;          // Storage type
 | |
| 
 | |
|   BOOLEAN           Initialized;   // Whether this varstore is initialized, efi varstore not used.
 | |
| 
 | |
|   EFI_HII_HANDLE    HiiHandle;     // HiiHandle for this varstore, efi varstore not used.
 | |
|   EFI_GUID          Guid;
 | |
| 
 | |
|   CHAR16            *Name;         // For EFI_IFR_VARSTORE
 | |
|   UINT16            Size;
 | |
|   UINT8             *Buffer;
 | |
|   UINT8             *EditBuffer;   // Edit copy for Buffer Storage
 | |
| 
 | |
|   LIST_ENTRY        NameValueListHead; // List of NAME_VALUE_NODE
 | |
| 
 | |
|   UINT32            Attributes;    // For EFI_IFR_VARSTORE_EFI: EFI Variable attribute
 | |
| 
 | |
|   CHAR16            *ConfigRequest; // <ConfigRequest> = <ConfigHdr> + <RequestElement>
 | |
|                                     // <RequestElement> includes all fields which is used by current form sets.
 | |
|   UINTN             SpareStrLen;    // Spare length of ConfigRequest string buffer
 | |
| } BROWSER_STORAGE;
 | |
| 
 | |
| #define BROWSER_STORAGE_FROM_LINK(a)  CR (a, BROWSER_STORAGE, Link, BROWSER_STORAGE_SIGNATURE)
 | |
| 
 | |
| #define FORMSET_STORAGE_SIGNATURE  SIGNATURE_32 ('F', 'S', 'T', 'G')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   LIST_ENTRY         Link;
 | |
| 
 | |
|   LIST_ENTRY         SaveFailLink;
 | |
| 
 | |
|   UINT16             VarStoreId;
 | |
| 
 | |
|   BROWSER_STORAGE    *BrowserStorage;
 | |
| 
 | |
|   CHAR16             *ConfigHdr;   // <ConfigHdr>
 | |
| 
 | |
|   CHAR16             *ConfigRequest;        // <ConfigRequest> = <ConfigHdr> + <RequestElement>
 | |
|   CHAR16             *ConfigAltResp;        // Alt config response string for this ConfigRequest.
 | |
|   BOOLEAN            HasCallAltCfg;         // Flag to show whether browser has call ExtractConfig to get Altcfg string.
 | |
|   UINTN              ElementCount;          // Number of <RequestElement> in the <ConfigRequest>
 | |
|   UINTN              SpareStrLen;           // Spare length of ConfigRequest string buffer
 | |
|   CHAR16             *RestoreConfigRequest; // When submit formset fail, the element need to be restored
 | |
|   CHAR16             *SyncConfigRequest;    // When submit formset fail, the element need to be synced
 | |
| } FORMSET_STORAGE;
 | |
| 
 | |
| #define FORMSET_STORAGE_FROM_LINK(a)            CR (a, FORMSET_STORAGE, Link, FORMSET_STORAGE_SIGNATURE)
 | |
| #define FORMSET_STORAGE_FROM_SAVE_FAIL_LINK(a)  CR (a, FORMSET_STORAGE, SaveFailLink, FORMSET_STORAGE_SIGNATURE)
 | |
| 
 | |
| typedef union {
 | |
|   EFI_STRING_ID    VarName;
 | |
|   UINT16           VarOffset;
 | |
| } VAR_STORE_INFO;
 | |
| 
 | |
| #define EXPRESSION_OPCODE_SIGNATURE  SIGNATURE_32 ('E', 'X', 'O', 'P')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   LIST_ENTRY         Link;
 | |
| 
 | |
|   UINT8              Operand;
 | |
| 
 | |
|   UINT8              Format;     // For EFI_IFR_TO_STRING, EFI_IFR_FIND
 | |
|   UINT8              Flags;      // For EFI_IFR_SPAN
 | |
|   UINT8              RuleId;     // For EFI_IFR_RULE_REF
 | |
| 
 | |
|   EFI_HII_VALUE      Value;      // For EFI_IFR_EQ_ID_VAL, EFI_IFR_UINT64, EFI_IFR_UINT32, EFI_IFR_UINT16, EFI_IFR_UINT8, EFI_IFR_STRING_REF1
 | |
| 
 | |
|   EFI_QUESTION_ID    QuestionId; // For EFI_IFR_EQ_ID_ID, EFI_IFR_EQ_ID_VAL_LIST, EFI_IFR_QUESTION_REF1
 | |
|   EFI_QUESTION_ID    QuestionId2;
 | |
| 
 | |
|   UINT16             ListLength; // For EFI_IFR_EQ_ID_VAL_LIST
 | |
|   UINT16             *ValueList;
 | |
| 
 | |
|   EFI_STRING_ID      DevicePath; // For EFI_IFR_QUESTION_REF3_2, EFI_IFR_QUESTION_REF3_3
 | |
|   EFI_GUID           Guid;
 | |
| 
 | |
|   BROWSER_STORAGE    *VarStorage;       // For EFI_IFR_SET, EFI_IFR_GET
 | |
|   VAR_STORE_INFO     VarStoreInfo;      // For EFI_IFR_SET, EFI_IFR_GET
 | |
|   UINT8              ValueType;         // For EFI_IFR_SET, EFI_IFR_GET
 | |
|   UINT8              ValueWidth;        // For EFI_IFR_SET, EFI_IFR_GET
 | |
|   CHAR16             *ValueName;        // For EFI_IFR_SET, EFI_IFR_GET
 | |
|   LIST_ENTRY         MapExpressionList; // nested expressions inside of Map opcode.
 | |
| } EXPRESSION_OPCODE;
 | |
| 
 | |
| #define EXPRESSION_OPCODE_FROM_LINK(a)  CR (a, EXPRESSION_OPCODE, Link, EXPRESSION_OPCODE_SIGNATURE)
 | |
| 
 | |
| #define FORM_EXPRESSION_SIGNATURE  SIGNATURE_32 ('F', 'E', 'X', 'P')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                Signature;
 | |
|   LIST_ENTRY           Link;
 | |
| 
 | |
|   UINT8                Type;         // Type for this expression
 | |
| 
 | |
|   UINT8                RuleId;       // For EFI_IFR_RULE only
 | |
|   EFI_STRING_ID        Error;        // For EFI_IFR_NO_SUBMIT_IF, EFI_IFR_INCONSISTENT_IF only
 | |
| 
 | |
|   EFI_HII_VALUE        Result;       // Expression evaluation result
 | |
| 
 | |
|   UINT8                TimeOut;      // For EFI_IFR_WARNING_IF
 | |
|   EFI_IFR_OP_HEADER    *OpCode;      // Save the opcode buffer.
 | |
| 
 | |
|   LIST_ENTRY           OpCodeListHead; // OpCodes consist of this expression (EXPRESSION_OPCODE)
 | |
| } FORM_EXPRESSION;
 | |
| 
 | |
| #define FORM_EXPRESSION_FROM_LINK(a)  CR (a, FORM_EXPRESSION, Link, FORM_EXPRESSION_SIGNATURE)
 | |
| 
 | |
| #define FORM_EXPRESSION_LIST_SIGNATURE  SIGNATURE_32 ('F', 'E', 'X', 'R')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   UINTN              Count;
 | |
|   FORM_EXPRESSION    *Expression[1];     // Array[Count] of expressions
 | |
| } FORM_EXPRESSION_LIST;
 | |
| 
 | |
| #define QUESTION_DEFAULT_SIGNATURE  SIGNATURE_32 ('Q', 'D', 'F', 'T')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   LIST_ENTRY         Link;
 | |
| 
 | |
|   UINT16             DefaultId;
 | |
|   EFI_HII_VALUE      Value;               // Default value
 | |
| 
 | |
|   FORM_EXPRESSION    *ValueExpression;    // Not-NULL indicates default value is provided by EFI_IFR_VALUE
 | |
| } QUESTION_DEFAULT;
 | |
| 
 | |
| #define QUESTION_DEFAULT_FROM_LINK(a)  CR (a, QUESTION_DEFAULT, Link, QUESTION_DEFAULT_SIGNATURE)
 | |
| 
 | |
| #define QUESTION_OPTION_SIGNATURE  SIGNATURE_32 ('Q', 'O', 'P', 'T')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                    Signature;
 | |
|   LIST_ENTRY               Link;
 | |
| 
 | |
|   EFI_IFR_ONE_OF_OPTION    *OpCode; // OneOfOption Data
 | |
| 
 | |
|   EFI_STRING_ID            Text;
 | |
|   UINT8                    Flags;
 | |
|   EFI_HII_VALUE            Value;
 | |
|   EFI_IMAGE_ID             ImageId;
 | |
| 
 | |
|   FORM_EXPRESSION_LIST     *SuppressExpression; // Non-NULL indicates nested inside of SuppressIf
 | |
| } QUESTION_OPTION;
 | |
| 
 | |
| #define QUESTION_OPTION_FROM_LINK(a)  CR (a, QUESTION_OPTION, Link, QUESTION_OPTION_SIGNATURE)
 | |
| 
 | |
| typedef enum {
 | |
|   ExpressFalse = 0,
 | |
|   ExpressGrayOut,
 | |
|   ExpressSuppress,
 | |
|   ExpressDisable
 | |
| } EXPRESS_RESULT;
 | |
| 
 | |
| typedef enum {
 | |
|   ExpressNone = 0,
 | |
|   ExpressForm,
 | |
|   ExpressStatement,
 | |
|   ExpressOption
 | |
| } EXPRESS_LEVEL;
 | |
| 
 | |
| typedef struct _FORM_BROWSER_STATEMENT FORM_BROWSER_STATEMENT;
 | |
| 
 | |
| #define FORM_BROWSER_STATEMENT_SIGNATURE  SIGNATURE_32 ('F', 'S', 'T', 'A')
 | |
| 
 | |
| struct _FORM_BROWSER_STATEMENT {
 | |
|   UINTN                     Signature;
 | |
|   LIST_ENTRY                Link;
 | |
| 
 | |
|   UINT8                     Operand;      // The operand (first byte) of this Statement or Question
 | |
|   EFI_IFR_OP_HEADER         *OpCode;
 | |
| 
 | |
|   //
 | |
|   // Statement Header
 | |
|   //
 | |
|   EFI_STRING_ID             Prompt;
 | |
|   EFI_STRING_ID             Help;
 | |
|   EFI_STRING_ID             TextTwo;      // For EFI_IFR_TEXT
 | |
| 
 | |
|   //
 | |
|   // Fake Question Id, used for statement not has true QuestionId.
 | |
|   //
 | |
|   EFI_QUESTION_ID           FakeQuestionId;
 | |
| 
 | |
|   //
 | |
|   // Question Header
 | |
|   //
 | |
|   EFI_QUESTION_ID           QuestionId;   // The value of zero is reserved
 | |
|   EFI_VARSTORE_ID           VarStoreId;   // A value of zero indicates no variable storage
 | |
|   BROWSER_STORAGE           *Storage;
 | |
|   VAR_STORE_INFO            VarStoreInfo;
 | |
|   UINT16                    StorageWidth;
 | |
|   UINT16                    BitStorageWidth;
 | |
|   UINT16                    BitVarOffset;
 | |
|   UINT8                     QuestionFlags;
 | |
|   BOOLEAN                   QuestionReferToBitField; // Whether the question is stored in a bit field.
 | |
|   CHAR16                    *VariableName;           // Name/Value or EFI Variable name
 | |
|   CHAR16                    *BlockName;              // Buffer storage block name: "OFFSET=...WIDTH=..."
 | |
| 
 | |
|   EFI_HII_VALUE             HiiValue;     // Edit copy for checkbox, numberic, oneof
 | |
|   UINT8                     *BufferValue; // Edit copy for string, password, orderedlist
 | |
|   UINT8                     ValueType;    // Data type for orderedlist value array
 | |
| 
 | |
|   //
 | |
|   // OpCode specific members
 | |
|   //
 | |
|   UINT8                     Flags;         // for EFI_IFR_CHECKBOX, EFI_IFR_DATE, EFI_IFR_NUMERIC, EFI_IFR_ONE_OF,
 | |
|                                            // EFI_IFR_ORDERED_LIST, EFI_IFR_STRING,EFI_IFR_SUBTITLE,EFI_IFR_TIME, EFI_IFR_BANNER
 | |
|   UINT8                     MaxContainers; // for EFI_IFR_ORDERED_LIST
 | |
| 
 | |
|   UINT16                    BannerLineNumber; // for EFI_IFR_BANNER, 1-based line number
 | |
|   EFI_STRING_ID             QuestionConfig;   // for EFI_IFR_ACTION, if 0 then no configuration string will be processed
 | |
| 
 | |
|   UINT64                    Minimum;      // for EFI_IFR_ONE_OF/EFI_IFR_NUMERIC, it's Min/Max value
 | |
|   UINT64                    Maximum;      // for EFI_IFR_STRING/EFI_IFR_PASSWORD, it's Min/Max length
 | |
|   UINT64                    Step;
 | |
| 
 | |
|   EFI_DEFAULT_ID            DefaultId;    // for EFI_IFR_RESET_BUTTON
 | |
|   EFI_GUID                  RefreshGuid;  // for EFI_IFR_REFRESH_ID
 | |
|   BOOLEAN                   Locked;       // Whether this statement is locked.
 | |
|   BOOLEAN                   ValueChanged; // Whether this statement's value is changed.
 | |
|   //
 | |
|   // Get from IFR parsing
 | |
|   //
 | |
|   FORM_EXPRESSION           *ValueExpression; // nested EFI_IFR_VALUE, provide Question value and indicate Question is ReadOnly
 | |
|   LIST_ENTRY                DefaultListHead;  // nested EFI_IFR_DEFAULT list (QUESTION_DEFAULT), provide default values
 | |
|   LIST_ENTRY                OptionListHead;   // nested EFI_IFR_ONE_OF_OPTION list (QUESTION_OPTION)
 | |
| 
 | |
|   EFI_IMAGE_ID              ImageId;         // nested EFI_IFR_IMAGE
 | |
|   UINT8                     RefreshInterval; // nested EFI_IFR_REFRESH, refresh interval(in seconds) for Question value, 0 means no refresh
 | |
| 
 | |
|   FORM_BROWSER_STATEMENT    *ParentStatement;
 | |
| 
 | |
|   LIST_ENTRY                InconsistentListHead; // nested inconsistent expression list (FORM_EXPRESSION)
 | |
|   LIST_ENTRY                NoSubmitListHead;     // nested nosubmit expression list (FORM_EXPRESSION)
 | |
|   LIST_ENTRY                WarningListHead;      // nested warning expression list (FORM_EXPRESSION)
 | |
|   FORM_EXPRESSION_LIST      *Expression;          // nesting inside of GrayOutIf/DisableIf/SuppressIf
 | |
| 
 | |
|   FORM_EXPRESSION           *ReadExpression;  // nested EFI_IFR_READ, provide this question value by read expression.
 | |
|   FORM_EXPRESSION           *WriteExpression; // nested EFI_IFR_WRITE, evaluate write expression after this question value is set.
 | |
| };
 | |
| 
 | |
| #define FORM_BROWSER_STATEMENT_FROM_LINK(a)  CR (a, FORM_BROWSER_STATEMENT, Link, FORM_BROWSER_STATEMENT_SIGNATURE)
 | |
| 
 | |
| #define FORM_BROWSER_CONFIG_REQUEST_SIGNATURE  SIGNATURE_32 ('F', 'C', 'R', 'S')
 | |
| typedef struct {
 | |
|   UINTN              Signature;
 | |
|   LIST_ENTRY         Link;
 | |
| 
 | |
|   LIST_ENTRY         SaveFailLink;
 | |
| 
 | |
|   CHAR16             *ConfigRequest;    // <ConfigRequest> = <ConfigHdr> + <RequestElement>
 | |
|   CHAR16             *ConfigAltResp;    // Alt config response string for this ConfigRequest.
 | |
|   UINTN              ElementCount;      // Number of <RequestElement> in the <ConfigRequest>
 | |
|   UINTN              SpareStrLen;
 | |
|   CHAR16             *RestoreConfigRequest;    // When submit form fail, the element need to be restored
 | |
|   CHAR16             *SyncConfigRequest;       // When submit form fail, the element need to be synced
 | |
| 
 | |
|   BROWSER_STORAGE    *Storage;
 | |
| } FORM_BROWSER_CONFIG_REQUEST;
 | |
| #define FORM_BROWSER_CONFIG_REQUEST_FROM_LINK(a)            CR (a, FORM_BROWSER_CONFIG_REQUEST, Link, FORM_BROWSER_CONFIG_REQUEST_SIGNATURE)
 | |
| #define FORM_BROWSER_CONFIG_REQUEST_FROM_SAVE_FAIL_LINK(a)  CR (a, FORM_BROWSER_CONFIG_REQUEST, SaveFailLink, FORM_BROWSER_CONFIG_REQUEST_SIGNATURE)
 | |
| 
 | |
| #define FORM_BROWSER_FORM_SIGNATURE  SIGNATURE_32 ('F', 'F', 'R', 'M')
 | |
| #define STANDARD_MAP_FORM_TYPE       0x01
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                   Signature;
 | |
|   LIST_ENTRY              Link;
 | |
| 
 | |
|   UINT16                  FormId;            // FormId of normal form or formmap form.
 | |
|   EFI_STRING_ID           FormTitle;         // FormTile of normal form, or FormMapMethod title of formmap form.
 | |
|   UINT16                  FormType;          // Specific form type for the different form.
 | |
| 
 | |
|   EFI_IMAGE_ID            ImageId;
 | |
| 
 | |
|   BOOLEAN                 ModalForm;         // Whether this is a modal form.
 | |
|   BOOLEAN                 Locked;            // Whether this form is locked.
 | |
|   EFI_GUID                RefreshGuid;       // Form refresh event guid.
 | |
| 
 | |
|   LIST_ENTRY              FormViewListHead;    // List of type FORMID_INFO is Browser View Form History List.
 | |
|   LIST_ENTRY              ExpressionListHead;  // List of Expressions (FORM_EXPRESSION)
 | |
|   LIST_ENTRY              StatementListHead;   // List of Statements and Questions (FORM_BROWSER_STATEMENT)
 | |
|   LIST_ENTRY              ConfigRequestHead;   // List of configreques for all storage.
 | |
|   FORM_EXPRESSION_LIST    *SuppressExpression; // nesting inside of SuppressIf
 | |
| } FORM_BROWSER_FORM;
 | |
| 
 | |
| #define FORM_BROWSER_FORM_FROM_LINK(a)  CR (a, FORM_BROWSER_FORM, Link, FORM_BROWSER_FORM_SIGNATURE)
 | |
| 
 | |
| #define FORMSET_DEFAULTSTORE_SIGNATURE  SIGNATURE_32 ('F', 'D', 'F', 'S')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN            Signature;
 | |
|   LIST_ENTRY       Link;
 | |
| 
 | |
|   UINT16           DefaultId;
 | |
|   EFI_STRING_ID    DefaultName;
 | |
| } FORMSET_DEFAULTSTORE;
 | |
| 
 | |
| #define FORMSET_DEFAULTSTORE_FROM_LINK(a)  CR (a, FORMSET_DEFAULTSTORE, Link, FORMSET_DEFAULTSTORE_SIGNATURE)
 | |
| 
 | |
| #define FORM_BROWSER_FORMSET_SIGNATURE  SIGNATURE_32 ('F', 'B', 'F', 'S')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                             Signature;
 | |
|   LIST_ENTRY                        Link;
 | |
|   LIST_ENTRY                        SaveFailLink;
 | |
| 
 | |
|   EFI_HII_HANDLE                    HiiHandle;    // unique id for formset.
 | |
|   EFI_HANDLE                        DriverHandle;
 | |
|   EFI_HII_CONFIG_ACCESS_PROTOCOL    *ConfigAccess;
 | |
|   EFI_DEVICE_PATH_PROTOCOL          *DevicePath;
 | |
| 
 | |
|   UINTN                             IfrBinaryLength;
 | |
|   UINT8                             *IfrBinaryData;
 | |
| 
 | |
|   BOOLEAN                           QuestionInited; // Have finished question initilization?
 | |
|   EFI_GUID                          Guid;
 | |
|   EFI_STRING_ID                     FormSetTitle;
 | |
|   EFI_STRING_ID                     Help;
 | |
|   UINT8                             NumberOfClassGuid;
 | |
|   EFI_GUID                          ClassGuid[3];       // Up to three ClassGuid
 | |
|   UINT16                            Class;              // Tiano extended Class code
 | |
|   UINT16                            SubClass;           // Tiano extended Subclass code
 | |
|   EFI_IMAGE_ID                      ImageId;
 | |
|   EFI_IFR_OP_HEADER                 *OpCode;            // mainly for formset op to get ClassGuid
 | |
| 
 | |
|   FORM_BROWSER_STATEMENT            *StatementBuffer;   // Buffer for all Statements and Questions
 | |
|   EXPRESSION_OPCODE                 *ExpressionBuffer;  // Buffer for all Expression OpCode
 | |
|   FORM_BROWSER_FORM                 *SaveFailForm;      // The form which failed to save.
 | |
|   FORM_BROWSER_STATEMENT            *SaveFailStatement; // The Statement which failed to save.
 | |
| 
 | |
|   LIST_ENTRY                        StatementListOSF;        // Statement list out side of the form.
 | |
|   LIST_ENTRY                        StorageListHead;         // Storage list (FORMSET_STORAGE)
 | |
|   LIST_ENTRY                        SaveFailStorageListHead; // Storage list for the save fail storage.
 | |
|   LIST_ENTRY                        DefaultStoreListHead;    // DefaultStore list (FORMSET_DEFAULTSTORE)
 | |
|   LIST_ENTRY                        FormListHead;            // Form list (FORM_BROWSER_FORM)
 | |
|   LIST_ENTRY                        ExpressionListHead;      // List of Expressions (FORM_EXPRESSION)
 | |
| } FORM_BROWSER_FORMSET;
 | |
| #define FORM_BROWSER_FORMSET_FROM_LINK(a)  CR (a, FORM_BROWSER_FORMSET, Link, FORM_BROWSER_FORMSET_SIGNATURE)
 | |
| 
 | |
| #define FORM_BROWSER_FORMSET_FROM_SAVE_FAIL_LINK(a)  CR (a, FORM_BROWSER_FORMSET, SaveFailLink, FORM_BROWSER_FORMSET_SIGNATURE)
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY    Link;
 | |
|   EFI_EVENT     RefreshEvent;
 | |
| } FORM_BROWSER_REFRESH_EVENT_NODE;
 | |
| 
 | |
| #define FORM_BROWSER_REFRESH_EVENT_FROM_LINK(a)  BASE_CR (a, FORM_BROWSER_REFRESH_EVENT_NODE, Link)
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_HII_HANDLE            Handle;
 | |
| 
 | |
|   //
 | |
|   // Target formset/form/Question information
 | |
|   //
 | |
|   EFI_GUID                  FormSetGuid;
 | |
|   UINT16                    FormId;
 | |
|   UINT16                    QuestionId;
 | |
|   UINTN                     Sequence; // used for time/date only.
 | |
| 
 | |
|   UINTN                     TopRow;
 | |
|   UINTN                     BottomRow;
 | |
|   UINTN                     PromptCol;
 | |
|   UINTN                     OptionCol;
 | |
|   UINTN                     CurrentRow;
 | |
| 
 | |
|   //
 | |
|   // Ation for Browser to taken:
 | |
|   //   UI_ACTION_NONE            - navigation inside a form
 | |
|   //   UI_ACTION_REFRESH_FORM    - re-evaluate expressions and repaint form
 | |
|   //   UI_ACTION_REFRESH_FORMSET - re-parse formset IFR binary
 | |
|   //
 | |
|   UINTN                     Action;
 | |
| 
 | |
|   //
 | |
|   // Current selected fomset/form/Question
 | |
|   //
 | |
|   FORM_BROWSER_FORMSET      *FormSet;
 | |
|   FORM_BROWSER_FORM         *Form;
 | |
|   FORM_BROWSER_STATEMENT    *Statement;
 | |
| 
 | |
|   //
 | |
|   // Whether the Form is editable
 | |
|   //
 | |
|   BOOLEAN                   FormEditable;
 | |
| 
 | |
|   FORM_ENTRY_INFO           *CurrentMenu;
 | |
| } UI_MENU_SELECTION;
 | |
| 
 | |
| #define BROWSER_CONTEXT_SIGNATURE  SIGNATURE_32 ('B', 'C', 'T', 'X')
 | |
| 
 | |
| typedef struct {
 | |
|   UINTN                   Signature;
 | |
|   LIST_ENTRY              Link;
 | |
| 
 | |
|   //
 | |
|   // Globals defined in Setup.c
 | |
|   //
 | |
|   BOOLEAN                 FlagReconnect;
 | |
|   BOOLEAN                 CallbackReconnect;
 | |
|   BOOLEAN                 ResetRequired;
 | |
|   BOOLEAN                 ExitRequired;
 | |
|   EFI_HII_HANDLE          HiiHandle;
 | |
|   EFI_GUID                FormSetGuid;
 | |
|   EFI_FORM_ID             FormId;
 | |
|   UI_MENU_SELECTION       *Selection;
 | |
|   FORM_BROWSER_FORMSET    *SystemLevelFormSet;
 | |
|   EFI_QUESTION_ID         CurFakeQestId;
 | |
|   BOOLEAN                 HiiPackageListUpdated;
 | |
|   BOOLEAN                 FinishRetrieveCall;
 | |
|   LIST_ENTRY              FormHistoryList;
 | |
|   LIST_ENTRY              FormSetList;
 | |
| } BROWSER_CONTEXT;
 | |
| 
 | |
| #define BROWSER_CONTEXT_FROM_LINK(a)  CR (a, BROWSER_CONTEXT, Link, BROWSER_CONTEXT_SIGNATURE)
 | |
| 
 | |
| //
 | |
| // Scope for get defaut value. It may be GetDefaultForNoStorage, GetDefaultForStorage or GetDefaultForAll.
 | |
| //
 | |
| typedef enum {
 | |
|   GetDefaultForNoStorage,       // Get default value for question which not has storage.
 | |
|   GetDefaultForStorage,         // Get default value for question which has storage.
 | |
|   GetDefaultForAll,             // Get default value for all questions.
 | |
|   GetDefaultForMax              // Invalid value.
 | |
| } BROWSER_GET_DEFAULT_VALUE;
 | |
| 
 | |
| //
 | |
| // Get/set question value from/to.
 | |
| //
 | |
| typedef enum {
 | |
|   GetSetValueWithEditBuffer = 0,   // Get/Set question value from/to editbuffer in the storage.
 | |
|   GetSetValueWithBuffer,           // Get/Set question value from/to buffer in the storage.
 | |
|   GetSetValueWithHiiDriver,        // Get/Set question value from/to hii driver.
 | |
|   GetSetValueWithBothBuffer,       // Compare the editbuffer with buffer for this question, not use the question value.
 | |
|   GetSetValueWithMax               // Invalid value.
 | |
| } GET_SET_QUESTION_VALUE_WITH;
 | |
| 
 | |
| extern EFI_HII_DATABASE_PROTOCOL           *mHiiDatabase;
 | |
| extern EFI_HII_CONFIG_ROUTING_PROTOCOL     *mHiiConfigRouting;
 | |
| extern EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL  *mPathFromText;
 | |
| extern EDKII_FORM_DISPLAY_ENGINE_PROTOCOL  *mFormDisplay;
 | |
| 
 | |
| extern BOOLEAN                    gCallbackReconnect;
 | |
| extern BOOLEAN                    gFlagReconnect;
 | |
| extern BOOLEAN                    gResetRequiredFormLevel;
 | |
| extern BOOLEAN                    gResetRequiredSystemLevel;
 | |
| extern BOOLEAN                    gExitRequired;
 | |
| extern LIST_ENTRY                 gBrowserFormSetList;
 | |
| extern LIST_ENTRY                 gBrowserHotKeyList;
 | |
| extern BROWSER_SETTING_SCOPE      gBrowserSettingScope;
 | |
| extern EXIT_HANDLER               ExitHandlerFunction;
 | |
| extern EFI_HII_HANDLE             mCurrentHiiHandle;
 | |
| extern SETUP_DRIVER_PRIVATE_DATA  mPrivateData;
 | |
| //
 | |
| // Browser Global Strings
 | |
| //
 | |
| extern CHAR16  *gEmptyString;
 | |
| 
 | |
| extern UI_MENU_SELECTION  *gCurrentSelection;
 | |
| extern BOOLEAN            mHiiPackageListUpdated;
 | |
| extern UINT16             mCurFakeQestId;
 | |
| extern BOOLEAN            mFinishRetrieveCall;
 | |
| 
 | |
| //
 | |
| // Global Procedure Defines
 | |
| //
 | |
| #include "Expression.h"
 | |
| 
 | |
| /**
 | |
|   Initialize the HII String Token to the correct values.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| InitializeBrowserStrings (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Parse opcodes in the formset IFR binary.
 | |
| 
 | |
|   @param  FormSet                Pointer of the FormSet data structure.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Opcode parse success.
 | |
|   @retval Other                  Opcode parse fail.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| ParseOpCodes (
 | |
|   IN FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Free resources allocated for a FormSet.
 | |
| 
 | |
|   @param  FormSet                Pointer of the FormSet
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| DestroyFormSet (
 | |
|   IN OUT FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create a new string in HII Package List.
 | |
| 
 | |
|   @param  String                 The String to be added
 | |
|   @param  HiiHandle              The package list in the HII database to insert the
 | |
|                                  specified string.
 | |
| 
 | |
|   @return The output string.
 | |
| 
 | |
| **/
 | |
| EFI_STRING_ID
 | |
| NewString (
 | |
|   IN  CHAR16          *String,
 | |
|   IN  EFI_HII_HANDLE  HiiHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Delete a string from HII Package List.
 | |
| 
 | |
|   @param  StringId               Id of the string in HII database.
 | |
|   @param  HiiHandle              The HII package list handle.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The string was deleted successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| DeleteString (
 | |
|   IN  EFI_STRING_ID   StringId,
 | |
|   IN  EFI_HII_HANDLE  HiiHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get the string based on the StringId and HII Package List Handle.
 | |
| 
 | |
|   @param  Token                  The String's ID.
 | |
|   @param  HiiHandle              The package list in the HII database to search for
 | |
|                                  the specified string.
 | |
| 
 | |
|   @return The output string.
 | |
| 
 | |
| **/
 | |
| CHAR16 *
 | |
| GetToken (
 | |
|   IN  EFI_STRING_ID   Token,
 | |
|   IN  EFI_HII_HANDLE  HiiHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get Value for given Name from a NameValue Storage.
 | |
| 
 | |
|   @param  Storage                The NameValue Storage.
 | |
|   @param  Name                   The Name.
 | |
|   @param  Value                  The retured Value.
 | |
|   @param  GetValueFrom           Where to get source value, from EditValue or Value.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Value found for given Name.
 | |
|   @retval EFI_NOT_FOUND          No such Name found in NameValue storage.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| GetValueByName (
 | |
|   IN BROWSER_STORAGE              *Storage,
 | |
|   IN CHAR16                       *Name,
 | |
|   IN OUT CHAR16                   **Value,
 | |
|   IN GET_SET_QUESTION_VALUE_WITH  GetValueFrom
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set Value of given Name in a NameValue Storage.
 | |
| 
 | |
|   @param  Storage                The NameValue Storage.
 | |
|   @param  Name                   The Name.
 | |
|   @param  Value                  The Value to set.
 | |
|   @param  SetValueTo             Whether update editValue or Value.
 | |
|   @param  ReturnNode             The node use the input name.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Value found for given Name.
 | |
|   @retval EFI_NOT_FOUND          No such Name found in NameValue storage.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| SetValueByName (
 | |
|   IN  BROWSER_STORAGE              *Storage,
 | |
|   IN  CHAR16                       *Name,
 | |
|   IN  CHAR16                       *Value,
 | |
|   IN  GET_SET_QUESTION_VALUE_WITH  SetValueTo,
 | |
|   OUT NAME_VALUE_NODE              **ReturnNode
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Validate whether this question's value has changed.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  Question               Question to be initialized.
 | |
|   @param  GetValueFrom           Where to get value, may from editbuffer, buffer or hii driver.
 | |
| 
 | |
|   @retval TRUE                   Question's value has changed.
 | |
|   @retval FALSE                  Question's value has not changed
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| IsQuestionValueChanged (
 | |
|   IN FORM_BROWSER_FORMSET         *FormSet,
 | |
|   IN FORM_BROWSER_FORM            *Form,
 | |
|   IN OUT FORM_BROWSER_STATEMENT   *Question,
 | |
|   IN GET_SET_QUESTION_VALUE_WITH  GetValueFrom
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Validate the FormSet. If the formset is not validate, remove it from the list.
 | |
| 
 | |
|   @param  FormSet                The input FormSet which need to validate.
 | |
| 
 | |
|   @retval TRUE                   The handle is validate.
 | |
|   @retval FALSE                  The handle is invalidate.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| ValidateFormSet (
 | |
|   FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Update the ValueChanged status for questions.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  SettingScope           Setting Scope for Default action.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| UpdateStatementStatus (
 | |
|   IN FORM_BROWSER_FORMSET   *FormSet,
 | |
|   IN FORM_BROWSER_FORM      *Form,
 | |
|   IN BROWSER_SETTING_SCOPE  SettingScope
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get Question's current Value.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  Question               Question to be initialized.
 | |
|   @param  GetValueFrom           Where to get value, may from editbuffer, buffer or hii driver.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| GetQuestionValue (
 | |
|   IN FORM_BROWSER_FORMSET         *FormSet,
 | |
|   IN FORM_BROWSER_FORM            *Form,
 | |
|   IN OUT FORM_BROWSER_STATEMENT   *Question,
 | |
|   IN GET_SET_QUESTION_VALUE_WITH  GetValueFrom
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Save Question Value to edit copy(cached) or Storage(uncached).
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  Question               Pointer to the Question.
 | |
|   @param  SetValueTo             Update the question value to editbuffer , buffer or hii driver.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| SetQuestionValue (
 | |
|   IN FORM_BROWSER_FORMSET         *FormSet,
 | |
|   IN FORM_BROWSER_FORM            *Form,
 | |
|   IN OUT FORM_BROWSER_STATEMENT   *Question,
 | |
|   IN GET_SET_QUESTION_VALUE_WITH  SetValueTo
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Perform inconsistent check for a Form.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  Question               The Question to be validated.
 | |
|   @param  Type                   Validation type: InConsistent or NoSubmit
 | |
| 
 | |
|   @retval EFI_SUCCESS            Form validation pass.
 | |
|   @retval other                  Form validation failed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| ValidateQuestion (
 | |
|   IN  FORM_BROWSER_FORMSET    *FormSet,
 | |
|   IN  FORM_BROWSER_FORM       *Form,
 | |
|   IN  FORM_BROWSER_STATEMENT  *Question,
 | |
|   IN  UINTN                   Type
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Discard data based on the input setting scope (Form, FormSet or System).
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  SettingScope           Setting Scope for Discard action.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
|   @retval EFI_UNSUPPORTED        Unsupport SettingScope.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| DiscardForm (
 | |
|   IN FORM_BROWSER_FORMSET   *FormSet,
 | |
|   IN FORM_BROWSER_FORM      *Form,
 | |
|   IN BROWSER_SETTING_SCOPE  SettingScope
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Submit data based on the input Setting level (Form, FormSet or System).
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  SettingScope           Setting Scope for Submit action.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
|   @retval EFI_UNSUPPORTED        Unsupport SettingScope.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| SubmitForm (
 | |
|   IN FORM_BROWSER_FORMSET   *FormSet,
 | |
|   IN FORM_BROWSER_FORM      *Form,
 | |
|   IN BROWSER_SETTING_SCOPE  SettingScope
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Reset Question to its default value.
 | |
| 
 | |
|   @param  FormSet                The form set.
 | |
|   @param  Form                   The form.
 | |
|   @param  Question               The question.
 | |
|   @param  DefaultId              The Class of the default.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Question is reset to default value.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| GetQuestionDefault (
 | |
|   IN FORM_BROWSER_FORMSET    *FormSet,
 | |
|   IN FORM_BROWSER_FORM       *Form,
 | |
|   IN FORM_BROWSER_STATEMENT  *Question,
 | |
|   IN UINT16                  DefaultId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get current setting of Questions.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| InitializeCurrentSetting (
 | |
|   IN OUT FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initialize the internal data structure of a FormSet.
 | |
| 
 | |
|   @param  Handle                 PackageList Handle
 | |
|   @param  FormSetGuid            GUID of a formset. If not specified (NULL or zero
 | |
|                                  GUID), take the first FormSet found in package
 | |
|                                  list.
 | |
|   @param  FormSet                FormSet data structure.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
|   @retval EFI_NOT_FOUND          The specified FormSet could not be found.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| InitializeFormSet (
 | |
|   IN  EFI_HII_HANDLE        Handle,
 | |
|   IN OUT EFI_GUID           *FormSetGuid,
 | |
|   OUT FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Reset Questions to their initial value or default value in a Form, Formset or System.
 | |
| 
 | |
|   GetDefaultValueScope parameter decides which questions will reset
 | |
|   to its default value.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  DefaultId              The Class of the default.
 | |
|   @param  SettingScope           Setting Scope for Default action.
 | |
|   @param  GetDefaultValueScope   Get default value scope.
 | |
|   @param  Storage                Get default value only for this storage.
 | |
|   @param  RetrieveValueFirst     Whether call the retrieve call back to
 | |
|                                  get the initial value before get default
 | |
|                                  value.
 | |
|   @param  SkipGetAltCfg          Whether skip the get altcfg string process.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
|   @retval EFI_UNSUPPORTED        Unsupport SettingScope.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| ExtractDefault (
 | |
|   IN FORM_BROWSER_FORMSET       *FormSet,
 | |
|   IN FORM_BROWSER_FORM          *Form,
 | |
|   IN UINT16                     DefaultId,
 | |
|   IN BROWSER_SETTING_SCOPE      SettingScope,
 | |
|   IN BROWSER_GET_DEFAULT_VALUE  GetDefaultValueScope,
 | |
|   IN BROWSER_STORAGE            *Storage,
 | |
|   IN BOOLEAN                    RetrieveValueFirst,
 | |
|   IN BOOLEAN                    SkipGetAltCfg
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initialize Question's Edit copy from Storage.
 | |
| 
 | |
|   @param  Selection              Selection contains the information about
 | |
|                                  the Selection, form and formset to be displayed.
 | |
|                                  Selection action may be updated in retrieve callback.
 | |
|                                  If Selection is NULL, only initialize Question value.
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| LoadFormConfig (
 | |
|   IN OUT UI_MENU_SELECTION  *Selection,
 | |
|   IN FORM_BROWSER_FORMSET   *FormSet,
 | |
|   IN FORM_BROWSER_FORM      *Form
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initialize Question's Edit copy from Storage for the whole Formset.
 | |
| 
 | |
|   @param  Selection              Selection contains the information about
 | |
|                                  the Selection, form and formset to be displayed.
 | |
|                                  Selection action may be updated in retrieve callback.
 | |
|                                  If Selection is NULL, only initialize Question value.
 | |
|   @param  FormSet                FormSet data structure.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The function completed successfully.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| LoadFormSetConfig (
 | |
|   IN OUT UI_MENU_SELECTION     *Selection,
 | |
|   IN     FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Convert setting of Buffer Storage or NameValue Storage to <ConfigResp>.
 | |
| 
 | |
|   @param  Storage                The Storage to be conveted.
 | |
|   @param  ConfigResp             The returned <ConfigResp>.
 | |
|   @param  ConfigRequest          The ConfigRequest string.
 | |
|   @param  GetEditBuf             Get the data from editbuffer or buffer.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Convert success.
 | |
|   @retval EFI_INVALID_PARAMETER  Incorrect storage type.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| StorageToConfigResp (
 | |
|   IN BROWSER_STORAGE  *Storage,
 | |
|   IN CHAR16           **ConfigResp,
 | |
|   IN CHAR16           *ConfigRequest,
 | |
|   IN BOOLEAN          GetEditBuf
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Convert <ConfigResp> to settings in Buffer Storage or NameValue Storage.
 | |
| 
 | |
|   @param  Storage                The Storage to receive the settings.
 | |
|   @param  ConfigResp             The <ConfigResp> to be converted.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Convert success.
 | |
|   @retval EFI_INVALID_PARAMETER  Incorrect storage type.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| ConfigRespToStorage (
 | |
|   IN BROWSER_STORAGE  *Storage,
 | |
|   IN CHAR16           *ConfigResp
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Fill storage's edit copy with settings requested from Configuration Driver.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Storage                Buffer Storage.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| LoadStorage (
 | |
|   IN FORM_BROWSER_FORMSET  *FormSet,
 | |
|   IN FORMSET_STORAGE       *Storage
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Fetch the Ifr binary data of a FormSet.
 | |
| 
 | |
|   @param  Handle                 PackageList Handle
 | |
|   @param  FormSetGuid            GUID of a formset. If not specified (NULL or zero
 | |
|                                  GUID), take the first FormSet found in package
 | |
|                                  list.
 | |
|   @param  BinaryLength           The length of the FormSet IFR binary.
 | |
|   @param  BinaryData             The buffer designed to receive the FormSet.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Buffer filled with the requested FormSet.
 | |
|                                  BufferLength was updated.
 | |
|   @retval EFI_INVALID_PARAMETER  The handle is unknown.
 | |
|   @retval EFI_NOT_FOUND          A form or FormSet on the requested handle cannot
 | |
|                                  be found with the requested FormId.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| GetIfrBinaryData (
 | |
|   IN  EFI_HII_HANDLE  Handle,
 | |
|   IN OUT EFI_GUID     *FormSetGuid,
 | |
|   OUT UINTN           *BinaryLength,
 | |
|   OUT UINT8           **BinaryData
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Save globals used by previous call to SendForm(). SendForm() may be called from
 | |
|   HiiConfigAccess.Callback(), this will cause SendForm() be reentried.
 | |
|   So, save globals of previous call to SendForm() and restore them upon exit.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| SaveBrowserContext (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Restore globals used by previous call to SendForm().
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| RestoreBrowserContext (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This is the routine which an external caller uses to direct the browser
 | |
|   where to obtain it's information.
 | |
| 
 | |
| 
 | |
|   @param This            The Form Browser protocol instanse.
 | |
|   @param Handles         A pointer to an array of Handles.  If HandleCount > 1 we
 | |
|                          display a list of the formsets for the handles specified.
 | |
|   @param HandleCount     The number of Handles specified in Handle.
 | |
|   @param FormSetGuid     This field points to the EFI_GUID which must match the Guid
 | |
|                          field in the EFI_IFR_FORM_SET op-code for the specified
 | |
|                          forms-based package. If FormSetGuid is NULL, then this
 | |
|                          function will display the first found forms package.
 | |
|   @param FormId          This field specifies which EFI_IFR_FORM to render as the first
 | |
|                          displayable page. If this field has a value of 0x0000, then
 | |
|                          the forms browser will render the specified forms in their encoded order.
 | |
|                          ScreenDimenions - This allows the browser to be called so that it occupies a
 | |
|                          portion of the physical screen instead of dynamically determining the screen dimensions.
 | |
|                          ActionRequest   - Points to the action recommended by the form.
 | |
|   @param ScreenDimensions Points to recommended form dimensions, including any non-content area, in
 | |
|                           characters.
 | |
|   @param ActionRequest       Points to the action recommended by the form.
 | |
| 
 | |
|   @retval  EFI_SUCCESS            The function completed successfully.
 | |
|   @retval  EFI_INVALID_PARAMETER  One of the parameters has an invalid value.
 | |
|   @retval  EFI_NOT_FOUND          No valid forms could be found to display.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| SendForm (
 | |
|   IN  CONST EFI_FORM_BROWSER2_PROTOCOL  *This,
 | |
|   IN  EFI_HII_HANDLE                    *Handles,
 | |
|   IN  UINTN                             HandleCount,
 | |
|   IN  EFI_GUID                          *FormSetGuid  OPTIONAL,
 | |
|   IN  UINT16                            FormId  OPTIONAL,
 | |
|   IN  CONST EFI_SCREEN_DESCRIPTOR       *ScreenDimensions  OPTIONAL,
 | |
|   OUT EFI_BROWSER_ACTION_REQUEST        *ActionRequest  OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   This function is called by a callback handler to retrieve uncommitted state
 | |
|   data from the browser.
 | |
| 
 | |
|   @param  This                   A pointer to the EFI_FORM_BROWSER2_PROTOCOL
 | |
|                                  instance.
 | |
|   @param  ResultsDataSize        A pointer to the size of the buffer associated
 | |
|                                  with ResultsData.
 | |
|   @param  ResultsData            A string returned from an IFR browser or
 | |
|                                  equivalent. The results string will have no
 | |
|                                  routing information in them.
 | |
|   @param  RetrieveData           A BOOLEAN field which allows an agent to retrieve
 | |
|                                  (if RetrieveData = TRUE) data from the uncommitted
 | |
|                                  browser state information or set (if RetrieveData
 | |
|                                  = FALSE) data in the uncommitted browser state
 | |
|                                  information.
 | |
|   @param  VariableGuid           An optional field to indicate the target variable
 | |
|                                  GUID name to use.
 | |
|   @param  VariableName           An optional field to indicate the target
 | |
|                                  human-readable variable name.
 | |
| 
 | |
|   @retval EFI_SUCCESS            The results have been distributed or are awaiting
 | |
|                                  distribution.
 | |
|   @retval EFI_BUFFER_TOO_SMALL   The ResultsDataSize specified was too small to
 | |
|                                  contain the results data.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| BrowserCallback (
 | |
|   IN CONST EFI_FORM_BROWSER2_PROTOCOL  *This,
 | |
|   IN OUT UINTN                         *ResultsDataSize,
 | |
|   IN OUT EFI_STRING                    ResultsData,
 | |
|   IN BOOLEAN                           RetrieveData,
 | |
|   IN CONST EFI_GUID                    *VariableGuid  OPTIONAL,
 | |
|   IN CONST CHAR16                      *VariableName  OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find menu which will show next time.
 | |
| 
 | |
|   @param Selection       On input, Selection tell setup browser the information
 | |
|                          about the Selection, form and formset to be displayed.
 | |
|                          On output, Selection return the screen item that is selected
 | |
|                          by user.
 | |
|   @param SettingLevel    Input Settting level, if it is FormLevel, just exit current form.
 | |
|                          else, we need to exit current formset.
 | |
| 
 | |
|   @retval TRUE           Exit current form.
 | |
|   @retval FALSE          User press ESC and keep in current form.
 | |
| **/
 | |
| BOOLEAN
 | |
| FindNextMenu (
 | |
|   IN OUT UI_MENU_SELECTION        *Selection,
 | |
|   IN       BROWSER_SETTING_SCOPE  SettingLevel
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   check whether the form need to update the NV.
 | |
| 
 | |
|   @param  Form                Form data structure.
 | |
| 
 | |
|   @retval TRUE                   Need to update the NV.
 | |
|   @retval FALSE                  No need to update the NV.
 | |
| **/
 | |
| BOOLEAN
 | |
| IsNvUpdateRequiredForForm (
 | |
|   IN FORM_BROWSER_FORM  *Form
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   check whether the formset need to update the NV.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
| 
 | |
|   @retval TRUE                   Need to update the NV.
 | |
|   @retval FALSE                  No need to update the NV.
 | |
| **/
 | |
| BOOLEAN
 | |
| IsNvUpdateRequiredForFormSet (
 | |
|   IN FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Call the call back function for the question and process the return action.
 | |
| 
 | |
|   @param Selection             On input, Selection tell setup browser the information
 | |
|                                about the Selection, form and formset to be displayed.
 | |
|                                On output, Selection return the screen item that is selected
 | |
|                                by user.
 | |
|   @param FormSet               The formset this question belong to.
 | |
|   @param Form                  The form this question belong to.
 | |
|   @param Question              The Question which need to call.
 | |
|   @param Action                The action request.
 | |
|   @param SkipSaveOrDiscard     Whether skip save or discard action.
 | |
| 
 | |
|   @retval EFI_SUCCESS          The call back function executes successfully.
 | |
|   @return Other value if the call back function failed to execute.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ProcessCallBackFunction (
 | |
|   IN OUT UI_MENU_SELECTION       *Selection,
 | |
|   IN     FORM_BROWSER_FORMSET    *FormSet,
 | |
|   IN     FORM_BROWSER_FORM       *Form,
 | |
|   IN     FORM_BROWSER_STATEMENT  *Question,
 | |
|   IN     EFI_BROWSER_ACTION      Action,
 | |
|   IN     BOOLEAN                 SkipSaveOrDiscard
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Call the retrieve type call back function for one question to get the initialize data.
 | |
| 
 | |
|   This function only used when in the initialize stage, because in this stage, the
 | |
|   Selection->Form is not ready. For other case, use the ProcessCallBackFunction instead.
 | |
| 
 | |
|   @param ConfigAccess          The config access protocol produced by the hii driver.
 | |
|   @param Statement             The Question which need to call.
 | |
|   @param FormSet               The formset this question belong to.
 | |
| 
 | |
|   @retval EFI_SUCCESS          The call back function executes successfully.
 | |
|   @return Other value if the call back function failed to execute.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ProcessRetrieveForQuestion (
 | |
|   IN     EFI_HII_CONFIG_ACCESS_PROTOCOL  *ConfigAccess,
 | |
|   IN     FORM_BROWSER_STATEMENT          *Statement,
 | |
|   IN     FORM_BROWSER_FORMSET            *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find the matched FormSet context in the backup maintain list based on HiiHandle.
 | |
| 
 | |
|   @param Handle  The Hii Handle.
 | |
| 
 | |
|   @return the found FormSet context. If no found, NULL will return.
 | |
| 
 | |
| **/
 | |
| FORM_BROWSER_FORMSET *
 | |
| GetFormSetFromHiiHandle (
 | |
|   EFI_HII_HANDLE  Handle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check whether the input HII handle is the FormSet that is being used.
 | |
| 
 | |
|   @param Handle  The Hii Handle.
 | |
| 
 | |
|   @retval TRUE   HII handle is being used.
 | |
|   @retval FALSE  HII handle is not being used.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| IsHiiHandleInBrowserContext (
 | |
|   EFI_HII_HANDLE  Handle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Configure what scope the hot key will impact.
 | |
|   All hot keys have the same scope. The mixed hot keys with the different level are not supported.
 | |
|   If no scope is set, the default scope will be FormSet level.
 | |
|   After all registered hot keys are removed, previous Scope can reset to another level.
 | |
| 
 | |
|   @param[in] Scope               Scope level to be set.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Scope is set correctly.
 | |
|   @retval EFI_INVALID_PARAMETER  Scope is not the valid value specified in BROWSER_SETTING_SCOPE.
 | |
|   @retval EFI_UNSPPORTED         Scope level is different from current one that the registered hot keys have.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| SetScope (
 | |
|   IN BROWSER_SETTING_SCOPE  Scope
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Register the hot key with its browser action, or unregistered the hot key.
 | |
|   Only support hot key that is not printable character (control key, function key, etc.).
 | |
|   If the action value is zero, the hot key will be unregistered if it has been registered.
 | |
|   If the same hot key has been registered, the new action and help string will override the previous ones.
 | |
| 
 | |
|   @param[in] KeyData     A pointer to a buffer that describes the keystroke
 | |
|                          information for the hot key. Its type is EFI_INPUT_KEY to
 | |
|                          be supported by all ConsoleIn devices.
 | |
|   @param[in] Action      Action value that describes what action will be trigged when the hot key is pressed.
 | |
|   @param[in] DefaultId   Specifies the type of defaults to retrieve, which is only for DEFAULT action.
 | |
|   @param[in] HelpString  Help string that describes the hot key information.
 | |
|                          Its value may be NULL for the unregistered hot key.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Hot key is registered or unregistered.
 | |
|   @retval EFI_INVALID_PARAMETER  KeyData is NULL.
 | |
|   @retval EFI_NOT_FOUND          KeyData is not found to be unregistered.
 | |
|   @retval EFI_UNSUPPORTED        Key represents a printable character. It is conflicted with Browser.
 | |
|   @retval EFI_ALREADY_STARTED    Key already been registered for one hot key.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| RegisterHotKey (
 | |
|   IN EFI_INPUT_KEY  *KeyData,
 | |
|   IN UINT32         Action,
 | |
|   IN UINT16         DefaultId,
 | |
|   IN EFI_STRING     HelpString OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Register Exit handler function.
 | |
|   When more than one handler function is registered, the latter one will override the previous one.
 | |
|   When NULL handler is specified, the previous Exit handler will be unregistered.
 | |
| 
 | |
|   @param[in] Handler      Pointer to handler function.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| RegiserExitHandler (
 | |
|   IN EXIT_HANDLER  Handler
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Check whether the browser data has been modified.
 | |
| 
 | |
|   @retval TRUE        Browser data is changed.
 | |
|   @retval FALSE       No browser data is changed.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| EFIAPI
 | |
| IsBrowserDataModified (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Execute the action requested by the Action parameter.
 | |
| 
 | |
|   @param[in] Action     Execute the request action.
 | |
|   @param[in] DefaultId  The default Id info when need to load default value.
 | |
| 
 | |
|   @retval EFI_SUCCESS              Execute the request action succss.
 | |
|   @retval EFI_INVALID_PARAMETER    The input action value is invalid.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| ExecuteAction (
 | |
|   IN UINT32  Action,
 | |
|   IN UINT16  DefaultId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create reminder to let user to choose save or discard the changed browser data.
 | |
|   Caller can use it to actively check the changed browser data.
 | |
| 
 | |
|   @retval BROWSER_NO_CHANGES       No browser data is changed.
 | |
|   @retval BROWSER_SAVE_CHANGES     The changed browser data is saved.
 | |
|   @retval BROWSER_DISCARD_CHANGES  The changed browser data is discard.
 | |
|   @retval BROWSER_KEEP_CURRENT     Browser keep current changes.
 | |
| 
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| SaveReminder (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check whether the Reset Required for the browser
 | |
| 
 | |
|   @retval TRUE      Browser required to reset after exit.
 | |
|   @retval FALSE     Browser not need to reset after exit.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| EFIAPI
 | |
| IsResetRequired (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find the registered HotKey based on KeyData.
 | |
| 
 | |
|   @param[in] KeyData     A pointer to a buffer that describes the keystroke
 | |
|                          information for the hot key.
 | |
| 
 | |
|   @return The registered HotKey context. If no found, NULL will return.
 | |
| **/
 | |
| BROWSER_HOT_KEY *
 | |
| GetHotKeyFromRegisterList (
 | |
|   IN EFI_INPUT_KEY  *KeyData
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Get FORM_BROWSER_STATEMENT from FORM_DISPLAY_ENGINE_STATEMENT based on the OpCode info.
 | |
| 
 | |
|   @param DisplayStatement        The input FORM_DISPLAY_ENGINE_STATEMENT.
 | |
| 
 | |
|   @retval FORM_BROWSER_STATEMENT  The return FORM_BROWSER_STATEMENT info.
 | |
| 
 | |
| **/
 | |
| FORM_BROWSER_STATEMENT *
 | |
| GetBrowserStatement (
 | |
|   IN FORM_DISPLAY_ENGINE_STATEMENT  *DisplayStatement
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Password may be stored as encrypted by Configuration Driver. When change a
 | |
|   password, user will be challenged with old password. To validate user input old
 | |
|   password, we will send the clear text to Configuration Driver via Callback().
 | |
|   Configuration driver is responsible to check the passed in password and return
 | |
|   the validation result. If validation pass, state machine in password Callback()
 | |
|   will transit from BROWSER_STATE_VALIDATE_PASSWORD to BROWSER_STATE_SET_PASSWORD.
 | |
|   After user type in new password twice, Callback() will be invoked to send the
 | |
|   new password to Configuration Driver.
 | |
| 
 | |
|   @param  Selection              Pointer to UI_MENU_SELECTION.
 | |
|   @param  MenuOption             The MenuOption for this password Question.
 | |
|   @param  String                 The clear text of password.
 | |
| 
 | |
|   @retval EFI_NOT_AVAILABLE_YET  Callback() request to terminate password input.
 | |
|   @return In state of BROWSER_STATE_VALIDATE_PASSWORD:
 | |
|   @retval EFI_SUCCESS            Password correct, Browser will prompt for new
 | |
|                                  password.
 | |
|   @retval EFI_NOT_READY          Password incorrect, Browser will show error
 | |
|                                  message.
 | |
|   @retval Other                  Browser will do nothing.
 | |
|   @return In state of BROWSER_STATE_SET_PASSWORD:
 | |
|   @retval EFI_SUCCESS            Set password success.
 | |
|   @retval Other                  Set password failed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| PasswordCallback (
 | |
|   IN  UI_MENU_SELECTION       *Selection,
 | |
|   IN  FORM_BROWSER_STATEMENT  *Question,
 | |
|   IN  CHAR16                  *String
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Display error message for invalid password.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| PasswordInvalid (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   The worker function that send the displays to the screen. On output,
 | |
|   the selection made by user is returned.
 | |
| 
 | |
|   @param Selection       On input, Selection tell setup browser the information
 | |
|                          about the Selection, form and formset to be displayed.
 | |
|                          On output, Selection return the screen item that is selected
 | |
|                          by user.
 | |
| 
 | |
|   @retval EFI_SUCCESS    The page is displayed successfully.
 | |
|   @return Other value if the page failed to be diplayed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| SetupBrowser (
 | |
|   IN OUT UI_MENU_SELECTION  *Selection
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Free up the resource allocated for all strings required
 | |
|   by Setup Browser.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| FreeBrowserStrings (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Create a menu with specified formset GUID and form ID, and add it as a child
 | |
|   of the given parent menu.
 | |
| 
 | |
|   @param  HiiHandle              Hii handle related to this formset.
 | |
|   @param  FormSetGuid            The Formset Guid of menu to be added.
 | |
|   @param  FormId                 The Form ID of menu to be added.
 | |
|   @param  QuestionId             The question id of this menu to be added.
 | |
| 
 | |
|   @return A pointer to the newly added menu or NULL if memory is insufficient.
 | |
| 
 | |
| **/
 | |
| FORM_ENTRY_INFO *
 | |
| UiAddMenuList (
 | |
|   IN EFI_HII_HANDLE  HiiHandle,
 | |
|   IN EFI_GUID        *FormSetGuid,
 | |
|   IN UINT16          FormId,
 | |
|   IN UINT16          QuestionId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Search Menu with given FormSetGuid and FormId in all cached menu list.
 | |
| 
 | |
|   @param  HiiHandle              HiiHandle for FormSet.
 | |
|   @param  FormSetGuid            The Formset GUID of the menu to search.
 | |
|   @param  FormId                 The Form ID of menu to search.
 | |
| 
 | |
|   @return A pointer to menu found or NULL if not found.
 | |
| 
 | |
| **/
 | |
| FORM_ENTRY_INFO *
 | |
| UiFindMenuList (
 | |
|   IN EFI_HII_HANDLE  HiiHandle,
 | |
|   IN EFI_GUID        *FormSetGuid,
 | |
|   IN UINT16          FormId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Free Menu list linked list.
 | |
| 
 | |
|   @param  MenuListHead    One Menu list point in the menu list.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| UiFreeMenuList (
 | |
|   LIST_ENTRY  *MenuListHead
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find parent menu for current menu.
 | |
| 
 | |
|   @param  CurrentMenu    Current Menu
 | |
|   @param  SettingLevel   Whether find parent menu in Form Level or Formset level.
 | |
|                          In form level, just find the parent menu;
 | |
|                          In formset level, find the parent menu which has different
 | |
|                          formset guid value.
 | |
| 
 | |
|   @retval   The parent menu for current menu.
 | |
| **/
 | |
| FORM_ENTRY_INFO *
 | |
| UiFindParentMenu (
 | |
|   IN FORM_ENTRY_INFO        *CurrentMenu,
 | |
|   IN BROWSER_SETTING_SCOPE  SettingLevel
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Validate the HiiHandle.
 | |
| 
 | |
|   @param  HiiHandle              The input HiiHandle which need to validate.
 | |
| 
 | |
|   @retval TRUE                   The handle is validate.
 | |
|   @retval FALSE                  The handle is invalidate.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| ValidateHiiHandle (
 | |
|   EFI_HII_HANDLE  HiiHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Copy current Menu list to the new menu list.
 | |
| 
 | |
|   @param  NewMenuListHead        New create Menu list.
 | |
|   @param  CurrentMenuListHead    Current Menu list.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| UiCopyMenuList (
 | |
|   OUT LIST_ENTRY  *NewMenuListHead,
 | |
|   IN  LIST_ENTRY  *CurrentMenuListHead
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Search an Option of a Question by its value.
 | |
| 
 | |
|   @param  Question               The Question
 | |
|   @param  OptionValue            Value for Option to be searched.
 | |
| 
 | |
|   @retval Pointer                Pointer to the found Option.
 | |
|   @retval NULL                   Option not found.
 | |
| 
 | |
| **/
 | |
| QUESTION_OPTION *
 | |
| ValueToOption (
 | |
|   IN FORM_BROWSER_STATEMENT  *Question,
 | |
|   IN EFI_HII_VALUE           *OptionValue
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Return data element in an Array by its Index.
 | |
| 
 | |
|   @param  Array                  The data array.
 | |
|   @param  Type                   Type of the data in this array.
 | |
|   @param  Index                  Zero based index for data in this array.
 | |
| 
 | |
|   @retval Value                  The data to be returned
 | |
| 
 | |
| **/
 | |
| UINT64
 | |
| GetArrayData (
 | |
|   IN VOID   *Array,
 | |
|   IN UINT8  Type,
 | |
|   IN UINTN  Index
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set value of a data element in an Array by its Index.
 | |
| 
 | |
|   @param  Array                  The data array.
 | |
|   @param  Type                   Type of the data in this array.
 | |
|   @param  Index                  Zero based index for data in this array.
 | |
|   @param  Value                  The value to be set.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| SetArrayData (
 | |
|   IN VOID    *Array,
 | |
|   IN UINT8   Type,
 | |
|   IN UINTN   Index,
 | |
|   IN UINT64  Value
 | |
|   );
 | |
| 
 | |
| /**
 | |
|    Compare two Hii value.
 | |
| 
 | |
|    @param  Value1                 Expression value to compare on left-hand.
 | |
|    @param  Value2                 Expression value to compare on right-hand.
 | |
|    @param  Result                 Return value after compare.
 | |
|                                   retval 0                      Two operators equal.
 | |
|                                   return Positive value if Value1 is greater than Value2.
 | |
|                                   retval Negative value if Value1 is less than Value2.
 | |
|    @param  HiiHandle              Only required for string compare.
 | |
| 
 | |
|    @retval other                  Could not perform compare on two values.
 | |
|    @retval EFI_SUCCESS            Compare the value success.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| CompareHiiValue (
 | |
|   IN  EFI_HII_VALUE   *Value1,
 | |
|   IN  EFI_HII_VALUE   *Value2,
 | |
|   OUT INTN            *Result,
 | |
|   IN  EFI_HII_HANDLE  HiiHandle OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Perform Password check.
 | |
|   Passwork may be encrypted by driver that requires the specific check.
 | |
| 
 | |
|   @param  Form             Form where Password Statement is in.
 | |
|   @param  Statement        Password statement
 | |
|   @param  PasswordString   Password string to be checked. It may be NULL.
 | |
|                            NULL means to restore password.
 | |
|                            "" string can be used to checked whether old password does exist.
 | |
| 
 | |
|   @return Status     Status of Password check.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| PasswordCheck (
 | |
|   IN FORM_DISPLAY_ENGINE_FORM       *Form,
 | |
|   IN FORM_DISPLAY_ENGINE_STATEMENT  *Statement,
 | |
|   IN EFI_STRING                     PasswordString  OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Get FORM_BROWSER_STATEMENT from FORM_DISPLAY_ENGINE_STATEMENT based on the OpCode info.
 | |
| 
 | |
|   @param DisplayStatement        The input FORM_DISPLAY_ENGINE_STATEMENT.
 | |
| 
 | |
|   @retval FORM_BROWSER_STATEMENT  The return FORM_BROWSER_STATEMENT info.
 | |
| 
 | |
| **/
 | |
| FORM_BROWSER_STATEMENT *
 | |
| GetBrowserStatement (
 | |
|   IN FORM_DISPLAY_ENGINE_STATEMENT  *DisplayStatement
 | |
|   );
 | |
| 
 | |
| /**
 | |
| 
 | |
|   Initialize the Display form structure data.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| InitializeDisplayFormData (
 | |
|   VOID
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Base on the current formset info, clean the ConfigRequest string in browser storage.
 | |
| 
 | |
|   @param  FormSet                Pointer of the FormSet
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| CleanBrowserStorage (
 | |
|   IN OUT FORM_BROWSER_FORMSET  *FormSet
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Find HII Handle in the HII database associated with given Device Path.
 | |
| 
 | |
|   If DevicePath is NULL, then ASSERT.
 | |
| 
 | |
|   @param  DevicePath             Device Path associated with the HII package list
 | |
|                                  handle.
 | |
|   @param  FormsetGuid            The formset guid for this formset.
 | |
| 
 | |
|   @retval Handle                 HII package list Handle associated with the Device
 | |
|                                         Path.
 | |
|   @retval NULL                   Hii Package list handle is not found.
 | |
| 
 | |
| **/
 | |
| EFI_HII_HANDLE
 | |
| DevicePathToHiiHandle (
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL  *DevicePath,
 | |
|   IN EFI_GUID                  *FormsetGuid
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Adjust the config request info, remove the request elements which already in AllConfigRequest string.
 | |
| 
 | |
|   @param  Storage                Form set Storage.
 | |
|   @param  Request                The input request string.
 | |
|   @param  RespString             Whether the input is ConfigRequest or ConfigResp format.
 | |
| 
 | |
|   @retval TRUE                   Has element not covered by current used elements, need to continue to call ExtractConfig
 | |
|   @retval FALSE                  All elements covered by current used elements.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| ConfigRequestAdjust (
 | |
|   IN  BROWSER_STORAGE  *Storage,
 | |
|   IN  CHAR16           *Request,
 | |
|   IN  BOOLEAN          RespString
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Perform question check.
 | |
| 
 | |
|   If one question has more than one check, process form high priority to low.
 | |
| 
 | |
|   @param  FormSet                FormSet data structure.
 | |
|   @param  Form                   Form data structure.
 | |
|   @param  Question               The Question to be validated.
 | |
| 
 | |
|   @retval EFI_SUCCESS            Form validation pass.
 | |
|   @retval other                  Form validation failed.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| ValueChangedValidation (
 | |
|   IN  FORM_BROWSER_FORMSET    *FormSet,
 | |
|   IN  FORM_BROWSER_FORM       *Form,
 | |
|   IN  FORM_BROWSER_STATEMENT  *Question
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Pop up the error info.
 | |
| 
 | |
|   @param      BrowserStatus    The input browser status.
 | |
|   @param      HiiHandle        The HiiHandle for this error opcode.
 | |
|   @param      OpCode           The opcode use to get the erro info and timeout value.
 | |
|   @param      ErrorString      Error string used by BROWSER_NO_SUBMIT_IF.
 | |
| 
 | |
| **/
 | |
| UINT32
 | |
| PopupErrorMessage (
 | |
|   IN UINT32             BrowserStatus,
 | |
|   IN EFI_HII_HANDLE     HiiHandle,
 | |
|   IN EFI_IFR_OP_HEADER  *OpCode  OPTIONAL,
 | |
|   IN CHAR16             *ErrorString
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Check whether the result is TRUE or FALSE.
 | |
| 
 | |
|   For the EFI_HII_VALUE value type is numeric, return TRUE if the
 | |
|   value is not 0.
 | |
| 
 | |
|   @param  Result             Input the result data.
 | |
| 
 | |
|   @retval TRUE               The result is TRUE.
 | |
|   @retval FALSE              The result is FALSE.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| IsTrue (
 | |
|   IN EFI_HII_VALUE  *Result
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get Formset_storage base on the input varstoreid info.
 | |
| 
 | |
|   @param  FormSet                Pointer of the current FormSet.
 | |
|   @param  VarStoreId             Varstore ID info.
 | |
| 
 | |
|   @return Pointer to a FORMSET_STORAGE data structure.
 | |
| 
 | |
| **/
 | |
| FORMSET_STORAGE *
 | |
| GetFstStgFromVarId (
 | |
|   IN FORM_BROWSER_FORMSET  *FormSet,
 | |
|   IN EFI_VARSTORE_ID       VarStoreId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get Formset_storage base on the input browser storage.
 | |
| 
 | |
|   More than one formsets may share the same browser storage,
 | |
|   this function just get the first formset storage which
 | |
|   share the browser storage.
 | |
| 
 | |
|   @param  Storage              browser storage info.
 | |
| 
 | |
|   @return Pointer to a FORMSET_STORAGE data structure.
 | |
| 
 | |
| 
 | |
| **/
 | |
| FORMSET_STORAGE *
 | |
| GetFstStgFromBrsStg (
 | |
|   IN BROWSER_STORAGE  *Storage
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Reconnect the controller.
 | |
| 
 | |
|   @param DriverHandle          The controller handle which need to be reconnect.
 | |
| 
 | |
|   @retval   TRUE     do the reconnect behavior success.
 | |
|   @retval   FALSE    do the reconnect behavior failed.
 | |
| 
 | |
| **/
 | |
| BOOLEAN
 | |
| ReconnectController (
 | |
|   IN EFI_HANDLE  DriverHandle
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Converts the unicode character of the string from uppercase to lowercase.
 | |
|   This is a internal function.
 | |
| 
 | |
|   @param ConfigString  String to be converted
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| HiiToLower (
 | |
|   IN EFI_STRING  ConfigString
 | |
|   );
 | |
| 
 | |
| #endif
 |