mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-25 17:23:53 +02:00 
			
		
		
		
	1. add Include folder which contain the *.h file which used by Tiano tools.
2. Change ${evn.WORKSPACE}/MdePkg to ${PACKAGE_DIR} in build.xml.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@509 6f19259b-4bc3-4df7-8a09-765794883524
		
	
			
		
			
				
	
	
		
			423 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			423 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   This file defines the encoding for the VFR (Visual Form Representation) language.
 | |
|   IFR is primarily consumed by the EFI presentation engine, and produced by EFI
 | |
|   internal application and drivers as well as all add-in card option-ROM drivers
 | |
| 
 | |
|   Copyright (c) 2006, Intel Corporation                                                         
 | |
|   All rights reserved. This program and the accompanying materials                          
 | |
|   are licensed and made available under the terms and conditions of the BSD License         
 | |
|   which accompanies this distribution.  The full text of the license may be found at        
 | |
|   http://opensource.org/licenses/bsd-license.php                                            
 | |
| 
 | |
|   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | |
|   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | |
| 
 | |
|   Module Name:  InternalFormRepresentation.h
 | |
| 
 | |
|   @par Revision Reference:
 | |
|   These definitions are from Human Interface Infrastructure Spec Version 0.92.
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __EFI_INTERNAL_FORM_REPRESENTATION_H__
 | |
| #define __EFI_INTERNAL_FORM_REPRESENTATION_H__
 | |
| 
 | |
| //
 | |
| // The following types are currently defined:
 | |
| //
 | |
| typedef UINT32  RELOFST;
 | |
| typedef CHAR16  *EFI_STRING;
 | |
| 
 | |
| //
 | |
| // IFR Op codes
 | |
| //
 | |
| #define EFI_IFR_FORM_OP                 0x01
 | |
| #define EFI_IFR_SUBTITLE_OP             0x02
 | |
| #define EFI_IFR_TEXT_OP                 0x03
 | |
| #define EFI_IFR_GRAPHIC_OP              0x04
 | |
| #define EFI_IFR_ONE_OF_OP               0x05
 | |
| #define EFI_IFR_CHECKBOX_OP             0x06
 | |
| #define EFI_IFR_NUMERIC_OP              0x07
 | |
| #define EFI_IFR_PASSWORD_OP             0x08
 | |
| #define EFI_IFR_ONE_OF_OPTION_OP        0x09  // ONEOF OPTION field
 | |
| #define EFI_IFR_SUPPRESS_IF_OP          0x0A
 | |
| #define EFI_IFR_END_FORM_OP             0x0B
 | |
| #define EFI_IFR_HIDDEN_OP               0x0C
 | |
| #define EFI_IFR_END_FORM_SET_OP         0x0D
 | |
| #define EFI_IFR_FORM_SET_OP             0x0E
 | |
| #define EFI_IFR_REF_OP                  0x0F
 | |
| #define EFI_IFR_END_ONE_OF_OP           0x10
 | |
| #define EFI_IFR_END_OP                  EFI_IFR_END_ONE_OF_OP
 | |
| #define EFI_IFR_INCONSISTENT_IF_OP      0x11
 | |
| #define EFI_IFR_EQ_ID_VAL_OP            0x12
 | |
| #define EFI_IFR_EQ_ID_ID_OP             0x13
 | |
| #define EFI_IFR_EQ_ID_LIST_OP           0x14
 | |
| #define EFI_IFR_AND_OP                  0x15
 | |
| #define EFI_IFR_OR_OP                   0x16
 | |
| #define EFI_IFR_NOT_OP                  0x17
 | |
| #define EFI_IFR_END_IF_OP               0x18  // for endif of inconsistentif, suppressif, grayoutif
 | |
| #define EFI_IFR_GRAYOUT_IF_OP           0x19
 | |
| #define EFI_IFR_DATE_OP                 0x1A
 | |
| #define EFI_IFR_TIME_OP                 0x1B
 | |
| #define EFI_IFR_STRING_OP               0x1C
 | |
| #define EFI_IFR_LABEL_OP                0x1D
 | |
| #define EFI_IFR_SAVE_DEFAULTS_OP        0x1E
 | |
| #define EFI_IFR_RESTORE_DEFAULTS_OP     0x1F
 | |
| #define EFI_IFR_BANNER_OP               0x20
 | |
| #define EFI_IFR_INVENTORY_OP            0x21
 | |
| #define EFI_IFR_EQ_VAR_VAL_OP           0x22
 | |
