EFI_HII_STRING_PROTOCOL *mHiiString;\r
EFI_HII_CONFIG_ROUTING_PROTOCOL *mHiiConfigRouting;\r
\r
-BANNER_DATA *BannerData;\r
-EFI_HII_HANDLE FrontPageHandle;\r
+BANNER_DATA *gBannerData;\r
+EFI_HII_HANDLE gFrontPageHandle;\r
UINTN gClassOfVfr;\r
UINTN gFunctionKeySetting;\r
BOOLEAN gResetRequired;\r
CHAR16 *gSaveChanges;\r
CHAR16 *gOptionMismatch;\r
\r
+CHAR16 *mUnknownString = L"!";\r
+\r
CHAR16 gPromptBlockWidth;\r
CHAR16 gOptionBlockWidth;\r
CHAR16 gHelpBlockWidth;\r
InitializeBrowserStrings ();\r
\r
gFunctionKeySetting = DEFAULT_FUNCTION_KEY_SETTING;\r
- gClassOfVfr = EFI_SETUP_APPLICATION_SUBCLASS;\r
+ gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;\r
\r
//\r
// Ensure we are in Text mode\r
//\r
// Initialize Driver private data\r
//\r
- BannerData = AllocateZeroPool (sizeof (BANNER_DATA));\r
- ASSERT (BannerData != NULL);\r
+ gBannerData = AllocateZeroPool (sizeof (BANNER_DATA));\r
+ ASSERT (gBannerData != NULL);\r
\r
//\r
// Install FormBrowser2 protocol\r
EFI_STRING String;\r
\r
String = HiiGetString (HiiHandle, Token, NULL);\r
- ASSERT (String != NULL);\r
+ if (String == NULL) {\r
+ String = AllocateCopyPool (sizeof (mUnknownString), mUnknownString);\r
+ ASSERT (String != NULL);\r
+ }\r
return (CHAR16 *) String;\r
}\r
\r
QUESTION_OPTION *Option;\r
EFI_HII_VALUE *HiiValue;\r
UINT8 Index;\r
+ EFI_STRING StrValue;\r
\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
+ StrValue = NULL;\r
\r
//\r
// Statement don't have storage, skip them\r
CopyMem (HiiValue, &Default->Value, sizeof (EFI_HII_VALUE));\r
}\r
\r
+ if (HiiValue->Type == EFI_IFR_TYPE_STRING) {\r
+ StrValue = HiiGetString (FormSet->HiiHandle, HiiValue->Value.string, NULL);\r
+ if (StrValue == NULL) {\r
+ return EFI_NOT_FOUND;\r
+ }\r
+ Question->BufferValue = AllocateCopyPool (StrSize (StrValue), StrValue);\r
+ }\r
+\r
return EFI_SUCCESS;\r
}\r
\r
// For Questions without default\r
//\r
switch (Question->Operand) {\r
- case EFI_IFR_NUMERIC_OP:\r
- //\r
- // Take minimal value as numeric's default value\r
- //\r
- HiiValue->Value.u64 = Question->Minimum;\r
- break;\r
-\r
case EFI_IFR_ONE_OF_OP:\r
//\r
// Take first oneof option as oneof's default value\r
//\r
- Link = GetFirstNode (&Question->OptionListHead);\r
- if (!IsNull (&Question->OptionListHead, Link)) {\r
- Option = QUESTION_OPTION_FROM_LINK (Link);\r
- CopyMem (HiiValue, &Option->Value, sizeof (EFI_HII_VALUE));\r
+ if (ValueToOption (Question, HiiValue) == NULL) { \r
+ Link = GetFirstNode (&Question->OptionListHead);\r
+ if (!IsNull (&Question->OptionListHead, Link)) {\r
+ Option = QUESTION_OPTION_FROM_LINK (Link);\r
+ CopyMem (HiiValue, &Option->Value, sizeof (EFI_HII_VALUE));\r
+ }\r
}\r
break;\r
\r
Link = GetNextNode (&Form->StatementListHead, Link);\r
\r
//\r
- // If Question is suppressed, don't reset it to default\r
+ // If Question is disabled, don't reset it to default\r
//\r
- if (Question->SuppressExpression != NULL) {\r
- Status = EvaluateExpression (FormSet, Form, Question->SuppressExpression);\r
- if (!EFI_ERROR (Status) && Question->SuppressExpression->Result.Value.b) {\r
+ if (Question->DisableExpression != NULL) {\r
+ Status = EvaluateExpression (FormSet, Form, Question->DisableExpression);\r
+ if (!EFI_ERROR (Status) && Question->DisableExpression->Result.Value.b) {\r
continue;\r
}\r
}\r
BOOLEAN ReturnDefault;\r
UINT32 PackageListLength;\r
EFI_HII_PACKAGE_HEADER PackageHeader;\r
+ UINT8 Index;\r
+ UINT8 NumberOfClassGuid;\r
+ BOOLEAN IsSetupClassGuid;\r
+ EFI_GUID *ClassGuid;\r
\r
OpCodeData = NULL;\r
Package = NULL;\r
// Check whether return default FormSet\r
//\r
if (ReturnDefault) {\r
- break;\r
+ //\r
+ // Check ClassGuid of formset OpCode\r
+ //\r
+ IsSetupClassGuid = FALSE;\r
+ NumberOfClassGuid = (UINT8) (((EFI_IFR_FORM_SET *) OpCodeData)->Flags & 0x3);\r
+ ClassGuid = (EFI_GUID *) (OpCodeData + sizeof (EFI_IFR_FORM_SET));\r
+ for (Index = 0; Index < NumberOfClassGuid; Index++) {\r
+ if (CompareGuid (ClassGuid + Index, &gEfiHiiPlatformSetupFormsetGuid)) {\r
+ IsSetupClassGuid = TRUE;\r
+ break;\r
+ }\r
+ }\r
+ if (IsSetupClassGuid) {\r
+ break;\r
+ }\r
}\r
\r
//\r
return Status;\r
}\r
\r
- gClassOfVfr = FormSet->SubClass;\r
- if (gClassOfVfr == EFI_FRONT_PAGE_SUBCLASS) {\r
- FrontPageHandle = FormSet->HiiHandle;\r
+ gClassOfVfr = FORMSET_CLASS_PLATFORM_SETUP;\r
+ if (FormSet->SubClass == EFI_FRONT_PAGE_SUBCLASS) {\r
+ gClassOfVfr = FORMSET_CLASS_FRONT_PAGE;\r
+ gFrontPageHandle = FormSet->HiiHandle;\r
}\r
\r
//\r