/** @file\r
Function and Macro defintions for IFR parsing. To get the default value from IFR package, the IFR\r
opcode needs to be parsed. Most of code is taken from MdeModulePkg\Universal\SetupBrowserDxe\IfrParse.c.\r
+ This parser is simplified from the origianl IfrParser.c in the following way:\r
+\r
+ 1) All data structure definition that have nothing to do with IFR Default value scanning (\r
+ required to implement Framework HII's GetDefaultImage ()) is removed.\r
+ 2) Ignore the IFR opcode which is invalid for Form Package\r
+ generated using Framework VFR file.\r
\r
Copyright (c) 2008, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
#ifndef _HII_THUNK_UEFI_IFR_PARSER_\r
#define _HII_THUNK_UEFI_IFR_PARSER_\r
\r
-#include <PiDxe.h>\r
-\r
-#include <Protocol/Print.h>\r
-#include <Protocol/HiiConfigAccess.h>\r
-#include <Protocol/HiiConfigRouting.h>\r
-#include <Protocol/HiiDatabase.h>\r
-#include <Protocol/HiiString.h>\r
\r
//\r
// IFR relative definition\r
\r
extern EFI_GUID gTianoHiiIfrGuid;\r
\r
+#define ONE_OF_OPTION_MAP_ENTRY_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP_ENTRY, Link, ONE_OF_OPTION_MAP_ENTRY_SIGNATURE)\r
+#define ONE_OF_OPTION_MAP_ENTRY_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'M', 'E')\r
+typedef struct {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ UINT16 FwKey;\r
+ EFI_IFR_TYPE_VALUE Value;\r
+ \r
+} ONE_OF_OPTION_MAP_ENTRY;\r
+\r
+\r
+\r
+#define ONE_OF_OPTION_MAP_FROM_LINK(Record) CR(Record, ONE_OF_OPTION_MAP, Link, ONE_OF_OPTION_MAP_SIGNATURE)\r
+#define ONE_OF_OPTION_MAP_SIGNATURE EFI_SIGNATURE_32 ('O', 'O', 'O', 'M')\r
+typedef struct {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link; \r
+\r
+ UINT16 VarStoreId;\r
+\r
+ UINT8 ValueType; //EFI_IFR_TYPE_NUM_* \r
+\r
+ EFI_QUESTION_ID QuestionId;\r
+\r
+ LIST_ENTRY OneOfOptionMapEntryListHead; //ONE_OF_OPTION_MAP_ENTRY\r
+} ONE_OF_OPTION_MAP;\r
+\r
\r
typedef struct {\r
UINT8 Type;\r
\r
#define NAME_VALUE_NODE_SIGNATURE EFI_SIGNATURE_32 ('N', 'V', 'S', 'T')\r
\r
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
- CHAR16 *Name;\r
- CHAR16 *Value;\r
- CHAR16 *EditValue;\r
-} NAME_VALUE_NODE;\r
-\r
-#define NAME_VALUE_NODE_FROM_LINK(a) CR (a, NAME_VALUE_NODE, Link, NAME_VALUE_NODE_SIGNATURE)\r
-\r
#define FORMSET_STORAGE_SIGNATURE EFI_SIGNATURE_32 ('F', 'S', 'T', 'G')\r
\r
typedef struct {\r
\r
CHAR16 *Name; // For EFI_IFR_VARSTORE\r
UINT16 Size;\r
- UINT8 *Buffer;\r
- UINT8 *EditBuffer; // Edit copy for Buffer Storage\r
-\r
- LIST_ENTRY NameValueListHead; // List of NAME_VALUE_NODE\r
\r
UINT32 Attributes; // For EFI_IFR_VARSTORE_EFI: EFI Variable attribute\r
\r
- CHAR16 *ConfigHdr; // <ConfigHdr>\r
- CHAR16 *ConfigRequest; // <ConfigRequest> = <ConfigHdr> + <RequestElement>\r
- UINTN ElementCount; // Number of <RequestElement> in the <ConfigRequest>\r
- UINTN SpareStrLen; // Spare length of ConfigRequest string buffer\r
} FORMSET_STORAGE;\r
\r
#define FORMSET_STORAGE_FROM_LINK(a) CR (a, FORMSET_STORAGE, Link, FORMSET_STORAGE_SIGNATURE)\r
\r
+#if 0\r
+\r
#define EXPRESSION_OPCODE_SIGNATURE EFI_SIGNATURE_32 ('E', 'X', 'O', 'P')\r
\r
typedef struct {\r
} FORM_EXPRESSION;\r
\r
#define FORM_EXPRESSION_FROM_LINK(a) CR (a, FORM_EXPRESSION, Link, FORM_EXPRESSION_SIGNATURE)\r
+#endif\r
\r
#define QUESTION_DEFAULT_SIGNATURE EFI_SIGNATURE_32 ('Q', 'D', 'F', 'T')\r
\r
UINT16 DefaultId;\r
EFI_HII_VALUE Value; // Default value\r
\r
- FORM_EXPRESSION *ValueExpression; // Not-NULL indicates default value is provided by EFI_IFR_VALUE\r
} QUESTION_DEFAULT;\r
\r
#define QUESTION_DEFAULT_FROM_LINK(a) CR (a, QUESTION_DEFAULT, Link, QUESTION_DEFAULT_SIGNATURE)\r
EFI_HII_VALUE Value;\r
EFI_IMAGE_ID ImageId;\r
\r
+#if 0\r
FORM_EXPRESSION *SuppressExpression; // Non-NULL indicates nested inside of SuppressIf\r
+#endif\r
} QUESTION_OPTION;\r
\r
#define QUESTION_OPTION_FROM_LINK(a) CR (a, QUESTION_OPTION, Link, QUESTION_OPTION_SIGNATURE)\r
EFI_STRING_ID VarName;\r
UINT16 VarOffset;\r
} VarStoreInfo;\r
+#if 0\r
+ CHAR16 *UnicodeVarName;\r
+#endif\r
+ \r
UINT16 StorageWidth;\r
UINT8 QuestionFlags;\r
+\r
+#if 0\r
CHAR16 *VariableName; // Name/Value or EFI Variable name\r
CHAR16 *BlockName; // Buffer storage block name: "OFFSET=...WIDTH=..."\r
+#endif\r
\r
EFI_HII_VALUE HiiValue; // Edit copy for checkbox, numberic, oneof\r
UINT8 *BufferValue; // Edit copy for string, password, orderedlist\r
//\r
// Get from IFR parsing\r
//\r
+#if 0\r
FORM_EXPRESSION *ValueExpression; // nested EFI_IFR_VALUE, provide Question value and indicate Question is ReadOnly\r
+#endif\r
LIST_ENTRY DefaultListHead; // nested EFI_IFR_DEFAULT list (QUESTION_DEFAULT), provide default values\r
LIST_ENTRY OptionListHead; // nested EFI_IFR_ONE_OF_OPTION list (QUESTION_OPTION)\r
\r
UINT8 RefreshInterval; // nested EFI_IFR_REFRESH, refresh interval(in seconds) for Question value, 0 means no refresh\r
BOOLEAN InSubtitle; // nesting inside of EFI_IFR_SUBTITLE\r
\r
+#if 0\r
LIST_ENTRY InconsistentListHead;// nested inconsistent expression list (FORM_EXPRESSION)\r
LIST_ENTRY NoSubmitListHead; // nested nosubmit expression list (FORM_EXPRESSION)\r
FORM_EXPRESSION *GrayOutExpression; // nesting inside of GrayOutIf\r
FORM_EXPRESSION *SuppressExpression; // nesting inside of SuppressIf\r
+#endif\r
\r
} FORM_BROWSER_STATEMENT;\r
\r
\r
EFI_IMAGE_ID ImageId;\r
\r
+#if 0\r
LIST_ENTRY ExpressionListHead; // List of Expressions (FORM_EXPRESSION)\r
+#endif\r
LIST_ENTRY StatementListHead; // List of Statements and Questions (FORM_BROWSER_STATEMENT)\r
} FORM_BROWSER_FORM;\r
\r
\r
typedef struct {\r
EFI_HII_HANDLE HiiHandle;\r
- EFI_HANDLE DriverHandle;\r
- EFI_HII_CONFIG_ACCESS_PROTOCOL *ConfigAccess;\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
\r
UINTN IfrBinaryLength;\r
UINT8 *IfrBinaryData;\r
EFI_IMAGE_ID ImageId;\r
\r
FORM_BROWSER_STATEMENT *StatementBuffer; // Buffer for all Statements and Questions\r
+#if 0\r
EXPRESSION_OPCODE *ExpressionBuffer; // Buffer for all Expression OpCode\r
+#endif\r
\r
LIST_ENTRY StorageListHead; // Storage list (FORMSET_STORAGE)\r
LIST_ENTRY DefaultStoreListHead; // DefaultStore list (FORMSET_DEFAULTSTORE)\r
LIST_ENTRY FormListHead; // Form list (FORM_BROWSER_FORM)\r
-} FORM_BROWSER_FORMSET;\r
\r
+ LIST_ENTRY OneOfOptionMapListHead; //ONE_OF_OPTION_MAP\r
+\r
+ UINT16 MaxQuestionId;\r
+\r
+ //\r
+ // Added for Framework HII Thunk. \r
+ // Default Variable Storage built from a Framework VFR file using UEFI VFR Compiler in Compatibility mode is determined \r
+ // by priority rules defined in GetFormsetDefaultVarstoreId (). See the function description for details.\r
+ //\r
+ EFI_VARSTORE_ID DefaultVarStoreId;\r
+\r
+ UINTN NumberOfStatement;\r
+ \r
+} FORM_BROWSER_FORMSET;\r
\r
-EFI_STATUS\r
-EvaluateExpression (\r
- IN FORM_BROWSER_FORMSET *FormSet,\r
- IN FORM_BROWSER_FORM *Form,\r
- IN OUT FORM_EXPRESSION *Expression\r
- )\r
-;\r
\r
EFI_STATUS\r
ParseOpCodes (\r
IN FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
VOID\r
DestroyFormSet (\r
IN OUT FORM_BROWSER_FORMSET *FormSet\r
- )\r
-;\r
+ );\r
\r
#endif\r
\r