| #define EFI_IFR_ORDERED_LIST_OP         0x23
 | |
| #define EFI_IFR_VARSTORE_OP             0x24
 | |
| #define EFI_IFR_VARSTORE_SELECT_OP      0x25
 | |
| #define EFI_IFR_VARSTORE_SELECT_PAIR_OP 0x26
 | |
| #define EFI_IFR_TRUE_OP                 0x27
 | |
| #define EFI_IFR_FALSE_OP                0x28
 | |
| #define EFI_IFR_GT_OP                   0x29
 | |
| #define EFI_IFR_GE_OP                   0x2A
 | |
| #define EFI_IFR_OEM_DEFINED_OP          0x2B
 | |
| #define EFI_IFR_LAST_OPCODE             EFI_IFR_OEM_DEFINED_OP
 | |
| #define EFI_IFR_OEM_OP                  0xFE
 | |
| #define EFI_IFR_NV_ACCESS_COMMAND       0xFF
 | |
| 
 | |
| //
 | |
| // Define values for the flags fields in some VFR opcodes. These are
 | |
| // bitmasks.
 | |
| //
 | |
| #define EFI_IFR_FLAG_DEFAULT              0x01
 | |
| #define EFI_IFR_FLAG_MANUFACTURING        0x02
 | |
| #define EFI_IFR_FLAG_INTERACTIVE          0x04
 | |
| #define EFI_IFR_FLAG_NV_ACCESS            0x08
 | |
| #define EFI_IFR_FLAG_RESET_REQUIRED       0x10
 | |
| #define EFI_IFR_FLAG_LATE_CHECK           0x20
 | |
| 
 | |
| #define EFI_NON_DEVICE_CLASS              0x00  // Useful when you do not want something in the Device Manager
 | |
| #define EFI_DISK_DEVICE_CLASS             0x01
 | |
| #define EFI_VIDEO_DEVICE_CLASS            0x02
 | |
| #define EFI_NETWORK_DEVICE_CLASS          0x04
 | |
| #define EFI_INPUT_DEVICE_CLASS            0x08
 | |
| #define EFI_ON_BOARD_DEVICE_CLASS         0x10
 | |
| #define EFI_OTHER_DEVICE_CLASS            0x20
 | |
| 
 | |
| #define EFI_SETUP_APPLICATION_SUBCLASS    0x00
 | |
| #define EFI_GENERAL_APPLICATION_SUBCLASS  0x01
 | |
| #define EFI_FRONT_PAGE_SUBCLASS           0x02
 | |
| #define EFI_SINGLE_USE_SUBCLASS           0x03  // Used to display a single entity and then exit
 | |
| 
 | |
| //
 | |
| // Used to flag dynamically created op-codes. This is meaningful to the IFR Library set
 | |
| // and the browser since we need to distinguish between compiled NV map data and created data.
 | |
| // We do not allow new entries to be created in the NV map dynamically however we still need
 | |
| // to display this information correctly.  To dynamically create op-codes and assume that their
 | |
| // data will be saved, ensure that the NV starting location they refer to is pre-defined in the
 | |
| // NV map.
 | |
| //
 | |
| #define EFI_IFR_FLAG_CREATED  128
 | |
| 
 | |
| #pragma pack(1)
 | |
| //
 | |
| // IFR Structure definitions
 | |
| //
 | |
| typedef struct {
 | |
|   UINT8 OpCode;
 | |
|   UINT8 Length;
 | |
| } EFI_IFR_OP_HEADER;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER     Header;
 | |
|   EFI_GUID              Guid;
 | |
|   STRING_REF            FormSetTitle;
 | |
|   STRING_REF            Help;
 | |
|   EFI_PHYSICAL_ADDRESS  CallbackHandle;
 | |
|   UINT16                Class;
 | |
|   UINT16                SubClass;
 | |
|   UINT16                NvDataSize; // set once, size of the NV data as defined in the script
 | |
| } EFI_IFR_FORM_SET;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            FormId;
 | |
|   STRING_REF        FormTitle;
 | |
| } EFI_IFR_FORM;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            LabelId;
 | |
| } EFI_IFR_LABEL;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        SubTitle;
 | |
| } EFI_IFR_SUBTITLE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        Help;
 | |
|   STRING_REF        Text;
 | |
|   STRING_REF        TextTwo;
 | |
|   UINT8             Flags;          // This is included solely for purposes of interactive/dynamic support.
 | |
|   UINT16            Key;            // Value to be passed to caller to identify this particular op-code
 | |
| } EFI_IFR_TEXT;
 | |
