IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
internal application and drivers as well as all add-in card option-ROM drivers\r
\r
- Copyright (c) 2006 - 2008, Intel Corporation \r
+ Copyright (c) 2006 - 2009, Intel Corporation \r
All rights reserved. This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
which accompanies this distribution. The full text of the license may be found at \r
#ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
#define __UEFI_INTERNAL_FORMREPRESENTATION_H__\r
\r
+#include <Guid/HiiFormMapMethodGuid.h>\r
+\r
///\r
/// The following types are currently defined:\r
///\r
#define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07\r
#define EFI_HII_PACKAGE_DEVICE_PATH 0x08\r
#define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09\r
+#define EFI_HII_PACKAGE_ANIMATIONS 0x0A\r
#define EFI_HII_PACKAGE_END 0xDF\r
#define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0\r
#define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF\r
// Section 27.3.6\r
//\r
\r
-#define UEFI_CONFIG_LANG L"x-UEFI"\r
-#define UEFI_CONFIG_LANG2 L"x-i-UEFI"\r
+#define UEFI_CONFIG_LANG "x-UEFI"\r
+#define UEFI_CONFIG_LANG2 "x-i-UEFI"\r
\r
///\r
/// The fixed header consists of a standard record header and then the string identifiers\r
BOOLEAN b;\r
EFI_HII_TIME time;\r
EFI_HII_DATE date;\r
- EFI_STRING_ID string;\r
+ EFI_STRING_ID string; ///< EFI_IFR_TYPE_STRING, EFI_IFR_TYPE_ACTION\r
+ // UINT8 buffer[]; ///< EFI_IFR_TYPE_ORDERED_LIST\r
} EFI_IFR_TYPE_VALUE;\r
\r
//\r
#define EFI_IFR_DISABLE_IF_OP 0x1E\r
#define EFI_IFR_TO_LOWER_OP 0x20\r
#define EFI_IFR_TO_UPPER_OP 0x21\r
+#define EFI_IFR_MAP_OP 0x22\r
#define EFI_IFR_ORDERED_LIST_OP 0x23\r
#define EFI_IFR_VARSTORE_OP 0x24\r
#define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25\r
#define EFI_IFR_VERSION_OP 0x28\r
#define EFI_IFR_END_OP 0x29\r
#define EFI_IFR_MATCH_OP 0x2A\r
+#define EFI_IFR_SET_OP 0x2C\r
+#define EFI_IFR_GET_OP 0x2B\r
+#define EFI_IFR_READ_OP 0x2D\r
+#define EFI_IFR_WRITE_OP 0x2E\r
#define EFI_IFR_EQUAL_OP 0x2F\r
#define EFI_IFR_NOT_EQUAL_OP 0x30\r
#define EFI_IFR_GREATER_THAN_OP 0x31\r
#define EFI_IFR_VALUE_OP 0x5A\r
#define EFI_IFR_DEFAULT_OP 0x5B\r
#define EFI_IFR_DEFAULTSTORE_OP 0x5C\r
+#define EFI_IFR_FORM_MAP_OP 0x5D\r
#define EFI_IFR_CATENATE_OP 0x5E\r
#define EFI_IFR_GUID_OP 0x5F\r
+#define EFI_IFR_SECURITY_OP 0x60\r
\r
//\r
// Definitions of IFR Standard Headers\r
EFI_GUID Guid;\r
EFI_STRING_ID FormSetTitle;\r
EFI_STRING_ID Help;\r
+ UINT8 Flags;\r
+ // EFI_GUID ClassGuid[];\r
} EFI_IFR_FORM_SET;\r
\r
typedef struct _EFI_IFR_END {\r
\r
typedef struct _EFI_IFR_RESET_BUTTON {\r
EFI_IFR_OP_HEADER Header;\r
- EFI_IFR_QUESTION_HEADER Question;\r
+ EFI_IFR_STATEMENT_HEADER Statement;\r
EFI_DEFAULT_ID DefaultId;\r
} EFI_IFR_RESET_BUTTON;\r
\r
#define EFI_IFR_TYPE_DATE 0x06\r
#define EFI_IFR_TYPE_STRING 0x07\r
#define EFI_IFR_TYPE_OTHER 0x08\r
+#define EFI_IFR_TYPE_UNDEFINED 0x09\r
+#define EFI_IFR_TYPE_ACTION 0x0A\r
+#define EFI_IFR_TYPE_BUFFER 0x0B\r
\r
#define EFI_IFR_OPTION_DEFAULT 0x10\r
#define EFI_IFR_OPTION_DEFAULT_MFG 0x20\r
UINT16 Value;\r
} EFI_IFR_EQ_ID_VAL;\r
\r
-typedef struct _EFI_IFR_EQ_ID_LIST {\r
+typedef struct _EFI_IFR_EQ_ID_VAL_LIST {\r
EFI_IFR_OP_HEADER Header;\r
EFI_QUESTION_ID QuestionId;\r
UINT16 ListLength;\r
UINT16 ValueList[1];\r
-} EFI_IFR_EQ_ID_LIST;\r
+} EFI_IFR_EQ_ID_VAL_LIST;\r
\r
typedef struct _EFI_IFR_UINT8 {\r
EFI_IFR_OP_HEADER Header;\r
UINT8 Flags;\r
} EFI_IFR_SPAN;\r
\r
+typedef struct _EFI_IFR_SECURITY {\r
+ ///\r
+ /// Standard opcode header, where Header.Op = EFI_IFR_SECURITY_OP.\r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Security permission level.\r
+ ///\r
+ EFI_GUID Permissions;\r
+} EFI_IFR_SECURITY;\r
+\r
+typedef struct _EFI_IFR_FORM_MAP_METHOD {\r
+ ///\r
+ /// The string identifier which provides the human-readable name of \r
+ /// the configuration method for this standards map form.\r
+ ///\r
+ EFI_STRING_ID MethodTitle;\r
+ ///\r
+ /// Identifier which uniquely specifies the configuration methods \r
+ /// associated with this standards map form.\r
+ ///\r
+ EFI_GUID MethodIdentifier;\r
+} EFI_IFR_FORM_MAP_METHOD;\r
+\r
+typedef struct _EFI_IFR_FORM_MAP {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_FORM_MAP_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// The unique identifier for this particular form.\r
+ ///\r
+ EFI_FORM_ID FormId;\r
+ ///\r
+ /// One or more configuration method's name and unique identifier.\r
+ ///\r
+ EFI_IFR_FORM_MAP_METHOD Methods[1];\r
+} EFI_IFR_FORM_MAP;\r
+\r
+typedef struct _EFI_IFR_SET {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_SET_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Specifies the identifier of a previously declared variable store to \r
+ /// use when storing the question's value. \r
+ ///\r
+ EFI_VARSTORE_ID VarStoreId;\r
+ union {\r
+ ///\r
+ /// A 16-bit Buffer Storage offset.\r
+ ///\r
+ EFI_STRING_ID VarName;\r
+ ///\r
+ /// A Name Value or EFI Variable name (VarName).\r
+ ///\r
+ UINT16 VarOffset;\r
+ } VarStoreInfo;\r
+} EFI_IFR_SET;\r
+\r
+typedef struct _EFI_IFR_GET {\r
+ ///\r
+ /// The sequence that defines the type of opcode as well as the length \r
+ /// of the opcode being defined. Header.OpCode = EFI_IFR_GET_OP. \r
+ ///\r
+ EFI_IFR_OP_HEADER Header;\r
+ ///\r
+ /// Specifies the identifier of a previously declared variable store to \r
+ /// use when retrieving the value. \r
+ ///\r
+ EFI_VARSTORE_ID VarStoreId;\r
+ union {\r
+ ///\r
+ /// A 16-bit Buffer Storage offset.\r
+ ///\r
+ EFI_STRING_ID VarName;\r
+ ///\r
+ /// A Name Value or EFI Variable name (VarName).\r
+ ///\r
+ UINT16 VarOffset;\r
+ } VarStoreInfo;\r
+ ///\r
+ /// Specifies the type used for storage. \r
+ ///\r
+ UINT8 VarStoreType;\r
+} EFI_IFR_GET;\r
+\r
+typedef struct _EFI_IFR_READ {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_READ;\r
+\r
+typedef struct _EFI_IFR_WRITE {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_WRITE;\r
+\r
+typedef struct _EFI_IFR_MAP {\r
+ EFI_IFR_OP_HEADER Header;\r
+} EFI_IFR_MAP;\r
//\r
// Definitions for Keyboard Package\r
-// Section 27.3.9\r
// Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL\r
//\r
\r
+///\r
+/// Each enumeration values maps a physical key on a keyboard.\r
+///\r
typedef enum { \r
EfiKeyLCtrl,\r
EfiKeyA0, \r
///\r
/// This key is affected by the caps lock so that if a keyboard driver\r
/// would need to disambiguate between a key which had a "1" defined\r
-/// versus a "a" character. Having this bit turned on would tell\r
+/// versus an "a" character. Having this bit turned on would tell\r
/// the keyboard driver to use the appropriate shifted state or not.\r
///\r
#define EFI_AFFECTED_BY_CAPS_LOCK 0x0002\r
//\r
// Keys that have multiple control functions based on modifier\r
// settings are handled in the keyboard driver implementation.\r
-// For instance PRINT_KEY might have a modifier held down and\r
+// For instance, PRINT_KEY might have a modifier held down and\r
// is still a nonprinting character, but might have an alternate\r
// control function like SYSREQUEST\r
//\r