\r
UINT16 mStatementIndex;\r
UINT16 mExpressionOpCodeIndex;\r
-\r
+EFI_QUESTION_ID mUsedQuestionId;\r
BOOLEAN mInScopeSubtitle;\r
extern LIST_ENTRY gBrowserStorageList;\r
/**\r
\r
if (Form == NULL) {\r
//\r
- // We are currently not in a Form Scope, so just skip this Statement\r
+ // Only guid op may out side the form level.\r
//\r
- return NULL;\r
+ ASSERT (((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode == EFI_IFR_GUID_OP);\r
}\r
\r
Statement = &FormSet->StatementBuffer[mStatementIndex];\r
Statement->Signature = FORM_BROWSER_STATEMENT_SIGNATURE;\r
\r
Statement->Operand = ((EFI_IFR_OP_HEADER *) OpCodeData)->OpCode;\r
+ Statement->OpCode = (EFI_IFR_OP_HEADER *) OpCodeData;\r
\r
StatementHdr = (EFI_IFR_STATEMENT_HEADER *) (OpCodeData + sizeof (EFI_IFR_OP_HEADER));\r
CopyMem (&Statement->Prompt, &StatementHdr->Prompt, sizeof (EFI_STRING_ID));\r
//\r
// Insert this Statement into current Form\r
//\r
- InsertTailList (&Form->StatementListHead, &Statement->Link);\r
-\r
+ if (Form == NULL) {\r
+ InsertTailList (&FormSet->StatementListOSF, &Statement->Link);\r
+ } else {\r
+ InsertTailList (&Form->StatementListHead, &Statement->Link);\r
+ }\r
return Statement;\r
}\r
\r
CountOpCodes (FormSet, &NumberOfStatement, &NumberOfExpression);\r
\r
mStatementIndex = 0;\r
+ mUsedQuestionId = 1;\r
FormSet->StatementBuffer = AllocateZeroPool (NumberOfStatement * sizeof (FORM_BROWSER_STATEMENT));\r
if (FormSet->StatementBuffer == NULL) {\r
return EFI_OUT_OF_RESOURCES;\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
+ InitializeListHead (&FormSet->StatementListOSF);\r
InitializeListHead (&FormSet->StorageListHead);\r
InitializeListHead (&FormSet->DefaultStoreListHead);\r
InitializeListHead (&FormSet->FormListHead);\r
InitializeListHead (&CurrentForm->ConfigRequestHead);\r
\r
CurrentForm->FormType = STANDARD_MAP_FORM_TYPE;\r
- CurrentForm->NvUpdateRequired = FALSE;\r
CopyMem (&CurrentForm->FormId, &((EFI_IFR_FORM *) OpCodeData)->FormId, sizeof (UINT16));\r
CopyMem (&CurrentForm->FormTitle, &((EFI_IFR_FORM *) OpCodeData)->FormTitle, sizeof (EFI_STRING_ID));\r
\r
CurrentForm = AllocateZeroPool (sizeof (FORM_BROWSER_FORM));\r
ASSERT (CurrentForm != NULL);\r
CurrentForm->Signature = FORM_BROWSER_FORM_SIGNATURE;\r
- CurrentForm->NvUpdateRequired = FALSE;\r
InitializeListHead (&CurrentForm->ExpressionListHead);\r
InitializeListHead (&CurrentForm->StatementListHead);\r
InitializeListHead (&CurrentForm->ConfigRequestHead);\r
ASSERT (CurrentStatement != NULL);\r
\r
CurrentStatement->Flags = ((EFI_IFR_SUBTITLE *) OpCodeData)->Flags;\r
-\r
+ CurrentStatement->FakeQuestionId = mUsedQuestionId++;\r
if (Scope != 0) {\r
mInScopeSubtitle = TRUE;\r
}\r
case EFI_IFR_TEXT_OP:\r
CurrentStatement = CreateStatement (OpCodeData, FormSet, CurrentForm);\r
ASSERT (CurrentStatement != NULL);\r
-\r
+ CurrentStatement->FakeQuestionId = mUsedQuestionId++;\r
CopyMem (&CurrentStatement->TextTwo, &((EFI_IFR_TEXT *) OpCodeData)->TextTwo, sizeof (EFI_STRING_ID));\r
break;\r
\r
case EFI_IFR_RESET_BUTTON_OP:\r
CurrentStatement = CreateStatement (OpCodeData, FormSet, CurrentForm);\r
ASSERT (CurrentStatement != NULL);\r
+ CurrentStatement->FakeQuestionId = mUsedQuestionId++;\r
CopyMem (&CurrentStatement->DefaultId, &((EFI_IFR_RESET_BUTTON *) OpCodeData)->DefaultId, sizeof (EFI_DEFAULT_ID));\r
break;\r
\r
CurrentOption = AllocateZeroPool (sizeof (QUESTION_OPTION));\r
ASSERT (CurrentOption != NULL);\r
CurrentOption->Signature = QUESTION_OPTION_SIGNATURE;\r
+ CurrentOption->OpCode = (EFI_IFR_ONE_OF_OPTION *) OpCodeData;\r
\r
CurrentOption->Flags = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Flags;\r
CurrentOption->Value.Type = ((EFI_IFR_ONE_OF_OPTION *) OpCodeData)->Type;\r
//\r
// Vendor specific\r
//\r
- case EFI_IFR_GUID_OP:\r
- if (CompareGuid (&gEfiIfrTianoGuid, (EFI_GUID *)(OpCodeData + sizeof (EFI_IFR_OP_HEADER)))) {\r
- //\r
- // Tiano specific GUIDed opcodes\r
- //\r
- switch (((EFI_IFR_GUID_LABEL *) OpCodeData)->ExtendOpCode) {\r
- case EFI_IFR_EXTEND_OP_LABEL:\r
- //\r
- // just ignore label\r
- //\r
- break;\r
-\r
- case EFI_IFR_EXTEND_OP_BANNER:\r
- //\r
- // By SubClass to get Banner Data from Front Page\r
- //\r
- if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) {\r
- CopyMem (\r
- &gBannerData->Banner[((EFI_IFR_GUID_BANNER *) OpCodeData)->LineNumber][\r
- ((EFI_IFR_GUID_BANNER *) OpCodeData)->Alignment],\r
- &((EFI_IFR_GUID_BANNER *) OpCodeData)->Title,\r
- sizeof (EFI_STRING_ID)\r
- );\r
- }\r
- break;\r
-\r
- case EFI_IFR_EXTEND_OP_CLASS:\r
- CopyMem (&FormSet->Class, &((EFI_IFR_GUID_CLASS *) OpCodeData)->Class, sizeof (UINT16));\r
- break;\r
-\r
- case EFI_IFR_EXTEND_OP_SUBCLASS:\r
- CopyMem (&FormSet->SubClass, &((EFI_IFR_GUID_SUBCLASS *) OpCodeData)->SubClass, sizeof (UINT16));\r
- break;\r
-\r
- default:\r
- break;\r
- }\r
- }\r
-\r
+ case EFI_IFR_GUID_OP: \r
+ CurrentStatement = CreateStatement (OpCodeData, FormSet, CurrentForm);\r
break;\r
\r
//\r