| 
 | |
| //
 | |
| // goto
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            FormId;
 | |
|   STRING_REF        Prompt;
 | |
|   STRING_REF        Help;   // The string Token for the context-help
 | |
|   UINT8             Flags;  // This is included solely for purposes of interactive/dynamic support.
 | |
|   UINT16            Key;    // Value to be passed to caller to identify this particular op-code
 | |
| } EFI_IFR_REF;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_END_FORM;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_END_FORM_SET;
 | |
| 
 | |
| //
 | |
| // Also notice that the IFR_ONE_OF and IFR_CHECK_BOX are identical in structure......code assumes this to be true, if this ever
 | |
| // changes we need to revisit the InitializeTagStructures code
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
 | |
|   UINT8             Width;      // The Size of the Data being saved
 | |
|   STRING_REF        Prompt;     // The String Token for the Prompt
 | |
|   STRING_REF        Help;       // The string Token for the context-help
 | |
| } EFI_IFR_ONE_OF;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId; // The offset in NV for storage of the data
 | |
|   UINT8             MaxEntries; // The maximum number of options in the ordered list (=size of NVStore)
 | |
|   STRING_REF        Prompt;     // The string token for the prompt
 | |
|   STRING_REF        Help;       // The string token for the context-help
 | |
| } EFI_IFR_ORDERED_LIST;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
 | |
|   UINT8             Width;      // The Size of the Data being saved
 | |
|   STRING_REF        Prompt;     // The String Token for the Prompt
 | |
|   STRING_REF        Help;       // The string Token for the context-help
 | |
|   UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely
 | |
|   UINT16            Key;        // Value to be passed to caller to identify this particular op-code
 | |
| } EFI_IFR_CHECKBOX, EFI_IFR_CHECK_BOX;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        Option;     // The string token describing the option
 | |
|   UINT16            Value;      // The value associated with this option that is stored in the NVRAM if chosen
 | |
|   UINT8             Flags;      // For now, if non-zero, means that it is the default option, - further definition likely above
 | |
|   UINT16            Key;        // Value to be passed to caller to identify this particular op-code
 | |
| } EFI_IFR_ONE_OF_OPTION;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId; // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
 | |
|   UINT8             Width;      // The Size of the Data being saved
 | |
|   STRING_REF        Prompt;     // The String Token for the Prompt
 | |
|   STRING_REF        Help;       // The string Token for the context-help
 | |
|   UINT8             Flags;      // This is included solely for purposes of interactive/dynamic support.
 | |
|   UINT16            Key;        // Value to be passed to caller to identify this particular op-code
 | |
|   UINT16            Minimum;
 | |
|   UINT16            Maximum;
 | |
|   UINT16            Step;       // If step is 0, then manual input is specified, otherwise, left/right arrow selection is called for
 | |
|   UINT16            Default;
 | |
| } EFI_IFR_NUMERIC;
 | |
| 
 | |
| //
 | |
| // There is an interesting twist with regards to Time and Date.  This is one of the few items which can accept input from
 | |
| // a user, however may or may not need to use storage in the NVRAM space.  The decided method for determining if NVRAM space
 | |
| // will be used (only for a TimeOp or DateOp) is:  If .QuestionId == 0 && .Width == 0 (normally an impossibility) then use system
 | |
| // resources to store the data away and not NV resources.  In other words, the setup engine will call gRT->SetTime, and gRT->SetDate
 | |
| // for the saving of data, and the values displayed will be from the gRT->GetXXXX series of calls.
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_IFR_NUMERIC Hour;
 | |
|   EFI_IFR_NUMERIC Minute;
 | |
|   EFI_IFR_NUMERIC Second;
 | |
| } EFI_IFR_TIME;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_NUMERIC Year;
 | |
|   EFI_IFR_NUMERIC Month;
 | |
|   EFI_IFR_NUMERIC Day;
 | |
| } EFI_IFR_DATE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
 | |
|   UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday
 | |
|   STRING_REF        Prompt;       // The String Token for the Prompt
 | |
|   STRING_REF        Help;         // The string Token for the context-help
 | |
|   UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.
 | |
|   UINT16            Key;          // Value to be passed to caller to identify this particular op-code
 | |
|   UINT8             MinSize;      // Minimum allowable sized password
 | |
|   UINT8             MaxSize;      // Maximum allowable sized password
 | |
|   UINT16            Encoding;
 | |
| } EFI_IFR_PASSWORD;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId;   // The ID designating what the question is about...sucked in from a #define, likely in the form of a variable name
 | |
