mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-29 12:35:53 +01:00
1205 lines
38 KiB
C
1205 lines
38 KiB
C
/** @file
|
|
Definitions of RedfishPlatformConfigLib.
|
|
|
|
Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
|
|
(C) Copyright 2021 Hewlett Packard Enterprise Development LP<BR>
|
|
Copyright (c) 2022-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
|
|
SPDX-License-Identifier: BSD-2-Clause-Patent
|
|
|
|
**/
|
|
|
|
#ifndef HII_UTILITY_LIB_
|
|
#define HII_UTILITY_LIB_
|
|
|
|
#include <Protocol/DisplayProtocol.h>
|
|
#include <Protocol/HiiConfigAccess.h>
|
|
|
|
//
|
|
// 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.
|
|
|
|
///
|
|
/// HII_NAME_VALUE_NODE for name/value storage
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
CHAR16 *Name;
|
|
CHAR16 *Value;
|
|
} HII_NAME_VALUE_NODE;
|
|
|
|
#define HII_NAME_VALUE_NODE_SIGNATURE SIGNATURE_32 ('N', 'V', 'S', 'T')
|
|
#define HII_NAME_VALUE_NODE_FROM_LINK(a) CR (a, HII_NAME_VALUE_NODE, Link, HII_NAME_VALUE_NODE_SIGNATURE)
|
|
|
|
///
|
|
/// Storage info
|
|
///
|
|
typedef union {
|
|
EFI_STRING_ID VarName;
|
|
UINT16 VarOffset;
|
|
} HII_VAR_STORE_INFO;
|
|
|
|
///
|
|
/// FormSet storage
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
UINT8 Type; ///< Storage type
|
|
EFI_HII_HANDLE HiiHandle; ///< HiiHandle for this varstore.
|
|
|
|
///
|
|
/// For all type of storages.
|
|
///
|
|
UINT16 VarStoreId; ///< VarStore ID.
|
|
EFI_GUID Guid; ///< VarStore Guid.
|
|
|
|
///
|
|
/// For EFI_IFR_VARSTORE, EFI_IFR_VARSTORE_EFI
|
|
///
|
|
CHAR16 *Name; ///< VarStore name
|
|
UINT16 Size; ///< VarStore size.
|
|
UINT8 *Buffer; ///< Buffer storage.
|
|
UINT8 *EditBuffer; ///< Edit copy for Buffer Storage
|
|
|
|
///
|
|
/// For EFI_IFR_VARSTORE_EFI: EFI Variable.
|
|
///
|
|
UINT32 Attributes;
|
|
|
|
///
|
|
/// For EFI_IFR_VARSTORE_NAME_VALUE.
|
|
///
|
|
LIST_ENTRY NameValueList; ///< List of NAME_VALUE_NODE
|
|
|
|
CHAR16 *ConfigHdr; ///< <ConfigHdr>
|
|
CHAR16 *ConfigRequest; ///< <ConfigRequest> = <ConfigHdr> + <RequestElement>
|
|
UINTN ElementCount; ///< Number of <RequestElement> in the <ConfigRequest>
|
|
UINTN SpareStrLen; ///< Spare length of ConfigRequest string buffer
|
|
} HII_FORMSET_STORAGE;
|
|
|
|
#define HII_STORAGE_SIGNATURE SIGNATURE_32 ('B', 'S', 'T', 'G')
|
|
#define HII_STORAGE_FROM_LINK(a) CR (a, HII_FORMSET_STORAGE, Link, HII_STORAGE_SIGNATURE)
|
|
|
|
///
|
|
/// Definition of EXPRESS_RESULT
|
|
///
|
|
typedef enum {
|
|
ExpressFalse = 0,
|
|
ExpressGrayOut,
|
|
ExpressSuppress,
|
|
ExpressDisable
|
|
} EXPRESS_RESULT;
|
|
|
|
///
|
|
/// Definition of EXPRESS_LEVEL
|
|
///
|
|
typedef enum {
|
|
ExpressNone = 0,
|
|
ExpressForm,
|
|
ExpressStatement,
|
|
ExpressOption
|
|
} EXPRESS_LEVEL;
|
|
|
|
///
|
|
/// Definition of HII_EXPRESSION_OPCODE_EXTRA
|
|
///
|
|
typedef union {
|
|
EFI_HII_VALUE Value; ///< EFI_IFR_UINT64, EFI_IFR_UINT32, EFI_IFR_UINT16, EFI_IFR_UINT8, EFI_IFR_STRING_REF1
|
|
UINT8 Format; ///< For EFI_IFR_TO_STRING, EFI_IFR_FIND
|
|
UINT8 Flags; ///< For EFI_IFR_SPAN
|
|
UINT8 RuleId; ///< For EFI_IFR_RULE_REF
|
|
EFI_GUID Guid; ///< For EFI_IFR_SECURITY, EFI_IFR_MATCH2
|
|
|
|
struct {
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_HII_VALUE Value;
|
|
} EqIdValData;
|
|
|
|
struct {
|
|
EFI_QUESTION_ID QuestionId1;
|
|
EFI_QUESTION_ID QuestionId2;
|
|
} EqIdIdData;
|
|
|
|
struct {
|
|
EFI_QUESTION_ID QuestionId; ///< For EFI_IFR_EQ_ID_VAL_LIST
|
|
UINT16 ListLength;
|
|
UINT16 *ValueList;
|
|
} EqIdListData;
|
|
|
|
struct {
|
|
EFI_QUESTION_ID QuestionId;
|
|
} QuestionRef1Data;
|
|
|
|
struct {
|
|
EFI_STRING_ID DevicePath; ///< For EFI_IFR_QUESTION_REF3_3
|
|
EFI_GUID Guid;
|
|
} QuestionRef3Data;
|
|
|
|
struct {
|
|
HII_FORMSET_STORAGE *VarStorage;
|
|
HII_VAR_STORE_INFO VarStoreInfo;
|
|
UINT8 ValueType;
|
|
UINT8 ValueWidth;
|
|
CHAR16 *ValueName;
|
|
} GetSetData;
|
|
} HII_EXPRESSION_OPCODE_EXTRA;
|
|
|
|
typedef union _HII_DEPENDENCY_EXPRESSION HII_DEPENDENCY_EXPRESSION;
|
|
|
|
///
|
|
/// Definition of HII_EXPRESSION_CONSTANT
|
|
///
|
|
/// Operand:
|
|
///
|
|
/// EFI_IFR_TRUE
|
|
/// EFI_IFR_FALSE
|
|
/// EFI_IFR_ONE
|
|
/// EFI_IFR_ONES
|
|
/// EFI_IFR_ZERO
|
|
/// EFI_IFR_UNDEFINED
|
|
/// EFI_IFR_VERSION
|
|
/// EFI_IFR_UINT8
|
|
/// EFI_IFR_UINT16
|
|
/// EFI_IFR_UINT32
|
|
/// EFI_IFR_UINT64
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_HII_VALUE Value;
|
|
} HII_EXPRESSION_CONSTANT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_DUP
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
} HII_DEPENDENCY_DUP;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_EQ_ID_VAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_QUESTION_ID QuestionId;
|
|
EFI_HII_VALUE Value;
|
|
} HII_DEPENDENCY_EQ_ID_VAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_EQ_ID_VAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_QUESTION_ID QuestionId1;
|
|
EFI_QUESTION_ID QuestionId2;
|
|
} HII_DEPENDENCY_EQ_ID_ID;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_EQ_ID_VAL_LIST
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_QUESTION_ID QuestionId;
|
|
UINT16 ListLength;
|
|
UINT16 *ValueList;
|
|
} HII_DEPENDENCY_EQ_ID_VAL_LIST;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_QUESTION_REF1
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_QUESTION_ID QuestionId;
|
|
} HII_DEPENDENCY_QUESTION_REF1;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_RULE_REF
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
UINT8 RuleId;
|
|
} HII_DEPENDENCY_RULE_REF;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_STRING_REF1
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_HII_VALUE Value;
|
|
} HII_DEPENDENCY_STRING_REF1;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_THIS
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_QUESTION_ID QuestionId;
|
|
} HII_DEPENDENCY_THIS;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SECURITY
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_GUID Permissions;
|
|
} HII_DEPENDENCY_SECURITY;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_GET
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_FORMSET_STORAGE *VarStorage;
|
|
HII_VAR_STORE_INFO VarStoreInfo;
|
|
UINT8 ValueType;
|
|
UINT8 ValueWidth;
|
|
CHAR16 *ValueName;
|
|
} HII_DEPENDENCY_GET;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_LENGTH
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_LENGTH;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_BITWISE_NOT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_BITWISE_NOT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_STRING_REF2
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_STRING_REF2;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_QUESTION_REF2
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_QUESTION_REF2;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_QUESTION_REF3
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_STRING_ID DevicePath;
|
|
EFI_GUID Guid;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_QUESTION_REF3;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TO_BOOLEAN
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_TO_BOOLEAN;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TO_STRING
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
UINT8 Format;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_TO_STRING;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TO_UINT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_TO_UINT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TO_UPPER
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_TO_UPPER;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TO_LOWER
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_TO_LOWER;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SET
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_FORMSET_STORAGE *VarStorage;
|
|
HII_VAR_STORE_INFO VarStoreInfo;
|
|
UINT8 ValueType;
|
|
UINT8 ValueWidth;
|
|
CHAR16 *ValueName;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_SET;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_NOT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression;
|
|
} HII_DEPENDENCY_NOT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_CATENATE
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *LeftStringExp;
|
|
HII_DEPENDENCY_EXPRESSION *RightStringExp;
|
|
} HII_DEPENDENCY_CATENATE;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MATCH
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *StringExp;
|
|
HII_DEPENDENCY_EXPRESSION *PatternExp;
|
|
} HII_DEPENDENCY_MATCH;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MATCH2
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
EFI_GUID SyntaxType;
|
|
HII_DEPENDENCY_EXPRESSION *StringExp;
|
|
HII_DEPENDENCY_EXPRESSION *PatternExp;
|
|
} HII_DEPENDENCY_MATCH2;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MULT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_MULT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_DIV
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp; ///< left value
|
|
} HII_DEPENDENCY_DIV;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MOD
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp; ///< left value
|
|
} HII_DEPENDENCY_MOD;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_ADD
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp; ///< left value
|
|
} HII_DEPENDENCY_ADD;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SUBTRACT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp; ///< left value
|
|
} HII_DEPENDENCY_SUBTRACT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SHIFT_LEFT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_SHIFT_LEFT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SHIFT_RIGHT
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_SHIFT_RIGHT;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_GREATER_THAN
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_GREATER_THAN;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_GREATER_EQUAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_GREATER_EQUAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_LESS_THAN
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_LESS_THAN;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_LESS_EQUAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *RightHandExp;
|
|
HII_DEPENDENCY_EXPRESSION *LeftHandExp;
|
|
} HII_DEPENDENCY_LESS_EQUAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_EQUAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_EQUAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_NOT_EQUAL
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_NOT_EQUAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_BITWISE_AND
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_BITWISE_AND;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_BITWISE_OR
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_BITWISE_OR;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_AND
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_AND;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_OR
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression1;
|
|
HII_DEPENDENCY_EXPRESSION *SubExpression2;
|
|
} HII_DEPENDENCY_OR;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_CONDITIONAL
|
|
///
|
|
/// Ternary expression
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *CondTrueValExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *CondFalseValExp; ///< middle value
|
|
HII_DEPENDENCY_EXPRESSION *ConditionExp; ///< left value
|
|
} HII_DEPENDENCY_CONDITIONAL;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_FIND
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
UINT8 Format;
|
|
HII_DEPENDENCY_EXPRESSION *IndexExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *StringToCompWithExp; ///< middle value
|
|
HII_DEPENDENCY_EXPRESSION *StringToSearchExp; ///< left value
|
|
} HII_DEPENDENCY_FIND;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MID
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *LengthExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *IndexExp; ///< middle value
|
|
HII_DEPENDENCY_EXPRESSION *StringOrBufferExp; ///< left value
|
|
} HII_DEPENDENCY_MID;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_TOKEN
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *IndexExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *DelimiterExp; ///< middle value
|
|
HII_DEPENDENCY_EXPRESSION *StringToSearchExp; ///< left value
|
|
} HII_DEPENDENCY_TOKEN;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_SPAN
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
UINT8 Flags;
|
|
HII_DEPENDENCY_EXPRESSION *IndexExp; ///< right value
|
|
HII_DEPENDENCY_EXPRESSION *CharsetExp; ///< middle value
|
|
HII_DEPENDENCY_EXPRESSION *StringToSearchExp; ///< left value
|
|
} HII_DEPENDENCY_SPAN;
|
|
|
|
///
|
|
/// Map expression
|
|
///
|
|
typedef struct {
|
|
HII_DEPENDENCY_EXPRESSION *MatchExp;
|
|
HII_DEPENDENCY_EXPRESSION *ReturnExp;
|
|
} HII_DEPENDENCY_EXPRESSION_PAIR;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_MAP
|
|
///
|
|
typedef struct {
|
|
UINT8 Operand;
|
|
HII_DEPENDENCY_EXPRESSION *SubExp;
|
|
HII_DEPENDENCY_EXPRESSION_PAIR *ExpPair;
|
|
UINT8 ExpPairNo;
|
|
} HII_DEPENDENCY_MAP;
|
|
|
|
///
|
|
/// Definition of HII_DEPENDENCY_EXPRESSION
|
|
///
|
|
union _HII_DEPENDENCY_EXPRESSION {
|
|
///
|
|
/// Constant
|
|
///
|
|
HII_EXPRESSION_CONSTANT ConstantExp;
|
|
///
|
|
/// build-in expression
|
|
///
|
|
HII_DEPENDENCY_DUP DupExp;
|
|
HII_DEPENDENCY_EQ_ID_VAL EqIdValExp;
|
|
HII_DEPENDENCY_EQ_ID_ID EqIdIdExp;
|
|
HII_DEPENDENCY_EQ_ID_VAL_LIST EqIdListExp;
|
|
HII_DEPENDENCY_QUESTION_REF1 QuestionRef1Exp;
|
|
HII_DEPENDENCY_RULE_REF RuleRefExp;
|
|
HII_DEPENDENCY_STRING_REF1 StringRef1Exp;
|
|
HII_DEPENDENCY_THIS ThisExp;
|
|
HII_DEPENDENCY_SECURITY SecurityExp;
|
|
HII_DEPENDENCY_GET GetExp;
|
|
|
|
///
|
|
/// unary expression
|
|
///
|
|
HII_DEPENDENCY_LENGTH LengthExp;
|
|
HII_DEPENDENCY_BITWISE_NOT BitWiseNotExp;
|
|
HII_DEPENDENCY_STRING_REF2 StringRef2Exp;
|
|
HII_DEPENDENCY_QUESTION_REF2 QuestionRef2Exp;
|
|
HII_DEPENDENCY_QUESTION_REF3 QuestionRef3Exp;
|
|
HII_DEPENDENCY_TO_BOOLEAN ToBooleanExp;
|
|
HII_DEPENDENCY_TO_STRING ToStringExp;
|
|
HII_DEPENDENCY_TO_UINT ToUintExp;
|
|
HII_DEPENDENCY_TO_UPPER ToUpperExp;
|
|
HII_DEPENDENCY_TO_LOWER ToLowerExp;
|
|
HII_DEPENDENCY_SET SetExp;
|
|
HII_DEPENDENCY_NOT NotExp;
|
|
|
|
///
|
|
/// Binary expression
|
|
///
|
|
HII_DEPENDENCY_CATENATE CatenateExp;
|
|
HII_DEPENDENCY_MATCH MatchExp;
|
|
HII_DEPENDENCY_MATCH2 Match2Exp;
|
|
HII_DEPENDENCY_MULT MultExp;
|
|
HII_DEPENDENCY_DIV DivExp;
|
|
HII_DEPENDENCY_MOD ModExp;
|
|
HII_DEPENDENCY_ADD AddExp;
|
|
HII_DEPENDENCY_SUBTRACT SubtractExp;
|
|
HII_DEPENDENCY_SHIFT_LEFT ShiftLeftExp;
|
|
HII_DEPENDENCY_SHIFT_RIGHT ShiftRightExp;
|
|
HII_DEPENDENCY_GREATER_THAN GreaterThanExp;
|
|
HII_DEPENDENCY_GREATER_EQUAL GreaterEqualExp;
|
|
HII_DEPENDENCY_LESS_THAN LessThanExp;
|
|
HII_DEPENDENCY_LESS_EQUAL LessEqualExp;
|
|
HII_DEPENDENCY_EQUAL EqualExp;
|
|
HII_DEPENDENCY_NOT_EQUAL NotEqualExp;
|
|
HII_DEPENDENCY_BITWISE_AND BitwiseAndExp;
|
|
HII_DEPENDENCY_BITWISE_OR BitwiseOrExp;
|
|
HII_DEPENDENCY_AND AndExp;
|
|
HII_DEPENDENCY_OR OrExp;
|
|
|
|
///
|
|
/// ternary expression
|
|
///
|
|
HII_DEPENDENCY_CONDITIONAL ConditionalExp;
|
|
HII_DEPENDENCY_FIND FindExp;
|
|
HII_DEPENDENCY_MID MidExp;
|
|
HII_DEPENDENCY_TOKEN TokenExp;
|
|
HII_DEPENDENCY_SPAN SpanExp;
|
|
HII_DEPENDENCY_MAP MapExp;
|
|
};
|
|
|
|
///
|
|
/// Definition of HII_EXPRESSION_OPCODE
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
UINT8 Operand;
|
|
HII_EXPRESSION_OPCODE_EXTRA ExtraData;
|
|
LIST_ENTRY MapExpressionList; ///< nested expressions inside of Map opcode.
|
|
} HII_EXPRESSION_OPCODE;
|
|
|
|
#define HII_EXPRESSION_OPCODE_SIGNATURE SIGNATURE_32 ('E', 'X', 'O', 'P')
|
|
#define HII_EXPRESSION_OPCODE_FROM_LINK(a) CR (a, HII_EXPRESSION_OPCODE, Link, HII_EXPRESSION_OPCODE_SIGNATURE)
|
|
|
|
///
|
|
/// Definition of HII_WARNING_IF_DATA
|
|
///
|
|
typedef struct {
|
|
EFI_STRING_ID WarningIfError;
|
|
UINT8 TimeOut;
|
|
} HII_WARNING_IF_DATA;
|
|
|
|
///
|
|
/// Definition of HII_EXTRA_DATA
|
|
///
|
|
typedef union {
|
|
UINT8 RuleId; ///< For EFI_IFR_RULE only
|
|
EFI_STRING_ID Error; ///< For EFI_IFR_NO_SUBMIT_IF, EFI_IFR_INCONSISTENT_IF only
|
|
HII_WARNING_IF_DATA WarningIfData;
|
|
} HII_EXTRA_DATA;
|
|
|
|
///
|
|
/// Definition of HII_EXPRESSION
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
UINT8 Type; ///< Type for this expression
|
|
EFI_IFR_OP_HEADER *OpCode; ///< Save the opcode buffer.
|
|
LIST_ENTRY OpCodeListHead; ///< OpCodes consist of this expression (HII_EXPRESSION_OPCODE)
|
|
HII_DEPENDENCY_EXPRESSION *RootDependencyExp; ///< Expression OpCodes tree layout to describe dependency of this expression.
|
|
HII_EXTRA_DATA ExtraData;
|
|
EFI_HII_VALUE Result; ///< Expression evaluation result
|
|
} HII_EXPRESSION;
|
|
|
|
#define HII_EXPRESSION_SIGNATURE SIGNATURE_32 ('F', 'E', 'X', 'P')
|
|
#define HII_EXPRESSION_FROM_LINK(a) CR (a, HII_EXPRESSION, Link, HII_EXPRESSION_SIGNATURE)
|
|
|
|
///
|
|
/// Definition of HII_EXPRESSION_LIST
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
UINTN Count;
|
|
HII_EXPRESSION *Expression[1]; ///< Array[Count] of expressions
|
|
} HII_EXPRESSION_LIST;
|
|
|
|
#define HII_EXPRESSION_LIST_SIGNATURE SIGNATURE_32 ('F', 'E', 'X', 'R')
|
|
|
|
///
|
|
/// Definition of HII_STATEMENT_VALUE
|
|
///
|
|
typedef struct {
|
|
///
|
|
/// HII Data Type
|
|
///
|
|
UINT8 Type;
|
|
EFI_IFR_TYPE_VALUE Value;
|
|
///
|
|
/// Buffer Data and Length if Type is EFI_IFR_TYPE_BUFFER or EFI_IFR_TYPE_STRING
|
|
///
|
|
UINT8 *Buffer;
|
|
UINT16 BufferLen;
|
|
UINT8 BufferValueType; ///< Data type for buffer internal data, currently only for orderedlist
|
|
} HII_STATEMENT_VALUE;
|
|
|
|
///
|
|
/// Default value
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
UINT16 DefaultId;
|
|
HII_STATEMENT_VALUE Value; ///< Default value
|
|
|
|
HII_EXPRESSION *ValueExpression; ///< Not-NULL indicates default value is provided by EFI_IFR_VALUE
|
|
} HII_QUESTION_DEFAULT;
|
|
|
|
#define HII_QUESTION_DEFAULT_SIGNATURE SIGNATURE_32 ('Q', 'D', 'F', 'T')
|
|
#define HII_QUESTION_DEFAULT_FROM_LINK(a) CR (a, HII_QUESTION_DEFAULT, Link, HII_QUESTION_DEFAULT_SIGNATURE)
|
|
|
|
#define HII_QUESTION_OPTION_SIGNATURE SIGNATURE_32 ('Q', 'O', 'P', 'T')
|
|
|
|
///
|
|
/// Option value
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
EFI_IFR_ONE_OF_OPTION *OpCode; ///< OneOfOption Data
|
|
|
|
EFI_STRING_ID Text;
|
|
UINT8 Flags;
|
|
HII_STATEMENT_VALUE Value;
|
|
EFI_IMAGE_ID ImageId;
|
|
|
|
HII_EXPRESSION_LIST *SuppressExpression; ///< Non-NULL indicates nested inside of SuppressIf
|
|
} HII_QUESTION_OPTION;
|
|
|
|
#define HII_QUESTION_OPTION_FROM_LINK(a) CR (a, HII_QUESTION_OPTION, Link, HII_QUESTION_OPTION_SIGNATURE)
|
|
|
|
///
|
|
/// class of default
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
UINT16 DefaultId;
|
|
EFI_STRING_ID DefaultName;
|
|
} HII_FORMSET_DEFAULTSTORE;
|
|
|
|
#define HII_FORMSET_DEFAULTSTORE_SIGNATURE SIGNATURE_32 ('F', 'D', 'F', 'S')
|
|
#define HII_FORMSET_DEFAULTSTORE_FROM_LINK(a) CR (a, HII_FORMSET_DEFAULTSTORE, Link, HII_FORMSET_DEFAULTSTORE_SIGNATURE)
|
|
|
|
///
|
|
/// Definition of HII_STATEMENT_EXTRA
|
|
///
|
|
typedef union {
|
|
UINT8 Flags;
|
|
EFI_STRING_ID TextTwo;
|
|
EFI_DEFAULT_ID DefaultId;
|
|
EFI_STRING_ID QuestionConfig;
|
|
EFI_GUID Guid;
|
|
|
|
struct {
|
|
UINT8 Flags;
|
|
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_GUID Guid;
|
|
} NumData;
|
|
|
|
struct {
|
|
UINT8 Flags;
|
|
UINT8 MaxContainers; ///< for EFI_IFR_ORDERED_LIST
|
|
} OrderListData;
|
|
|
|
struct {
|
|
UINT8 Flags;
|
|
UINT8 MinSize;
|
|
UINT8 MaxSize;
|
|
} StrData;
|
|
|
|
struct {
|
|
UINT16 MinSize;
|
|
UINT16 MaxSize;
|
|
} PwdData;
|
|
} HII_STATEMENT_EXTRA;
|
|
|
|
///
|
|
/// Statement (Question)
|
|
///
|
|
typedef struct _HII_STATEMENT HII_STATEMENT;
|
|
struct _HII_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;
|
|
|
|
///
|
|
/// Question Header
|
|
///
|
|
EFI_QUESTION_ID QuestionId; ///< Question id, the value of zero is reserved
|
|
EFI_VARSTORE_ID VarStoreId; ///< VarStore id, a value of zero indicates no variable storage
|
|
HII_VAR_STORE_INFO VarStoreInfo; ///< VarStoreInfoIf VarStoreId refers to Buffer Storage (EFI_IFR_VARSTORE or EFI_IFR_VARSTORE_EFI), then VarStoreInfo contains a 16-bit Buffer Storage offset (VarOffset).
|
|
///< If VarStoreId refers to Name/Value Storage (EFI_IFR_VARSTORE_NAME_VALUE), then VarStoreInfo contains the String ID of the name (VarName) for this name/value pair.
|
|
UINT8 QuestionFlags; ///< The flag of this Question.(Readonly, reset required, callback attribute....)
|
|
|
|
BOOLEAN QuestionReferToBitField; ///< Whether the question is stored in a bit field.
|
|
UINT16 StorageWidth; ///< The storage width of this Question.
|
|
UINT16 BitStorageWidth; ///< The Storage width of this Question in bit level.
|
|
UINT16 BitVarOffset; ///< The storage offset of this Question in bit level.
|
|
CHAR16 *VariableName; ///< Name/Value or EFI Variable name
|
|
CHAR16 *BlockName; ///< Buffer storage block name: "OFFSET=...WIDTH=..."
|
|
|
|
HII_FORMSET_STORAGE *Storage; ///< Point to the storage that store this question.
|
|
HII_STATEMENT_EXTRA ExtraData;
|
|
|
|
BOOLEAN Locked; ///< Whether this statement is locked.
|
|
|
|
HII_STATEMENT_VALUE Value;
|
|
|
|
///
|
|
/// Get from IFR parsing
|
|
///
|
|
|
|
HII_STATEMENT *ParentStatement; ///< Parent Statement of current statement.
|
|
HII_EXPRESSION_LIST *ExpressionList; ///< nesting inside of GrayedOutIf/DisableIf/SuppressIf
|
|
HII_EXPRESSION *ValueExpression; ///< nested EFI_IFR_VALUE, provide Question value and indicate Question is ReadOnly
|
|
|
|
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
|
|
|
|
LIST_ENTRY DefaultListHead; ///< nested EFI_IFR_DEFAULT list (HII_QUESTION_DEFAULT), provide default values
|
|
LIST_ENTRY OptionListHead; ///< nested EFI_IFR_ONE_OF_OPTION list (HII_QUESTION_OPTION)
|
|
LIST_ENTRY InconsistentListHead; ///< nested inconsistent expression list (HII_EXPRESSION)
|
|
LIST_ENTRY NoSubmitListHead; ///< nested nosubmit expression list (HII_EXPRESSION)
|
|
LIST_ENTRY WarningListHead; ///< nested warning expression list (HII_EXPRESSION)
|
|
|
|
HII_EXPRESSION *ReadExpression; ///< nested EFI_IFR_READ, provide this question value by read expression.
|
|
HII_EXPRESSION *WriteExpression; ///< nested EFI_IFR_WRITE, evaluate write expression after this question value is set.
|
|
};
|
|
|
|
#define HII_STATEMENT_SIGNATURE SIGNATURE_32 ('H', 'S', 'T', 'A')
|
|
#define HII_STATEMENT_FROM_LINK(a) CR (a, HII_STATEMENT, Link, HII_STATEMENT_SIGNATURE)
|
|
|
|
///
|
|
/// Form
|
|
///
|
|
#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; ///< The image id.
|
|
|
|
BOOLEAN ModalForm; ///< Whether this is a modal form.
|
|
BOOLEAN Locked; ///< Whether this form is locked.
|
|
EFI_GUID RefreshGuid; ///< Form refresh event guid.
|
|
|
|
LIST_ENTRY StatementListHead; ///< List of Statements and Questions (HII_STATEMENT)
|
|
LIST_ENTRY ConfigRequestHead; ///< List of configrequest for all storage.
|
|
LIST_ENTRY RuleListHead; ///< nested EFI_IFR_RULE list, pre-defined expressions attached to the form.
|
|
HII_EXPRESSION_LIST *SuppressExpression; ///< nesting inside of SuppressIf
|
|
} HII_FORM;
|
|
|
|
#define HII_FORM_SIGNATURE SIGNATURE_32 ('F', 'F', 'R', 'M')
|
|
#define HII_FORM_FROM_LINK(a) CR (a, HII_FORM, Link, HII_FORM_SIGNATURE)
|
|
|
|
///
|
|
/// FormSet
|
|
///
|
|
typedef struct {
|
|
UINTN Signature;
|
|
LIST_ENTRY Link;
|
|
|
|
EFI_HII_HANDLE HiiHandle; ///< Unique id for formset, HII Handle of this FormSet package.
|
|
EFI_HANDLE DriverHandle; ///< EFI_HANDLE which was registered with the package list in NewPackageList().
|
|
EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess; ///< ConfigAccess Protocol associated with this HiiPackageList
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
|
|
|
UINTN IfrBinaryLength; ///< Ifr binary data length of this formset.
|
|
UINT8 *IfrBinaryData; ///< Point to the Ifr binary data.
|
|
|
|
EFI_GUID Guid; ///< Formset Guid.
|
|
EFI_STRING_ID FormSetTitle; ///< String Id of Formset title.
|
|
EFI_STRING_ID Help; ///< String Id of Formset title.
|
|
|
|
UINT8 NumberOfClassGuid; ///< Class Guid name
|
|
EFI_GUID ClassGuid[3]; ///< Up to three ClassGuid
|
|
|
|
EFI_IMAGE_ID ImageId; ///< The image id.
|
|
|
|
LIST_ENTRY StatementListOSF; ///< Statement list out side of the form.
|
|
LIST_ENTRY StorageListHead; ///< Storage list (HII_FORMSET_STORAGE)
|
|
LIST_ENTRY DefaultStoreListHead; ///< DefaultStore list (HII_FORMSET_DEFAULTSTORE)
|
|
LIST_ENTRY FormListHead; ///< Form list (HII_FORM_BROWSER_FORM)
|
|
} HII_FORMSET;
|
|
|
|
#define HII_FORMSET_SIGNATURE SIGNATURE_32 ('H', 'I', 'F', 'S')
|
|
#define HII_FORMSET_FROM_LINK(a) CR (a, HII_FORMSET, Link, HII_FORMSET_SIGNATURE)
|
|
|
|
///
|
|
/// Get/set question value from/to.
|
|
///
|
|
typedef enum {
|
|
GetSetValueWithBuffer = 0, ///< Get/Set question value from/to buffer in the storage.
|
|
GetSetValueWithHiiDriver, ///< Get/Set question value from/to hii driver.
|
|
GetSetValueWithBoth, ///< Compare the editbuffer with buffer for this question, not use the question value.
|
|
GetSetValueWithMax ///< Invalid value.
|
|
} GET_SET_QUESTION_VALUE_WITH;
|
|
|
|
/**
|
|
Initialize the internal data structure of a FormSet.
|
|
|
|
@param[in] Handle PackageList Handle
|
|
@param[in,out] FormSetGuid On input, GUID or class GUID of a formset. If not
|
|
specified (NULL or zero GUID), take the first
|
|
FormSet with class GUID EFI_HII_PLATFORM_SETUP_FORMSET_GUID
|
|
found in package list.
|
|
On output, GUID of the formset found(if not NULL).
|
|
@param[out] FormSet FormSet data structure.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_NOT_FOUND The specified FormSet could not be found.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
CreateFormSetFromHiiHandle (
|
|
IN EFI_HII_HANDLE Handle,
|
|
IN OUT EFI_GUID *FormSetGuid,
|
|
OUT HII_FORMSET *FormSet
|
|
);
|
|
|
|
/**
|
|
Initialize a Formset and get current setting for Questions.
|
|
|
|
@param[in,out] FormSet FormSet data structure.
|
|
|
|
**/
|
|
VOID
|
|
InitializeFormSet (
|
|
IN OUT HII_FORMSET *FormSet
|
|
);
|
|
|
|
/**
|
|
Free resources allocated for a FormSet.
|
|
|
|
@param[in,out] FormSet Pointer of the FormSet
|
|
|
|
**/
|
|
VOID
|
|
DestroyFormSet (
|
|
IN OUT HII_FORMSET *FormSet
|
|
);
|
|
|
|
/**
|
|
Save Question Value to the memory, but not to storage.
|
|
|
|
@param[in] FormSet FormSet data structure.
|
|
@param[in] Form Form data structure.
|
|
@param[in,out] Question Pointer to the Question.
|
|
@param[in] QuestionValue New Question Value to be set.
|
|
|
|
@retval EFI_SUCCESS The question value has been set successfully.
|
|
@retval EFI_INVALID_PARAMETER One or more parameters are invalid.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
SetQuestionValue (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form,
|
|
IN OUT HII_STATEMENT *Question,
|
|
IN HII_STATEMENT_VALUE *QuestionValue
|
|
);
|
|
|
|
/**
|
|
Get Question's current Value from storage.
|
|
|
|
@param[in] FormSet FormSet data structure.
|
|
@param[in] Form Form data structure.
|
|
@param[in,out] Question Question to be initialized.
|
|
|
|
@return the current Question Value in storage if success.
|
|
@return NULL if Question is not found or any error occurs.
|
|
|
|
**/
|
|
HII_STATEMENT_VALUE *
|
|
RetrieveQuestion (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form,
|
|
IN OUT HII_STATEMENT *Question
|
|
);
|
|
|
|
/**
|
|
Get Question's current Value.
|
|
|
|
@param[in] FormSet FormSet data structure.
|
|
@param[in] Form Form data structure.
|
|
@param[out] Question Question to be initialized.
|
|
@param[in] GetValueFrom Where to get value, may from editbuffer, buffer or hii driver.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval EFI_INVALID_PARAMETER Formset, Form or Question is NULL.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
GetQuestionValue (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form,
|
|
IN OUT HII_STATEMENT *Question,
|
|
IN GET_SET_QUESTION_VALUE_WITH GetValueFrom
|
|
);
|
|
|
|
/**
|
|
Submit data for a form.
|
|
|
|
@param[in] FormSet FormSet which contains the Form.
|
|
@param[in] Form Form to submit.
|
|
|
|
@retval EFI_SUCCESS The function completed successfully.
|
|
@retval Others Other errors occur.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
SubmitForm (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form
|
|
);
|
|
|
|
/**
|
|
Evaluate the result of a HII expression.
|
|
|
|
If Expression is NULL, then ASSERT.
|
|
|
|
@param[in] FormSet FormSet associated with this expression.
|
|
@param[in] Form Form associated with this expression.
|
|
@param[in,out] Expression Expression to be evaluated.
|
|
|
|
@retval EFI_SUCCESS The expression evaluated successfully
|
|
@retval EFI_NOT_FOUND The Question which referenced by a QuestionId
|
|
could not be found.
|
|
@retval EFI_OUT_OF_RESOURCES There is not enough system memory to grow the
|
|
stack.
|
|
@retval EFI_ACCESS_DENIED The pop operation underflowed the stack
|
|
@retval EFI_INVALID_PARAMETER Syntax error with the Expression
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EvaluateHiiExpression (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form,
|
|
IN OUT HII_EXPRESSION *Expression
|
|
);
|
|
|
|
/**
|
|
Retrieve dependencies within an expression. These dependencies can express how
|
|
this expression will be evaluated.
|
|
|
|
@param[in] Expression Expression to retrieve dependencies.
|
|
|
|
@retval EFI_SUCCESS The dependencies were successfully retrieved.
|
|
@retval EFI_OUT_OF_RESOURCES There is not enough system memory.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
GetHiiExpressionDependency (
|
|
IN HII_EXPRESSION *Expression
|
|
);
|
|
|
|
/**
|
|
Get default value of question.
|
|
|
|
@param[in] FormSet The form set.
|
|
@param[in] Form The form.
|
|
@param[in] Question The question.
|
|
@param[in] DefaultId The Class of the default.
|
|
@param[out] DefaultValue The default value of given question.
|
|
|
|
@retval EFI_SUCCESS Question is reset to default value.
|
|
|
|
**/
|
|
EFI_STATUS
|
|
GetQuestionDefault (
|
|
IN HII_FORMSET *FormSet,
|
|
IN HII_FORM *Form,
|
|
IN HII_STATEMENT *Question,
|
|
IN UINT16 DefaultId,
|
|
OUT HII_STATEMENT_VALUE *DefaultValue
|
|
);
|
|
|
|
/**
|
|
Return the result of the expression list. Check the expression list and
|
|
return the highest priority express result.
|
|
Priority: DisableIf > SuppressIf > GrayOutIf > FALSE
|
|
|
|
@param[in] ExpList The input expression list.
|
|
@param[in] Evaluate Whether need to evaluate the expression first.
|
|
@param[in] FormSet FormSet associated with this expression.
|
|
@param[in] Form Form associated with this expression.
|
|
|
|
@retval EXPRESS_RESULT Return the higher priority express result.
|
|
DisableIf > SuppressIf > GrayOutIf > FALSE
|
|
|
|
**/
|
|
EXPRESS_RESULT
|
|
EvaluateExpressionList (
|
|
IN HII_EXPRESSION_LIST *ExpList,
|
|
IN BOOLEAN Evaluate,
|
|
IN HII_FORMSET *FormSet OPTIONAL,
|
|
IN HII_FORM *Form OPTIONAL
|
|
);
|
|
|
|
#endif // HII_UTILITY_LIB_
|