1170 lines
52 KiB
C
1170 lines
52 KiB
C
/** @file
|
|
H2O Form Browser Protocol Header
|
|
|
|
;******************************************************************************
|
|
;* Copyright (c) 2013 - 2020, Insyde Software Corp. All Rights Reserved.
|
|
;*
|
|
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
|
|
;* transmit, broadcast, present, recite, release, license or otherwise exploit
|
|
;* any part of this publication in any form, by any means, without the prior
|
|
;* written permission of Insyde Software Corporation.
|
|
;*
|
|
;******************************************************************************
|
|
*/
|
|
|
|
#ifndef _H2O_FORM_BROWSER_PROTOCOL_H_
|
|
#define _H2O_FORM_BROWSER_PROTOCOL_H_
|
|
|
|
#include <Uefi/UefiInternalFormRepresentation.h>
|
|
#include <Protocol/HiiImage.h>
|
|
#include <Protocol/SimplePointer.h>
|
|
#include <Protocol/AbsolutePointer.h>
|
|
#include <Protocol/DisplayProtocol.h>
|
|
#include <Guid/InsydeModuleHii.h>
|
|
|
|
#define H2O_FORM_BROWSER_PROTOCOL_GUID \
|
|
{ \
|
|
0xe1c17f13, 0xba6b, 0x42e5, 0x98, 0x5a, 0xb4, 0x18, 0x7c, 0xa0, 0x1a, 0x3f \
|
|
}
|
|
|
|
typedef struct _H2O_FORM_BROWSER_PROTOCOL H2O_FORM_BROWSER_PROTOCOL;
|
|
typedef struct _H2O_FORM_BROWSER_O H2O_FORM_BROWSER_O;
|
|
typedef struct _H2O_FORM_BROWSER_P H2O_FORM_BROWSER_P;
|
|
|
|
typedef UINT32 H2O_PAGE_ID;
|
|
typedef UINT32 H2O_STATEMENT_ID;
|
|
|
|
typedef struct _H2O_VFR_PROPERTY {
|
|
EFI_GUID FormsetGuid;
|
|
H2O_FORM_ID FormId;
|
|
H2O_HOTKEY_ID HotkeyId;
|
|
H2O_STATEMENT_ID StatementId;
|
|
UINT64 OptionValue;
|
|
LIST_ENTRY *FormsetPropList;
|
|
LIST_ENTRY *FormPropList;
|
|
LIST_ENTRY *StatementPropList;
|
|
LIST_ENTRY *OptionPropList;
|
|
EFI_HII_HANDLE HiiHandle;
|
|
} H2O_VFR_PROPERTY;
|
|
|
|
//
|
|
// Animation related definitions
|
|
//
|
|
typedef struct _H2O_ANIMATION_CELL {
|
|
UINT16 OffsetX; ///< The X offset from the upper left hand corner of the logical window to position the indexed image.
|
|
UINT16 OffsetY; ///< The Y offset from the upper left hand corner of the logical window to position the indexed image.
|
|
EFI_IMAGE_INPUT *Image; ///< The image to display at the specified offset from the upper left hand corner of the logical window.
|
|
UINT16 Delay; ///< The number of milliseconds to delay. If value is zero, no delay.
|
|
} H2O_ANIMATION_CELL;
|
|
|
|
typedef struct _H2O_ANIMATION_INPUT {
|
|
UINT16 Width; ///< The overall width of the set of images (logical window width).
|
|
UINT16 Height; ///< The overall height of the set of images (logical window height).
|
|
UINT16 CellCount; ///< The number of EFI_HII_ANIMATION_CELL contained in the animation sequence.
|
|
// H2O_ANIMATION_CELL AnimationCell[];
|
|
} H2O_ANIMATION_INPUT;
|
|
|
|
//
|
|
// Hot Key Information
|
|
//
|
|
typedef enum {
|
|
HotKeyNoAction = 0,
|
|
HotKeyShowHelp,
|
|
HotKeySelectPreviousItem,
|
|
HotKeySelectNextItem,
|
|
HotKeySelectPreviousMenu,
|
|
HotKeySelectNextMenu,
|
|
HotKeyModifyPreviousValue,
|
|
HotKeyModifyNextValue,
|
|
HotKeyDiscard,
|
|
HotKeyDiscardAndExit,
|
|
HotKeyLoadDefault,
|
|
HotKeySave,
|
|
HotKeySaveAndExit,
|
|
HotKeyEnter,
|
|
HotKeyCallback,
|
|
HotKeyGoTo,
|
|
HotKeySetQuestionValue,
|
|
HotKeyMax
|
|
} HOT_KEY_ACTION;
|
|
|
|
#define H2O_BROWSER_ACTION_HOT_KEY_CALLBACK 0x8001
|
|
|
|
typedef UINT32 H2O_EVT_TYPE;
|
|
|
|
#define HOT_KEY_INFO_GROUP_ID_MAX 10
|
|
#define HOT_KEY_INFO_GROUP_ID_NONE 0
|
|
typedef struct {
|
|
H2O_HOTKEY_ID HotkeyId;
|
|
EFI_KEY_DATA KeyData; ///< Description key state, unicode and scancode
|
|
CHAR16 *Mark; ///< Mark specified string
|
|
CHAR16 *String; ///< Key string
|
|
HOT_KEY_ACTION HotKeyAction; ///< Hotkey action
|
|
UINT8 GroupId; ///< For hotkey group
|
|
EFI_IMAGE_INPUT *ImageBuffer;
|
|
BOOLEAN Display;
|
|
UINT16 HotKeyDefaultId;
|
|
EFI_GUID HotKeyTargetFormSetGuid;
|
|
UINT16 HotKeyTargetFormId;
|
|
UINT16 HotKeyTargetQuestionId;
|
|
EFI_HII_VALUE HotKeyHiiValue;
|
|
} HOT_KEY_INFO;
|
|
|
|
#define IS_END_OF_HOT_KEY_INFO(HotKeyInfo) ((BOOLEAN) (((HOT_KEY_INFO *) HotKeyInfo)->KeyData.Key.ScanCode == 0 && ((HOT_KEY_INFO *) HotKeyInfo)->KeyData.Key.UnicodeChar == 0))
|
|
|
|
|
|
//
|
|
// Statement related definitions
|
|
//
|
|
typedef struct _FORM_BROWSER_FORM FORM_BROWSER_FORM;
|
|
|
|
#define H2O_FORM_BROWSER_STATEMENT_SIGNATURE SIGNATURE_32 ('H', 'F', 'S', 'T')
|
|
typedef struct _H2O_FORM_BROWSER_S {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'S', 'T'
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_S)
|
|
H2O_PAGE_ID PageId; ///< The page ID of this Statement.
|
|
H2O_STATEMENT_ID StatementId; ///< The Statement ID of this Statement.
|
|
UINT8 Operand; ///< UINT8 to save corresponding IFR OP code.
|
|
EFI_IFR_OP_HEADER *IfrOpCode;
|
|
BOOLEAN Selectable; ///< If set, this Statement is selectable. Otherwise, it isn't selectable.
|
|
|
|
BOOLEAN GrayedOut;
|
|
BOOLEAN Locked;
|
|
BOOLEAN ReadOnly;
|
|
|
|
//
|
|
// Statement Header
|
|
//
|
|
CHAR16 *Prompt; ///< The prompt string for this particular Statement.
|
|
CHAR16 *Help; ///< The help string for this particular Statement.
|
|
CHAR16 *TextTwo; ///< The secondary string for this particular Statement.Only use if OpCode is EFI_IFR_TEXT.
|
|
//
|
|
// Question Header
|
|
//
|
|
EFI_QUESTION_ID QuestionId; ///< Specific Question ID for this statement. The value of zero is reserved.
|
|
EFI_VARSTORE_ID VarStoreId; ///< A value of zero indicates no variable storage.
|
|
///< can use this VarStoreId to get VarStoreInfo from GetVSinfo ().
|
|
CHAR16 *VariableName; ///< Name/Value or EFI Variable name.
|
|
UINT16 VariableOffset; ///< A 16-bit Buffer Storage offset (VarOffset).
|
|
UINT8 QuestionFlags; ///< A bit-mask that determines which unique settings are active for this question.
|
|
EFI_HII_VALUE HiiValue; ///< Edit copy for checkbox, numberic, oneof.
|
|
//
|
|
// OpCode specific members
|
|
//
|
|
UINT8 Flags; ///< Flag to save EFI_IFR_NUMERIC_SIZE and EFI_IFR_DISPLAY.
|
|
///< EFI_IFR_ORDERED_LIST, EFI_IFR_STRING,EFI_IFR_SUBTITLE,EFI_IFR_TIME, EFI_IFR_BANNER.
|
|
UINT8 ContainerCount; ///< for EFI_IFR_ORDERED_LIST.
|
|
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; ///< The the minimum increment between values for EFI_IFR_ONE_OF/EFI_IFR_NUMERIC.
|
|
EFI_DEFAULT_ID DefaultId; ///< For EFI_IFR_RESET_BUTTON to restore specific Default Store.
|
|
EFI_GUID RefreshGuid; ///< For EFI_IFR_REFRESH_ID. it can only use in questions.
|
|
UINT8 RefreshInterval; ///< For For EFI_IFR_REFRESH. Minimum number of seconds before the question value should be refreshed.
|
|
///< A value of zero indicates the question should not be refreshed automatically.
|
|
EFI_IMAGE_INPUT *Image; ///< The optional image that will displayed with this statement.
|
|
H2O_ANIMATION_INPUT *Animation; ///< The optional animation that will displayed with this statement.
|
|
|
|
UINTN NumberOfOptions; /// Number of options
|
|
H2O_FORM_BROWSER_O *Options; /// EFI_IFR_ONE_OF_OPTION list (H2O_FORM_BROWSER_O)
|
|
|
|
//
|
|
// Validation
|
|
//
|
|
BOOLEAN Inconsistent; ///< TRUE means validation process is failed.
|
|
CHAR16 *ErrorText; ///< Error string. Only use if Inconsistent is TRUE.
|
|
|
|
//
|
|
// Vfr Info
|
|
//
|
|
EFI_GUID FormsetGuid;
|
|
EFI_FORM_ID FormId;
|
|
} H2O_FORM_BROWSER_S;
|
|
|
|
//
|
|
// Bitmask that indicates the current attributes of the page
|
|
//
|
|
#define H2O_ATTRIB_P_SUPPRESSED BIT0
|
|
|
|
//
|
|
// Page related definitions
|
|
//
|
|
#define H2O_FORM_PAGE_SIGNATURE SIGNATURE_32 ('H', 'F', 'P', 'G')
|
|
struct _H2O_FORM_BROWSER_P {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'P', 'G'.
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_P).
|
|
H2O_PAGE_ID PageId; ///< Specific page ID.
|
|
CHAR16 *PageTitle; ///< Title text for the page.
|
|
EFI_IMAGE_INPUT *Image; ///< The optional image that will displayed with this page.
|
|
H2O_ANIMATION_INPUT *Animation; ///< The optional animation that will displayed with this page.
|
|
UINT32 NumberOfStatementIds; ///< Number of Statement Ids in this page.
|
|
H2O_STATEMENT_ID *StatementIds; ///< Array of Statement ID.
|
|
EFI_QUESTION_ID *QuestionIds; ///< Array of Question ID.
|
|
HOT_KEY_INFO *HotKeyInfo; ///< Hot key information.
|
|
H2O_FORM_BROWSER_P *ParentPage;
|
|
//
|
|
// Vfr Info
|
|
//
|
|
EFI_GUID FormsetGuid;
|
|
EFI_FORM_ID FormId;
|
|
UINT32 Attribs; ///< Current attributes of the page.
|
|
};
|
|
|
|
typedef struct _H2O_FORM_BROWSER_S H2O_FORM_BROWSER_Q;
|
|
|
|
#define H2O_FORM_BROWSER_QUESTION_DEFAULT_SIGNATURE SIGNATURE_32 ('H', 'F', 'Q', 'D')
|
|
typedef struct _H2O_FORM_BROWSER_QD {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'Q', 'D'
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_QD).
|
|
H2O_PAGE_ID PageId; ///< The page ID of this Question.
|
|
EFI_QUESTION_ID QuestionId; ///< Specific Question ID for this question.
|
|
EFI_DEFAULT_ID DefaultId; ///< Identifies the default store for this value.
|
|
EFI_HII_VALUE Value; ///< Default value
|
|
} H2O_FORM_BROWSER_QD;
|
|
|
|
#define H2O_FORM_BROWSER_OPTION_SIGNATURE SIGNATURE_32 ('H', 'F', 'O', 'P')
|
|
struct _H2O_FORM_BROWSER_O {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'O', 'P'
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_O).
|
|
CHAR16 *Text; ///< The text description for the option.
|
|
EFI_IMAGE_INPUT *Image; ///< The optional image that will displayed with this Option.
|
|
H2O_ANIMATION_INPUT *Animation; ///< The optional animation that will displayed with this Option.
|
|
EFI_HII_VALUE HiiValue; ///< The value for the option.
|
|
BOOLEAN Default; ///< If set, this is the option selected when the user asks for the defaults.
|
|
BOOLEAN ManufactureDefault; ///< If set, this is the option selected when manufacturing defaults are set.
|
|
BOOLEAN Visibility; ///< If set, this option is visible. Otherwise, it will not displayed.
|
|
};
|
|
|
|
//
|
|
// Variable storage related definitions
|
|
//
|
|
#define H2O_HII_VARSTORE_BUFFER 0 ///< mapping to EFI_IFR_VARSTORE_OP
|
|
#define H2O_HII_VARSTORE_NAME_VALUE 1 ///< mapping to EFI_IFR_VARSTORE_NAME_VALUE_OP
|
|
#define H2O_HII_VARSTORE_EFI_VARIABLE 2 ///< mapping to EFI_IFR_VARSTORE_EFI_OP
|
|
#define H2O_HII_VARSTORE_EFI_VARIABLE_BUFFER 3 ///< mapping to EFI_IFR_VARSTORE_EFI_OP
|
|
|
|
#define H2O_NAME_VALUE_NODE_SIGNATURE SIGNATURE_32 ('H', 'N', 'V', 'N')
|
|
typedef struct {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'N', 'V', 'N'
|
|
UINT32 Size; ///< The size should be initialize to sizeof (H2O_NAME_VALUE_NODE).
|
|
CHAR16 *Name; ///< Storage name for Name/Value node.
|
|
CHAR16 *Value; ///< Value for Name/Value node.
|
|
CHAR16 *EditValue; ///< Edit copy for Name/Value node.
|
|
} H2O_NAME_VALUE_NODE;
|
|
|
|
|
|
#define H2O_FORMSET_BROWSER_VARIABLE_STORE_SIGNATURE SIGNATURE_32 ('H', 'F', 'V', 'S')
|
|
typedef struct _H2O_FORM_BROWSER_VS {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'V', 'S'.
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_VS).
|
|
H2O_PAGE_ID PageId; ///< Specific page ID for this Variable Storage.
|
|
UINT8 Type; ///< Storage type.
|
|
EFI_VARSTORE_ID VarStoreId; ///< Specific variable store ID for this Variable Storage.
|
|
EFI_GUID Guid; ///< GUID for Buffer, Name/Value or EFI variable storage.
|
|
CHAR16 *Name; ///< Storage name for Buffer or EFI variable storage.
|
|
UINT16 StorageSize; ///< The size of the variable store.
|
|
UINT8 *Buffer; ///< Buffer Storage.
|
|
UINT8 *EditBuffer; ///< Edit copy for Buffer Storage.
|
|
UINT32 NumberOfNameValue; ///< Number of Name/Value nodes.
|
|
H2O_NAME_VALUE_NODE *NameValue; ///< Point to Name/Value array.
|
|
UINT32 Attributes; ///< For EFI_IFR_VARSTORE_EFI: EFI Variable attribute.
|
|
CHAR16 *ConfigHdr; ///< <ConfigHdr>.
|
|
CHAR16 *ConfigRequest; ///< <ConfigRequest> = <ConfigHdr> + <RequestElement>.
|
|
UINT32 ElementCount; ///< Number of <RequestElement> in the <ConfigRequest>.
|
|
UINT32 SpareStrLen; ///< Spare length of ConfigRequest string buffer.
|
|
} H2O_FORM_BROWSER_VS;
|
|
|
|
//
|
|
// Default storage related definitions
|
|
//
|
|
#define H2O_FORMSET_BROWSER_DEFAULT_STORE_SIGNATURE SIGNATURE_32 ('H', 'F', 'D', 'S')
|
|
typedef struct _H2O_FORM_BROWSER_DS {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'H', 'F', 'D', 'S'
|
|
UINT32 Size; ///< The size should be initialized to sizeof (H2O_FORM_BROWSER_DS).
|
|
H2O_PAGE_ID PageId; ///< Specific page ID for this Variable Storage.
|
|
EFI_DEFAULT_ID DefaultId; ///< Identifies the default store for this value.
|
|
UINT32 NumberOfQD; ///< Number of H2O_FORM_BROWSER_QD instances.
|
|
H2O_FORM_BROWSER_QD *QuestionDefault; ///< Pointer to Question Default array.
|
|
} H2O_FORM_BROWSER_DS;
|
|
|
|
//
|
|
// Console device related definitions
|
|
//
|
|
typedef INT32 H2O_CONSOLE_ID;
|
|
typedef UINT32 H2O_CONSOLE_DEVICE_TYPE;
|
|
typedef struct _H2O_FORM_BROWSER_CONSOLE_DEV {
|
|
UINT32 Size; ///< The size should be initialize to sizeof (H2O_FORM_BROWSER_CONSOLE_DEV).
|
|
CONST CHAR8 *Name; ///< Pointer to the console device name.
|
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath; ///< Console device device path.
|
|
EFI_HANDLE Handle; ///< Console device handle.
|
|
H2O_CONSOLE_DEVICE_TYPE DeviceType; ///< Console device type.
|
|
H2O_CONSOLE_ID ConsoleId; ///< Console device id.
|
|
EFI_GUID DisplayEngine; ///< Belong a specified display engine.
|
|
} H2O_FORM_BROWSER_CONSOLE_DEV;
|
|
|
|
//
|
|
// DeviceType related definitions
|
|
//
|
|
#define H2O_FORM_BROWSER_CONSOLE_STI 0x00000001
|
|
#define H2O_FORM_BROWSER_CONSOLE_STI2 0x00000002
|
|
#define H2O_FORM_BROWSER_CONSOLE_SP 0x00000004
|
|
#define H2O_FORM_BROWSER_CONSOLE_AP 0x00000008
|
|
#define H2O_FORM_BROWSER_CONSOLE_STO 0x00000010
|
|
#define H2O_FORM_BROWSER_CONSOLE_GO 0x00000020
|
|
#define H2O_FORM_BROWSER_CONSOLE_SYSTEM 0x00000000
|
|
#define H2O_FORM_BROWSER_CONSOLE_NOT_ASSIGNED 0xFFFFFFFF
|
|
|
|
//
|
|
// Setup Menu related definitions
|
|
//
|
|
typedef struct _SETUP_MENU_INFO {
|
|
H2O_PAGE_ID PageId;
|
|
CHAR16 *PageTitle;
|
|
EFI_IMAGE_INPUT *PageImage;
|
|
} SETUP_MENU_INFO;
|
|
|
|
#define H2O_FORMSET_BROWSER_SETUP_MENU_SIGNATURE SIGNATURE_32 ('F', 'B', 'S', 'M')
|
|
typedef struct _H2O_FORM_BROWSER_SM {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'F', 'B', 'S', 'M'.
|
|
EFI_GUID FormSetGuid;
|
|
CHAR16 *TitleString;
|
|
CHAR16 *CoreVersionString; ///< The CoreVersionString should be initialized to "Rev. 5.0".
|
|
UINT32 NumberOfSetupMenus; ///< Number of setup menu.
|
|
SETUP_MENU_INFO *SetupMenuInfoList; ///< Setup menu information.
|
|
} H2O_FORM_BROWSER_SM;
|
|
|
|
//
|
|
// Dialog related definitions
|
|
//
|
|
#define H2O_FORMSET_BROWSER_DIALOG_SIGNATURE SIGNATURE_32 ('F', 'B', 'D', 'G')
|
|
typedef struct {
|
|
UINT32 Signature; ///< Particular statement signature. This signature must be 'F', 'B', 'D', 'G'.
|
|
UINT32 DialogType; ///< Dialog type.
|
|
UINT32 Attribute; ///< Dialog color setting.
|
|
CHAR16 *TitleString; ///< Dialog title string.
|
|
UINT32 BodyStringCount; ///< The count of body.
|
|
UINT32 BodyInputCount; ///< The count of body which allow user to input.
|
|
UINT32 ButtonCount; ///< Number of buttons.
|
|
CHAR16 **BodyStringArray; ///< Array of body string.
|
|
CHAR16 **BodyInputStringArray; ///< Array of body input string.
|
|
CHAR16 **ButtonStringArray; ///< Array of button string.
|
|
EFI_HII_VALUE *BodyHiiValueArray; ///< Array of body HII value.
|
|
EFI_HII_VALUE *ButtonHiiValueArray; ///< Array of button HII value.
|
|
EFI_HII_VALUE ConfirmHiiValue; ///< Dialog select HII value
|
|
H2O_FORM_BROWSER_Q *H2OStatement;
|
|
} H2O_FORM_BROWSER_D;
|
|
|
|
//
|
|
// Dialog Type
|
|
//
|
|
#define H2O_FORM_BROWSER_D_TYPE_MSG 0x00000001
|
|
#define H2O_FORM_BROWSER_D_TYPE_CONFIRM 0x00000002
|
|
#define H2O_FORM_BROWSER_D_TYPE_SELECTION 0x00000004
|
|
#define H2O_FORM_BROWSER_D_TYPE_SELECTION_CANCEL 0x00000008
|
|
#define H2O_FORM_BROWSER_D_TYPE_BODY_HORIZONTAL 0x00000010 // 0:vertical,1:horizontal
|
|
#define H2O_FORM_BROWSER_D_TYPE_BODY_SELECTABLE 0x00000020 // 0:label,1:selectable
|
|
#define H2O_FORM_BROWSER_D_TYPE_BODY_INPUT_INTERLACE_VERTICAL 0x00000040 // 0:input box is interlace horziontally near by body
|
|
// 1:input box is interlace vertically near by body
|
|
#define H2O_FORM_BROWSER_D_TYPE_BODY_INPUT_BOX_MULTI_LINE 0x00000080 // 0:single line,1:multi line
|
|
#define H2O_FORM_BROWSER_D_TYPE_BODY_align 0x00000300 // bit8~9: 00: align left
|
|
// 01: align centered
|
|
// 10: align right
|
|
// 11: align full
|
|
#define H2O_FORM_BROWSER_D_TYPE_SHOW_HELP 0x00001000 // Specific dialog
|
|
#define H2O_FORM_BROWSER_D_TYPE_SHOW_CONFIRM_PAGE 0x00002000 // Specific dialog: For FBConfirmPage()
|
|
#define H2O_FORM_BROWSER_D_TYPE_FROM_H2O_DIALOG 0x00004000 // Specific dialog: The dialog is created by H2O Dialog.
|
|
|
|
typedef enum {
|
|
H2O_FORM_BROWSER_D_TYPE_ONE_OF = 1,
|
|
H2O_FORM_BROWSER_D_TYPE_ORDERED_LIST,
|
|
H2O_FORM_BROWSER_D_TYPE_NUMERIC,
|
|
H2O_FORM_BROWSER_D_TYPE_STRING,
|
|
H2O_FORM_BROWSER_D_TYPE_DATE,
|
|
H2O_FORM_BROWSER_D_TYPE_TIME,
|
|
H2O_FORM_BROWSER_D_TYPE_PASSWORD
|
|
} H2O_FORM_BROWSER_D_TYPE_Q;
|
|
|
|
#define H2O_FORM_BROWSER_D_TYPE_QUESTIONS 0x00FF0000
|
|
|
|
//
|
|
// Display Engine Event Type Definitions
|
|
//
|
|
typedef struct _H2O_DISPLAY_ENGINE_EVT {
|
|
UINT32 Size; ///< Unsigned integer specifies the size of the structure, in bytes. Producers of this
|
|
///< structure should initialize this field to sizeof(H2O_DISPLAY_ENGINE_EVT).
|
|
///< Consumers of this structure should check this field before accessing any
|
|
///< members beyond Type.
|
|
H2O_EVT_TYPE Type; ///< Enumerated value that specifies the Notification.
|
|
INT32 Target; ///< Bitmask that specifies the console target for the notification. Bit 0 indicates
|
|
///< Console 0, Bit 1 indicates Console 1, etc. A value of 0 in this field indicates that
|
|
///< the notification is meant for the Forms Browser itself. 0xffffffff indicates a
|
|
///< broadcast to all Display Engines.
|
|
} H2O_DISPLAY_ENGINE_EVT;
|
|
|
|
//
|
|
// The sources of the event is form browser
|
|
//
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_KEYPRESS 0x00000001
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_REL_PTR_MOVE 0x00000002
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_ABS_PTR_MOVE 0x00000003
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_TIMER 0x00000004
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_OPEN_L 0x00000005
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SHUT_L 0x00000006
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_OPEN_P 0x00000007
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SHUT_P 0x00000008
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_OPEN_Q 0x00000009
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SHUT_Q 0x0000000A
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_REFRESH 0x0000000B
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_REFRESH_Q 0x0000000C
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_OPEN_D 0x0000000D
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SHUT_D 0x0000000E
|
|
|
|
//
|
|
// The sources of the event is form browser or display engine
|
|
//
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SELECT_Q 0x00001001
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SELECT_P 0x00001002
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_CHANGING_Q 0x00001003
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_CHANGE_Q 0x00001004
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DEFAULT 0x00001005
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DEFAULT_Q 0x00001006
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DEFAULT_P 0x00001007
|
|
|
|
//
|
|
// The sources of the EVT is display engine
|
|
//
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_EXIT 0x00002001
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SUBMIT_EXIT 0x00002002
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DISCARD_EXIT 0x00002003
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_EXIT_P 0x00002004
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SUBMIT_EXIT_P 0x00002005
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DISCARD_EXIT_P 0x00002006
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SUBMIT_P 0x00002007
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DISCARD_P 0x00002008
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SUBMIT 0x00002009
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_DISCARD 0x0000200A
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_SHOW_HELP 0x0000200B
|
|
#define H2O_DISPLAY_ENGINE_EVT_TYPE_HOT_KEY 0x0000200C
|
|
|
|
//
|
|
// Event Notify Structures
|
|
//
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_KEYPRESS
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
EFI_DEVICE_PATH *DevicePath;
|
|
EFI_KEY_DATA KeyData;
|
|
} H2O_DISPLAY_ENGINE_EVT_KEYPRESS;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_REL_PTR_MOVE
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
EFI_SIMPLE_POINTER_STATE State; ///< Describe relative position state.
|
|
} H2O_DISPLAY_ENGINE_EVT_REL_PTR_MOVE;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_ABS_PTR_MOVE
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
EFI_ABSOLUTE_POINTER_STATE AbsPtrState; ///< Describe absolute position state.
|
|
} H2O_DISPLAY_ENGINE_EVT_ABS_PTR_MOVE;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_TIMER
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
UINT64 Time; ///< Trigger time.
|
|
INT32 TimerId; ///< A id to the fnction to be notified when the time-out value elapses.
|
|
} H2O_DISPLAY_ENGINE_EVT_TIMER;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_OPEN_L
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_OPEN_L;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SHUT_L
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.} H2O_DISPLAY_ENGINE_EVT_SHUT_L;
|
|
} H2O_DISPLAY_ENGINE_EVT_SHUT_L;
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_OPEN_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_OPEN_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SHUT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_SHUT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_OPEN_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_IFR_OP_HEADER *IfrOpCode;
|
|
} H2O_DISPLAY_ENGINE_EVT_OPEN_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SHUT_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_IFR_OP_HEADER *IfrOpCode;
|
|
} H2O_DISPLAY_ENGINE_EVT_SHUT_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_REFRESH
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_REFRESH;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_REFRESH_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_IFR_OP_HEADER *IfrOpCode; ///< The pointer of IFR op code.
|
|
} H2O_DISPLAY_ENGINE_EVT_REFRESH_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_OPEN_D
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_FORM_BROWSER_D Dialog; ///< The dialog information.
|
|
} H2O_DISPLAY_ENGINE_EVT_OPEN_D;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SHUT_D
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_SHUT_D;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SELECT_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_IFR_OP_HEADER *IfrOpCode;
|
|
} H2O_DISPLAY_ENGINE_EVT_SELECT_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SELECT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_SELECT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_CHANGING_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_HII_VALUE BodyHiiValue; ///< The body HII value.
|
|
EFI_HII_VALUE ButtonHiiValue; ///< Press button HII value.
|
|
} H2O_DISPLAY_ENGINE_EVT_CHANGING_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_CHANGE_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
EFI_HII_VALUE HiiValue; ///< The question HII values.
|
|
} H2O_DISPLAY_ENGINE_EVT_CHANGE_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DEFAULT
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_DEFAULT;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DEFAULT_Q
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
EFI_QUESTION_ID QuestionId; ///< The question identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_DEFAULT_Q;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DEFAULT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_DEFAULT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_EXIT
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_EXIT;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SUBMIT_EXIT
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_SUBMIT_EXIT;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DISCARD_EXIT
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_DISCARD_EXIT;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_EXIT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_EXIT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SUBMIT_EXIT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_SUBMIT_EXIT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DISCARD_EXIT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_DISCARD_EXIT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SUBMIT_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_SUBMIT_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DISCARD_P
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
H2O_PAGE_ID PageId; ///< The page identifier.
|
|
} H2O_DISPLAY_ENGINE_EVT_DISCARD_P;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SUBMIT
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_SUBMIT;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_DISCARD
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_DISCARD;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_SHOW_HELP
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr; ///< The header contains a H2O display engine event type.
|
|
} H2O_DISPLAY_ENGINE_EVT_SHOW_HELP;
|
|
|
|
//
|
|
// H2O_DISPLAY_ENGINE_EVT_HOT_KEY
|
|
//
|
|
typedef struct {
|
|
H2O_DISPLAY_ENGINE_EVT Hdr;
|
|
HOT_KEY_ACTION HotKeyAction;
|
|
UINT16 HotKeyDefaultId;
|
|
EFI_GUID HotKeyTargetFormSetGuid;
|
|
UINT16 HotKeyTargetFormId;
|
|
UINT16 HotKeyTargetQuestionId;
|
|
EFI_HII_VALUE HotKeyHiiValue;
|
|
} H2O_DISPLAY_ENGINE_EVT_HOT_KEY;
|
|
|
|
//
|
|
// Event Target
|
|
//
|
|
#define H2O_DISPLAY_ENGINE_EVT_TARGET_FORM_BROWSER 0
|
|
#define H2O_DISPLAY_ENGINE_EVT_TARGET_BROADCAST -1
|
|
|
|
|
|
//
|
|
// Protocol definitions
|
|
//
|
|
/**
|
|
Get page data according to specific page ID.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Specific input page ID.
|
|
@param[out] PageInfo A pointer to point H2O_FORM_BROWSER_P instance.
|
|
|
|
@retval EFI_SUCCESS Get page data successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, or PageInfo is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific input page ID.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_PAGE_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
OUT H2O_FORM_BROWSER_P **PageInfo
|
|
);
|
|
|
|
/**
|
|
Get all of page IDs.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[out] PageCount A pointer to the number of page ID in PageBuffer.
|
|
@param[out] PageBuffer A pointer to a buffer which will be allocated by the function which contains all
|
|
of H2O_PAGE_ID. The buffer should be freed by the caller.
|
|
|
|
@retval EFI_SUCCESS Get array of page IDs successful.
|
|
@retval EFI_NOT_FOUND No page IDs match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate PageIdBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, PageIdCount is NULL or PageIdBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_PAGES_ALL) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
OUT UINT32 *PageIdCount,
|
|
OUT H2O_PAGE_ID **PageIdBuffer
|
|
);
|
|
|
|
/**
|
|
Get Statement data according to Page identifier and Statement identifier.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[in] StatementId Input Statement ID.
|
|
@param[out] StatementData A pointer to H2O_FORM_BROWSER_S instance.
|
|
|
|
@retval EFI_SUCCESS Get Statement data successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, StatementData is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific Statement data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_STATEMENT_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
IN H2O_STATEMENT_ID StatementId,
|
|
OUT H2O_FORM_BROWSER_S **StatementData
|
|
);
|
|
|
|
|
|
/**
|
|
Get Question data according to Page identifier and Question identifier.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[in] QuestionId Input Question ID.
|
|
@param[out] QuestionData A pointer to H2O_FORM_BROWSER_Q instance.
|
|
|
|
@retval EFI_SUCCESS Get Question data successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, QuestionData is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific Question data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_QUESTION_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
IN EFI_QUESTION_ID QuestionId,
|
|
OUT H2O_FORM_BROWSER_Q **QuestionData
|
|
);
|
|
|
|
/**
|
|
Get all of Question identifiers from specific Page.
|
|
|
|
@param[in] This Get array of Question identifiers successful.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[out] QuestionIdCount A pointer to the number of Question ID in QuestionIdBuffer.
|
|
@param[out] QuestionIdBuffer A pointer to a buffer which will be allocated by the function which contains all
|
|
of Question IDs. The buffer should be freed by the caller.
|
|
|
|
@retval EFI_SUCCESS Get array of Question IDs successful.
|
|
@retval EFI_NOT_FOUND No Question ID match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate QuestionIdBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, QuestionIdCount is NULL or QuestionIdBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_QUESTIONS_ALL) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
OUT UINT32 *QuestionIdCount,
|
|
OUT EFI_QUESTION_ID **QuestionIdBuffer
|
|
);
|
|
|
|
/**
|
|
According to Page identifier and Question identifier to get all of types default values in this question.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[in] QuestionId Input Question ID.
|
|
@param[out] DefaultCount A pointer to the number of H2O_FORM_BROWSER_QD instance in DefaultBuffer.
|
|
@param[out] DefaultBuffer A pointer to a buffer which will be allocated by the function which contains all
|
|
of H2O_FORM_BROWSER_QD instances. The buffer should be freed by the caller.
|
|
|
|
@retval EFI_SUCCESS Get Question defaults successful.
|
|
@retval EFI_NOT_FOUND Cannot find default values from specific Question data.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate DefaultBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, DefaultCount is NULL or DefaultBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_QUESTION_DEFAULTS) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
IN EFI_QUESTION_ID QuestionId,
|
|
OUT UINT32 *DefaultCount,
|
|
OUT H2O_FORM_BROWSER_QD **DefaultBuffer
|
|
);
|
|
|
|
/**
|
|
Get Variable Store data according to specific Variable Store ID.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[in] VarStoreId Specific input Variable Store ID.
|
|
@param[out] VarbleStoreData Pointer to H2O_FORM_BROWSER_VS instance.
|
|
|
|
@retval EFI_SUCCESS Get Variable Store successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, or VariableStoreData is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific Variable Store data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_VARSTORE_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
IN EFI_VARSTORE_ID VarStoreId,
|
|
OUT H2O_FORM_BROWSER_VS **VarbleStoreData
|
|
);
|
|
|
|
|
|
/**
|
|
Get all of Variable Store identifiers from specific Page.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[out] VarStoreCount A pointer to the number of Variable Store ID in VarStoreBuffer.
|
|
@param[out] VarStoreBuffer A pointer to a buffer which will be allocated by the function which contains all
|
|
of EFI_VARSTORE_ID instances. The buffer should be freed by the caller.
|
|
|
|
@retval EFI_SUCCESS Get array of Variable Store IDs successful.
|
|
@retval EFI_NOT_FOUND No Variable Store ID match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate VarStoreBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL,, VarStoreCount is NULL or VarStoreBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_VARSTORES_ALL) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
OUT UINTN *VarStoreCount,
|
|
OUT EFI_VARSTORE_ID **VarStoreBuffer
|
|
);
|
|
|
|
/**
|
|
Get Default Store data according to specific Default Store identifier.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[in] DefaultStoreId Specific input Variable Store ID.
|
|
@param[out] DefaultStoreData A pointer to H2O_FORM_BROWSER_DS instance.
|
|
|
|
@retval EFI_SUCCESS Get Default Store successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, or DefaultStoreData is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific Default Store data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_DEFAULT_STORE_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
IN EFI_DEFAULT_ID DefaultStoreId,
|
|
OUT H2O_FORM_BROWSER_DS **DefaultStoreData
|
|
);
|
|
|
|
/**
|
|
Get all of Default Store identifiers from specific Page.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] PageId Input Page identifier.
|
|
@param[out] DefaultStoreIdCount A pointer to the number of Default Store ID in DefaultStoreIdBuffer.
|
|
@param[out] DefaultStoreIdBuffer A pointer to a buffer which will be allocated by the function which contains all
|
|
of EFI_DEFAULT_ID instances.
|
|
|
|
@retval EFI_SUCCESS Get array of Default Store IDs successful.
|
|
@retval EFI_NOT_FOUND No Default Store ID match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate DefaultStoreIdBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, DefaultStoreIdCount is NULL or DefaultStoreIdBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_DEFAULT_STORES_ALL) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_PAGE_ID PageId,
|
|
OUT UINT32 *DefaultStoreIdCount,
|
|
OUT EFI_DEFAULT_ID **DefaultStoreIdBuffer
|
|
);
|
|
|
|
|
|
/**
|
|
Add console device to supported list.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] ConsoleDev A pointer to H2O_FORM_BROWSER_CONSOLE_DEV instance.
|
|
|
|
@retval EFI_SUCCESS Add console device to supported list successful.
|
|
@retval EFI_ALREADY_STARTED The console device is already in supported list.
|
|
@retval EFI_INVALID_PARAMETER This is NULL or CosoleDev is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_ADD_CONSOLE) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_FORM_BROWSER_CONSOLE_DEV *ConsoleDev
|
|
);
|
|
|
|
|
|
|
|
/**
|
|
Return information about all installed Consoles, the devices associated with them and
|
|
which Display Engine is currently managing them.
|
|
|
|
@param[in] This Pointer to current instance of this protocol.
|
|
@param[in] CId Unsigned integer that specifies the console index. -1 = all consoles.
|
|
@param[out] CDevCount Pointer to returned console device count.
|
|
@param[out] CDevs Pointer to returned pointer to array of console device descriptors. The array
|
|
should be freed by the caller. CDevCount indicates the number of elements in the
|
|
array.
|
|
|
|
@retval EFI_SUCCESS Get array of console devices successful.
|
|
@retval EFI_NOT_FOUND No consoleID match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate CDevs.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, CDevCount is NULL or CDevs is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_CONSOLE_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_CONSOLE_ID CId,
|
|
OUT UINT32 *CDevCount,
|
|
OUT H2O_FORM_BROWSER_CONSOLE_DEV **CDevs
|
|
);
|
|
|
|
/**
|
|
Return array of Console IDs.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[out] CIdCount Pointer to returned console ID count.
|
|
@param[out] CIdBuffer Pointer to returned pointer to array of console ID. The array should be freed by
|
|
the caller. CIdCount indicates the number of elements in the array.
|
|
|
|
@retval EFI_SUCCESS Get array of console IDs successful.
|
|
@retval EFI_NOT_FOUND No console IDs ID match the search.
|
|
@retval EFI_OUT_OF_RESOURCES There are not enough resources available to allocate CIdBuffer.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, CIdCount is NULL or CIdBuffer is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_CONSOLES_ALL) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
OUT UINT32 *CIdCount,
|
|
OUT H2O_CONSOLE_ID **CIdBuffer
|
|
);
|
|
|
|
|
|
/**
|
|
Return data about the Setup Menu.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[out] SetupMenuData A pointer to returned setup menu data
|
|
|
|
@retval EFI_SUCCESS Get setup menu data successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL or SetupMenuData is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find setup menu data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_SETUP_MENU_INFO) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
OUT H2O_FORM_BROWSER_SM **SetupMenuData
|
|
);
|
|
|
|
/**
|
|
Update setup menu data.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[out] SetupMenuData A pointer to input setup menu data
|
|
|
|
@retval EFI_SUCCESS Update setup menu info successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL or SetupMenuData is NULL.
|
|
@retval EFI_UNSUPPORTED Cannot update setup menu data.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_UPDATE_SETUP_MENU) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN H2O_FORM_BROWSER_SM *SetupMenuData
|
|
);
|
|
|
|
/**
|
|
Add the notification to the notification queue and signal the Notification event.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] Notify A pointer to the H2O_DISPLAY_ENGINE_EVT instance.
|
|
|
|
@retval EFI_SUCCESS Register notify successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL or Notify is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_NOTIFY) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN CONST H2O_DISPLAY_ENGINE_EVT *Notify
|
|
);
|
|
|
|
/**
|
|
Add the notification to the notification queue and signal the notification event after
|
|
a period of time.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] Notify A pointer to the H2O_DISPLAY_ENGINE_EVT instance.
|
|
@param[in] TriggerTime The number of 100ns units until the timer expires. A
|
|
TriggerTime of 0 is legal. If TriggerTime is 0, signal
|
|
event immediately.
|
|
|
|
@retval EFI_SUCCESS Register notify successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL or Notify is NULL.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_REGISTER_TIMER) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN CONST H2O_DISPLAY_ENGINE_EVT *Notify,
|
|
IN UINT64 TriggerTime
|
|
);
|
|
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_VFR_PROP) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN OUT H2O_VFR_PROPERTY *VfrVfcfProperty
|
|
);
|
|
|
|
/**
|
|
Get changed Questions data buffer.
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[out] ChangedQuestionCount A pointer to the number of changed Questions in ChangedQuestionBuffer.
|
|
@param[out] ChangedQuestionBuffer A pointer to a buffer which will be allocated by the function which
|
|
contains all changed Questions.
|
|
|
|
@retval EFI_SUCCESS Get changed Questions successful.
|
|
@retval EFI_NOT_FOUND No changed Questions.
|
|
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_CHANGED_QUESTIONS) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
OUT UINT32 *ChangedQuestionCount,
|
|
OUT H2O_FORM_BROWSER_Q **ChangedQuestionBuffer
|
|
);
|
|
|
|
/**
|
|
Get page Info by FormSet ID and Form ID
|
|
|
|
@param[in] This A pointer to the H2O_FORM_BROWSER_PROTOCOL instance.
|
|
@param[in] FormsetId Specific input FormSet Guid.
|
|
@param[in] FormsetId Specific input Form ID.
|
|
@param[out] PageInfo A pointer to point H2O_FORM_BROWSER_P instance.
|
|
|
|
@retval EFI_SUCCESS Get page data successful.
|
|
@retval EFI_INVALID_PARAMETER This is NULL, or PageInfo is NULL.
|
|
@retval EFI_NOT_FOUND Cannot find specific input page ID.
|
|
@retval EFI_OUT_OF_RESOURCES Could not allocate resources for page.
|
|
**/
|
|
typedef
|
|
EFI_STATUS
|
|
(EFIAPI *H2O_FORM_BROWSER_GET_PAGE_INFO_BY_FORM) (
|
|
IN H2O_FORM_BROWSER_PROTOCOL *This,
|
|
IN EFI_GUID *FormsetId,
|
|
IN H2O_FORM_ID FormId,
|
|
OUT H2O_FORM_BROWSER_P **PageInfo
|
|
);
|
|
|
|
struct _H2O_FORM_BROWSER_PROTOCOL {
|
|
UINT32 Size;
|
|
H2O_FORM_BROWSER_P *CurrentP;
|
|
H2O_FORM_BROWSER_Q *CurrentQ;
|
|
H2O_FORM_BROWSER_GET_PAGE_INFO GetPInfo;
|
|
H2O_FORM_BROWSER_GET_PAGES_ALL GetPAll;
|
|
H2O_FORM_BROWSER_GET_STATEMENT_INFO GetSInfo;
|
|
H2O_FORM_BROWSER_GET_QUESTION_INFO GetQInfo;
|
|
H2O_FORM_BROWSER_GET_QUESTIONS_ALL GetQAll;
|
|
H2O_FORM_BROWSER_GET_QUESTION_DEFAULTS GetQDefaults;
|
|
H2O_FORM_BROWSER_GET_VARSTORE_INFO GetVSInfo;
|
|
H2O_FORM_BROWSER_GET_VARSTORES_ALL GetVSAll;
|
|
H2O_FORM_BROWSER_GET_DEFAULT_STORE_INFO GetDSInfo;
|
|
H2O_FORM_BROWSER_GET_DEFAULT_STORES_ALL GetDSAll;
|
|
H2O_FORM_BROWSER_ADD_CONSOLE AddC;
|
|
H2O_FORM_BROWSER_GET_CONSOLE_INFO GetCInfo;
|
|
H2O_FORM_BROWSER_GET_CONSOLES_ALL GetCAll;
|
|
H2O_FORM_BROWSER_GET_SETUP_MENU_INFO GetSMInfo;
|
|
H2O_FORM_BROWSER_UPDATE_SETUP_MENU UpdateSMInfo;
|
|
H2O_FORM_BROWSER_NOTIFY Notify;
|
|
H2O_FORM_BROWSER_REGISTER_TIMER RegisterTimer;
|
|
H2O_FORM_BROWSER_GET_VFR_PROP GetVfrProp;
|
|
H2O_FORM_BROWSER_GET_CHANGED_QUESTIONS GetChangedQuestions;
|
|
H2O_FORM_BROWSER_GET_PAGE_INFO_BY_FORM GetPInfoByForm;
|
|
};
|
|
|
|
extern GUID gH2OFormBrowserProtocolGuid;
|
|
|
|
#endif
|