};\r
\r
\r
+EFI_GUID mTianoHiiIfrGuid = EFI_IFR_TIANO_GUID;\r
+\r
/**\r
\r
This thunk module only handles UEFI HII packages. The caller of this function \r
CopyMem (OutputFormSet, &FormSetTemplate, sizeof (FW_HII_FORMSET_TEMPLATE));\r
CopyMem (&OutputFormSet->FormSet.Guid, &ThunkContext->TagGuid, sizeof (EFI_GUID)); \r
\r
- OutputFormSet->FormSet.Class = ThunkContext->FormSetClass;\r
- OutputFormSet->FormSet.SubClass = ThunkContext->FormSetSubClass;\r
- OutputFormSet->FormSet.Help = ThunkContext->FormSetHelp;\r
- OutputFormSet->FormSet.FormSetTitle = ThunkContext->FormSetTitle;\r
+ if (ThunkContext->FormSet != NULL) {\r
+ OutputFormSet->FormSet.Class = ThunkContext->FormSet->Class;\r
+ OutputFormSet->FormSet.SubClass = ThunkContext->FormSet->SubClass;\r
+ OutputFormSet->FormSet.Help = ThunkContext->FormSet->Help;\r
+ OutputFormSet->FormSet.FormSetTitle = ThunkContext->FormSet->FormSetTitle;\r
+ }\r
\r
return EFI_SUCCESS;\r
}\r
)\r
{\r
LIST_ENTRY *UefiDefaults;\r
- EFI_HII_HANDLE UefiHiiHandle;\r
EFI_STATUS Status;\r
HII_THUNK_PRIVATE_DATA *Private;\r
+ HII_THUNK_CONTEXT *ThunkContext;\r
\r
Private = HII_THUNK_PRIVATE_DATA_FROM_THIS(This);\r
\r
- UefiHiiHandle = FwHiiHandleToUefiHiiHandle (Private, Handle);\r
- if (UefiHiiHandle == NULL) {\r
+ ThunkContext = FwHiiHandleToThunkContext (Private, Handle);\r
+ if (ThunkContext == NULL) {\r
ASSERT (FALSE);\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
UefiDefaults = NULL;\r
- Status = UefiIfrGetBufferTypeDefaults (UefiHiiHandle, &UefiDefaults);\r
+ Status = UefiIfrGetBufferTypeDefaults (ThunkContext, &UefiDefaults);\r
if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
\r
- Status = UefiDefaultsToFwDefaults (UefiDefaults, DefaultMask, VariablePackList);\r
+ Status = UefiDefaultsToFwDefaults (UefiDefaults, DefaultMask, ThunkContext->FormSet->DefaultVarStoreId, VariablePackList);\r
\r
Done:\r
FreeDefaultList (UefiDefaults);\r
}\r
\r
/**\r
- EDES_TODO: Add function description.\r
+ This function update the FormCallbackProtocol cached in Config Access\r
+ private context data.\r
\r
- @param CallbackHandle EDES_TODO: Add parameter description\r
- @param ThunkContext EDES_TODO: Add parameter description\r
+ @param CallbackHandle The EFI Handle on which the Framework FormCallbackProtocol is \r
+ installed.\r
+ @param ThunkContext The Thunk Context.\r
\r
- @return EDES_TODO: Add description for return value\r
+ @retval EFI_SUCCESS The update is successful.\r
+ @retval EFI_INVALID_PARAMETER If no Framework FormCallbackProtocol is located on CallbackHandle.\r
\r
**/\r
EFI_STATUS\r
\r
\r
/**\r
- EDES_TODO: Add function description.\r
+ Get the package data from the Package List.\r
\r
- @param HiiPackageList EDES_TODO: Add parameter description\r
- @param PackageIndex EDES_TODO: Add parameter description\r
- @param BufferLen EDES_TODO: Add parameter description\r
- @param Buffer EDES_TODO: Add parameter description\r
+ @param HiiPackageList Package List.\r
+ @param PackageIndex The index of the Package in the Package List.\r
+ @param BufferLen The Length of the Pacage data.\r
+ @param Buffer On output, the Package data.\r
\r
- @return EDES_TODO: Add description for return value\r
+ @return EFI_NOT_FOUND No Package is found for PackageIndex.\r
+ @return EFI_SUCCESS The package data is returned.\r
\r
**/\r
-STATIC\r
EFI_STATUS\r
GetPackageData (\r
IN EFI_HII_PACKAGE_LIST_HEADER *HiiPackageList,\r
}\r
\r
/**\r
- Check if Label exist in the IFR form package.\r
+ Check if Label exist in the IFR form package and return the FormSet GUID\r
+ and Form ID.\r
\r
- @param \r
+ @param Package The Package Header.\r
+ @param Label The Label ID.\r
+ @param FormsetGuid Returns the FormSet GUID.\r
+ @param FormId Returns the Form ID.\r
\r
+ @retval EFI_SUCCESS The FORM ID is found.\r
+ @retval EFI_NOT_FOUND The FORM ID is not found.\r
**/\r
EFI_STATUS\r
LocateLabel (\r
{\r
UINTN Offset;\r
EFI_IFR_OP_HEADER *IfrOpHdr;\r
- UINT8 ExtendOpCode;\r
- UINT16 LabelNumber;\r
EFI_GUID InternalFormSetGuid;\r
EFI_FORM_ID InternalFormId;\r
BOOLEAN GetFormSet;\r
BOOLEAN GetForm;\r
+ EFI_IFR_GUID_LABEL *LabelOpcode;\r
\r
IfrOpHdr = (EFI_IFR_OP_HEADER *)((UINT8 *) Package + sizeof (EFI_HII_PACKAGE_HEADER));\r
Offset = sizeof (EFI_HII_PACKAGE_HEADER);\r
break;\r
\r
case EFI_IFR_GUID_OP :\r
- ExtendOpCode = ((EFI_IFR_GUID_LABEL *) IfrOpHdr)->ExtendOpCode;\r
- \r
- if (ExtendOpCode != EFI_IFR_EXTEND_OP_LABEL) {\r
- //\r
- // Go to the next Op-Code\r
- //\r
- Offset += IfrOpHdr->Length;\r
- IfrOpHdr = (EFI_IFR_OP_HEADER *) ((CHAR8 *) (IfrOpHdr) + IfrOpHdr->Length);\r
- continue;\r
- }\r
- \r
- CopyMem (&LabelNumber, &((EFI_IFR_GUID_LABEL *)IfrOpHdr)->Number, sizeof (UINT16));\r
- if (LabelNumber == Label) {\r
- ASSERT (GetForm && GetFormSet);\r
- CopyGuid (FormsetGuid, &InternalFormSetGuid);\r
- *FormId = InternalFormId;\r
- return EFI_SUCCESS;\r
+ LabelOpcode = (EFI_IFR_GUID_LABEL *) IfrOpHdr;\r
+ //\r
+ // If it is an Label opcode.\r
+ //\r
+ if ((LabelOpcode->ExtendOpCode == EFI_IFR_EXTEND_OP_LABEL) && (CompareMem (&LabelOpcode->Guid, &mTianoHiiIfrGuid, sizeof (EFI_GUID)) == 0)) {\r
+ if (CompareMem (&Label, &LabelOpcode->Number, sizeof (UINT16)) == 0) {\r
+ ASSERT (GetForm && GetFormSet);\r
+ CopyGuid (FormsetGuid, &InternalFormSetGuid);\r
+ *FormId = InternalFormId;\r
+ return EFI_SUCCESS;\r
+ }\r
}\r
- \r
-\r
break;\r
default :\r
break;\r
\r
return Status;\r
}\r
+\r
/**\r
This function allows the caller to update a form that has\r
previously been registered with the EFI HII database.\r
if (Data->DataCount != 0) {\r
\r
ThunkContext = UefiHiiHandleToThunkContext (Private, UefiHiiHandle);\r
- Status = FwUpdateDataToUefiUpdateData (ThunkContext, Data, AddData, &UefiHiiUpdateData);\r
+ Status = FwUpdateDataToUefiUpdateData (ThunkContext, Data, &UefiHiiUpdateData);\r
ASSERT_EFI_ERROR (Status);\r
\r
- Status = IfrLibUpdateForm (UefiHiiHandle, &FormsetGuid, FormId, Label, AddData, UefiHiiUpdateData);\r
+ Status = IfrLibUpdateForm (UefiHiiHandle, &FormsetGuid, FormId, Label, TRUE, UefiHiiUpdateData);\r
ASSERT_EFI_ERROR (Status);\r
\r
} \r