|   UINT8             Width;        // The Size of the Data being saved -- BUGBUG -- remove someday
 | |
|   STRING_REF        Prompt;       // The String Token for the Prompt
 | |
|   STRING_REF        Help;         // The string Token for the context-help
 | |
|   UINT8             Flags;        // This is included solely for purposes of interactive/dynamic support.
 | |
|   UINT16            Key;          // Value to be passed to caller to identify this particular op-code
 | |
|   UINT8             MinSize;      // Minimum allowable sized password
 | |
|   UINT8             MaxSize;      // Maximum allowable sized password
 | |
| } EFI_IFR_STRING;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_END_ONE_OF;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            Value;
 | |
|   UINT16            Key;
 | |
| } EFI_IFR_HIDDEN;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT8             Flags;
 | |
| } EFI_IFR_SUPPRESS;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT8             Flags;
 | |
| } EFI_IFR_GRAY_OUT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        Popup;
 | |
|   UINT8             Flags;
 | |
| } EFI_IFR_INCONSISTENT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId;   // offset into variable storage
 | |
|   UINT8             Width;        // size of variable storage
 | |
|   UINT16            Value;        // value to compare against
 | |
| } EFI_IFR_EQ_ID_VAL;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId;   // offset into variable storage
 | |
|   UINT8             Width;        // size of variable storage
 | |
|   UINT16            ListLength;
 | |
|   UINT16            ValueList[1];
 | |
| } EFI_IFR_EQ_ID_LIST;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            QuestionId1;  // offset into variable storage for first value to compare
 | |
|   UINT8             Width;        // size of variable storage (must be same for both)
 | |
|   UINT16            QuestionId2;  // offset into variable storage for second value to compare
 | |
| } EFI_IFR_EQ_ID_ID;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            VariableId;   // offset into variable storage
 | |
|   UINT16            Value;        // value to compare against
 | |
| } EFI_IFR_EQ_VAR_VAL;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_AND;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_OR;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_NOT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_END_EXPR, EFI_IFR_END_IF;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            FormId;
 | |
|   STRING_REF        Prompt;
 | |
|   STRING_REF        Help;
 | |
|   UINT8             Flags;
 | |
|   UINT16            Key;
 | |
| } EFI_IFR_SAVE_DEFAULTS;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        Help;
 | |
|   STRING_REF        Text;
 | |
|   STRING_REF        TextTwo;      // optional text
 | |
| } EFI_IFR_INVENTORY;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   EFI_GUID          Guid;         // GUID for the variable
 | |
|   UINT16            VarId;        // variable store ID, as referenced elsewhere in the form
 | |
|   UINT16            Size;         // size of the variable storage
 | |
| } EFI_IFR_VARSTORE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            VarId;        // variable store ID, as referenced elsewhere in the form
 | |
| } EFI_IFR_VARSTORE_SELECT;
 | |
| 
 | |
| //
 | |
| // Used for the ideqid VFR statement where two variable stores may be referenced in the
 | |
| // same VFR statement.
 | |
| // A browser should treat this as an EFI_IFR_VARSTORE_SELECT statement and assume that all following
 | |
| // IFR opcodes use the VarId as defined here.
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   UINT16            VarId;          // variable store ID, as referenced elsewhere in the form
 | |
|   UINT16            SecondaryVarId; // variable store ID, as referenced elsewhere in the form
 | |
| } EFI_IFR_VARSTORE_SELECT_PAIR;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_TRUE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_FALSE;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_GT;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
| } EFI_IFR_GE;
 | |
| 
 | |
| //
 | |
| // Save defaults and restore defaults have same structure
 | |
| //
 | |
| #define EFI_IFR_RESTORE_DEFAULTS  EFI_IFR_SAVE_DEFAULTS
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_IFR_OP_HEADER Header;
 | |
|   STRING_REF        Title;        // The string token for the banner title
 | |
|   UINT16            LineNumber;   // 1-based line number
 | |
|   UINT8             Alignment;    // left, center, or right-aligned
 | |
| } EFI_IFR_BANNER;
 | |
| 
 | |
| #define EFI_IFR_BANNER_ALIGN_LEFT   0
 | |
| #define EFI_IFR_BANNER_ALIGN_CENTER 1
 | |
| #define EFI_IFR_BANNER_ALIGN_RIGHT  2
 | |
| #define EFI_IFR_BANNER_TIMEOUT      0xFF
 | |
| 
 | |
| #pragma pack()
 | |
| 
 | |
| #endif
 |