#include <Protocol/DriverBinding.h>\r
#include <Protocol/DevicePathToText.h>\r
#include <Protocol/DevicePath.h>\r
+#include <Guid/MdeModuleHii.h>\r
\r
#include <Library/DevicePathLib.h>\r
#include <Library/BaseLib.h>\r
#include <Library/UefiApplicationEntryPoint.h>\r
#include <Library/UefiBootServicesTableLib.h>\r
#include <Library/PlatformDriverOverrideLib.h>\r
-#include <Library/HiiLib.h>\r
-#include <Library/IfrSupportLib.h>\r
-#include <Library/ExtendedIfrSupportLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
#include <Library/DevicePathLib.h>\r
+#include <Library/HiiLib.h>\r
+\r
#include "PlatOverMngr.h"\r
\r
#define EFI_CALLBACK_INFO_SIGNATURE SIGNATURE_32 ('C', 'l', 'b', 'k')\r
// module global data\r
//\r
EFI_GUID mPlatformOverridesManagerGuid = PLAT_OVER_MNGR_GUID;\r
+CHAR16 mVariableName[] = L"Data";\r
LIST_ENTRY mMappingDataBase = INITIALIZE_LIST_HEAD_VARIABLE (mMappingDataBase);\r
\r
EFI_HANDLE *mDevicePathHandleBuffer;\r
UINTN mSelectedDriverImageNum;\r
UINTN mLastSavedDriverImageNum;\r
UINT16 mCurrentPage;\r
+EFI_CALLBACK_INFO *mCallbackInfo;\r
\r
HII_VENDOR_DEVICE_PATH mHiiVendorDevicePath = {\r
{\r
(UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)\r
}\r
},\r
- //\r
- // {99936717-BF3D-4b04-9787-76CEE324D76F}\r
- //\r
- { 0x99936717, 0xbf3d, 0x4b04, { 0x97, 0x87, 0x76, 0xce, 0xe3, 0x24, 0xd7, 0x6f } }\r
+ EFI_CALLER_ID_GUID\r
},\r
{\r
END_DEVICE_PATH_TYPE,\r
IN PLAT_OVER_MNGR_DATA *FakeNvData\r
)\r
{\r
- EFI_HII_UPDATE_DATA UpdateData;\r
EFI_STATUS Status;\r
UINTN Index;\r
UINTN DevicePathHandleCount;\r
EFI_PCI_IO_PROTOCOL *PciIo;\r
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *BusSpecificDriverOverride;\r
UINTN Len;\r
- \r
+ VOID *StartOpCodeHandle;\r
+ VOID *EndOpCodeHandle;\r
+ EFI_IFR_GUID_LABEL *StartLabel;\r
+ EFI_IFR_GUID_LABEL *EndLabel; \r
+\r
//\r
- // set current page form ID.\r
+ // Set current page form ID.\r
//\r
mCurrentPage = FORM_ID_DEVICE; \r
\r
// Initial the mapping database in memory\r
//\r
FreeMappingDatabase (&mMappingDataBase);\r
- Status = InitOverridesMapping (&mMappingDataBase);\r
+ InitOverridesMapping (&mMappingDataBase);\r
\r
//\r
- // Clear all the content in the first page\r
+ // Init OpCode Handle\r
//\r
- UpdateData.BufferSize = UPDATE_DATA_SIZE;\r
- UpdateData.Offset = 0;\r
- UpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
- ASSERT (UpdateData.Data != NULL);\r
+ StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (StartOpCodeHandle != NULL);\r
+\r
+ EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (EndOpCodeHandle != NULL);\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the start opcode\r
+ //\r
+ StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ StartLabel->Number = FORM_ID_DEVICE;\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the end opcode\r
+ //\r
+ EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ EndLabel->Number = LABEL_END;\r
+\r
//\r
// Clear first page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_DEVICE,\r
- FORM_ID_DEVICE,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle, // Label FORM_ID_DEVICE\r
+ EndOpCodeHandle // LABEL_END\r
);\r
\r
//\r
// then the 'first refresh' string will be replaced by the 'refresh' string, and the two strings content are same after the replacement\r
//\r
NewStringToken = STRING_TOKEN (STR_FIRST_REFRESH);\r
- HiiLibGetStringFromHandle (Private->RegisteredHandle, STRING_TOKEN (STR_REFRESH), &NewString);\r
+ NewString = HiiGetString (Private->RegisteredHandle, STRING_TOKEN (STR_REFRESH), NULL);\r
ASSERT (NewString != NULL);\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, NewString);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (HiiSetString (Private->RegisteredHandle, NewStringToken, NewString, NULL) == 0) {\r
+ ASSERT (FALSE);\r
+ }\r
FreePool (NewString);\r
\r
NewStringToken = STRING_TOKEN (STR_FIRST_REFRESH_HELP);\r
- HiiLibGetStringFromHandle (Private->RegisteredHandle, STRING_TOKEN (STR_REFRESH_HELP), &NewString);\r
+ NewString = HiiGetString (Private->RegisteredHandle, STRING_TOKEN (STR_REFRESH_HELP), NULL);\r
ASSERT (NewString != NULL);\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, NewString);\r
- ASSERT_EFI_ERROR (Status);\r
+ if (HiiSetString (Private->RegisteredHandle, NewStringToken, NewString, NULL) == 0) {\r
+ ASSERT (FALSE);\r
+ }\r
FreePool (NewString);\r
\r
//\r
}\r
StrCat (NewString, ControllerName);\r
\r
- NewStringToken = mControllerToken[Index];\r
- if (NewStringToken == 0) {\r
- Status = HiiLibNewString (Private->RegisteredHandle, &NewStringToken, NewString);\r
- } else {\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, NewString);\r
- }\r
- ASSERT_EFI_ERROR (Status);\r
+ NewStringToken = HiiSetString (Private->RegisteredHandle, mControllerToken[Index], NewString, NULL);\r
+ ASSERT (NewStringToken != 0);\r
FreePool (NewString);\r
//\r
// Save the device path string toke for next access use\r
//\r
mControllerToken[Index] = NewStringToken;\r
-\r
- CreateGotoOpCode (\r
+ \r
+ HiiCreateGotoOpCode (\r
+ StartOpCodeHandle,\r
FORM_ID_DRIVER,\r
NewStringToken,\r
STRING_TOKEN (STR_GOTO_HELP_DRIVER),\r
EFI_IFR_FLAG_CALLBACK,\r
- (UINT16) (Index + KEY_VALUE_DEVICE_OFFSET),\r
- &UpdateData\r
+ (UINT16) (Index + KEY_VALUE_DEVICE_OFFSET)\r
);\r
}\r
\r
//\r
// Update first page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_DEVICE,\r
- FORM_ID_DEVICE,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle, // Label FORM_ID_DEVICE\r
+ EndOpCodeHandle // LABEL_END\r
);\r
\r
- FreePool (UpdateData.Data);\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ HiiFreeOpCodeHandle (EndOpCodeHandle);\r
+\r
return EFI_SUCCESS;\r
}\r
\r
IN PLAT_OVER_MNGR_DATA *FakeNvData\r
)\r
{\r
- EFI_HII_UPDATE_DATA UpdateData;\r
EFI_STATUS Status;\r
UINTN Index;\r
CHAR16 *NewString;\r
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;\r
EFI_BUS_SPECIFIC_DRIVER_OVERRIDE_PROTOCOL *BusSpecificDriverOverride;\r
EFI_HANDLE DriverBindingHandle;\r
+ VOID *StartOpCodeHandle;\r
+ VOID *EndOpCodeHandle;\r
+ EFI_IFR_GUID_LABEL *StartLabel;\r
+ EFI_IFR_GUID_LABEL *EndLabel;\r
\r
//\r
// If user select a controller item in the first page the following code will be run.\r
// Switch the item callback key value to its NO. in mDevicePathHandleBuffer\r
//\r
mSelectedCtrIndex = KeyValue - KEY_VALUE_DEVICE_OFFSET;\r
- ASSERT (mSelectedCtrIndex > 0 && mSelectedCtrIndex < MAX_CHOICE_NUM);\r
+ ASSERT (mSelectedCtrIndex < MAX_CHOICE_NUM);\r
\r
mLastSavedDriverImageNum = 0;\r
+\r
//\r
- // Clear all the content in dynamic page\r
+ // Init OpCode Handle\r
//\r
- UpdateData.BufferSize = UPDATE_DATA_SIZE;\r
- UpdateData.Offset = 0;\r
- UpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
- ASSERT (UpdateData.Data != NULL);\r
+ StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (StartOpCodeHandle != NULL);\r
+\r
+ EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (EndOpCodeHandle != NULL);\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the start opcode\r
+ //\r
+ StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ StartLabel->Number = FORM_ID_DRIVER;\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the end opcode\r
+ //\r
+ EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ EndLabel->Number = LABEL_END;\r
+\r
//\r
// Clear second page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_DRIVER,\r
- FORM_ID_DRIVER,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle,\r
+ EndOpCodeHandle\r
);\r
\r
//\r
//\r
// give a default name\r
//\r
- HiiLibGetStringFromHandle (Private->RegisteredHandle, STRING_TOKEN (STR_DRIVER_DEFAULT_NAME), &DriverName);\r
+ DriverName = HiiGetString (Private->RegisteredHandle, STRING_TOKEN (STR_DRIVER_DEFAULT_NAME), NULL);\r
ASSERT (DriverName != NULL);\r
FreeDriverName = TRUE; // the DriverName string need to free pool\r
}\r
mLastSavedDriverImageNum++;\r
}\r
StrCat (NewString, DriverName);\r
- NewStringToken = mDriverImageToken[Index];\r
- if (NewStringToken == 0) {\r
- Status = HiiLibNewString (Private->RegisteredHandle, &NewStringToken, NewString);\r
- } else {\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, NewString);\r
- }\r
+ NewStringToken = HiiSetString (Private->RegisteredHandle, mDriverImageToken[Index], NewString, NULL);\r
+ ASSERT (NewStringToken != 0);\r
mDriverImageToken[Index] = NewStringToken;\r
- ASSERT_EFI_ERROR (Status);\r
FreePool (NewString);\r
if (FreeDriverName) {\r
FreePool (DriverName);\r
NewString = AllocateZeroPool (StrSize (DriverName));\r
ASSERT (NewString != NULL); \r
StrCat (NewString, DriverName);\r
- NewStringHelpToken = mDriverImageFilePathToken[Index];\r
- if (NewStringHelpToken == 0) {\r
- Status = HiiLibNewString (Private->RegisteredHandle, &NewStringHelpToken, NewString);\r
- } else {\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringHelpToken, NewString);\r
- }\r
+ NewStringHelpToken = HiiSetString (Private->RegisteredHandle, mDriverImageFilePathToken[Index], NewString, NULL);\r
+ ASSERT (NewStringHelpToken != 0);\r
mDriverImageFilePathToken[Index] = NewStringHelpToken;\r
- ASSERT_EFI_ERROR (Status);\r
FreePool (NewString);\r
FreePool (DriverName);\r
\r
- CreateCheckBoxOpCode (\r
+ HiiCreateCheckBoxOpCode (\r
+ StartOpCodeHandle,\r
(UINT16) (DRIVER_SELECTION_QUESTION_ID + Index),\r
VARSTORE_ID_PLAT_OVER_MNGR,\r
(UINT16) (DRIVER_SELECTION_VAR_OFFSET + Index),\r
NewStringHelpToken,\r
0,\r
0,\r
- &UpdateData\r
+ NULL\r
);\r
}\r
\r
//\r
// Update second page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_DRIVER,\r
- FORM_ID_DRIVER,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle, // Label FORM_ID_DRIVER\r
+ EndOpCodeHandle // LABEL_END\r
);\r
\r
- FreePool (UpdateData.Data);\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ HiiFreeOpCodeHandle (EndOpCodeHandle);\r
return EFI_SUCCESS;\r
}\r
\r
IN PLAT_OVER_MNGR_DATA *FakeNvData\r
)\r
{\r
- EFI_HII_UPDATE_DATA UpdateData;\r
UINTN Index;\r
EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;\r
- IFR_OPTION *IfrOptionList;\r
UINTN SelectedDriverImageNum;\r
UINT32 DriverImageNO;\r
UINTN MinNO;\r
UINTN Index1;\r
UINTN TempNO[100];\r
+ UINTN OrderNO[100];\r
+ VOID *StartOpCodeHandle;\r
+ VOID *EndOpCodeHandle;\r
+ VOID *OptionsOpCodeHandle;\r
+ EFI_IFR_GUID_LABEL *StartLabel;\r
+ EFI_IFR_GUID_LABEL *EndLabel;\r
\r
//\r
// Following code will be run if user select 'order ... priority' item in second page\r
//\r
mCurrentPage = FORM_ID_ORDER;\r
\r
- UpdateData.BufferSize = UPDATE_DATA_SIZE;\r
- UpdateData.Offset = 0;\r
- UpdateData.Data = AllocateZeroPool (UPDATE_DATA_SIZE);\r
- ASSERT (UpdateData.Data != NULL);\r
+ //\r
+ // Init OpCode Handle\r
+ //\r
+ StartOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (StartOpCodeHandle != NULL);\r
+\r
+ EndOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (EndOpCodeHandle != NULL);\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the start opcode\r
+ //\r
+ StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ StartLabel->Number = FORM_ID_ORDER;\r
+\r
+ //\r
+ // Create Hii Extend Label OpCode as the end opcode\r
+ //\r
+ EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL));\r
+ EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL;\r
+ EndLabel->Number = LABEL_END;\r
+\r
//\r
// Clear third page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_ORDER,\r
- FORM_ID_ORDER,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle,\r
+ EndOpCodeHandle\r
);\r
\r
//\r
if (SelectedDriverImageNum == 0) {\r
return EFI_SUCCESS;\r
}\r
- \r
- IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * mSelectedDriverImageNum);\r
- ASSERT (IfrOptionList != NULL);\r
+\r
+ OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
+ ASSERT (OptionsOpCodeHandle != NULL);\r
+\r
//\r
// Create order list for those selected drivers\r
//\r
SelectedDriverImageNum = 0;\r
for (Index = 0; Index < mDriverImageHandleCount; Index++) {\r
if (FakeNvData->DriSelection[Index] != 0) {\r
- IfrOptionList[SelectedDriverImageNum].StringToken = mDriverImageToken[Index];\r
//\r
// Use the NO. in driver binding buffer as value, will use it later\r
//\r
- IfrOptionList[SelectedDriverImageNum].Value.u8 = (UINT8) (Index + 1);\r
- IfrOptionList[SelectedDriverImageNum].Flags = 0;\r
+ HiiCreateOneOfOptionOpCode (\r
+ OptionsOpCodeHandle,\r
+ mDriverImageToken[Index],\r
+ 0,\r
+ EFI_IFR_NUMERIC_SIZE_1,\r
+ Index + 1\r
+ );\r
\r
//\r
// Get the EFI Loaded Image Device Path Protocol\r
mLastSavedDriverImageNum++;\r
}\r
TempNO[SelectedDriverImageNum] = DriverImageNO;\r
+ OrderNO[SelectedDriverImageNum] = Index + 1;\r
SelectedDriverImageNum ++;\r
}\r
}\r
//\r
// the IfrOptionList[MinNO].Value = the driver NO. in driver binding buffer\r
//\r
- FakeNvData->DriOrder[Index] =IfrOptionList[MinNO].Value.u8;\r
+ FakeNvData->DriOrder[Index] = (UINT8) OrderNO[MinNO];\r
TempNO[MinNO] = MAX_CHOICE_NUM + 1;\r
}\r
-\r
- CreateOrderedListOpCode (\r
+ \r
+ //\r
+ // Create Order List OpCode\r
+ //\r
+ HiiCreateOrderedListOpCode (\r
+ StartOpCodeHandle,\r
(UINT16) DRIVER_ORDER_QUESTION_ID,\r
VARSTORE_ID_PLAT_OVER_MNGR,\r
(UINT16) DRIVER_ORDER_VAR_OFFSET,\r
0,\r
EFI_IFR_NUMERIC_SIZE_1,\r
(UINT8) MAX_CHOICE_NUM,\r
- IfrOptionList,\r
- SelectedDriverImageNum,\r
- &UpdateData\r
+ OptionsOpCodeHandle,\r
+ NULL\r
);\r
\r
//\r
// Update third page form\r
//\r
- IfrLibUpdateForm (\r
+ HiiUpdateForm (\r
Private->RegisteredHandle,\r
&mPlatformOverridesManagerGuid,\r
FORM_ID_ORDER,\r
- FORM_ID_ORDER,\r
- FALSE,\r
- &UpdateData\r
+ StartOpCodeHandle, // Label FORM_ID_ORDER\r
+ EndOpCodeHandle // LABEL_END\r
);\r
\r
- FreePool (IfrOptionList);\r
- FreePool (UpdateData.Data);\r
+ HiiFreeOpCodeHandle (StartOpCodeHandle);\r
+ HiiFreeOpCodeHandle (EndOpCodeHandle);\r
+ HiiFreeOpCodeHandle (OptionsOpCodeHandle);\r
+\r
return EFI_SUCCESS;\r
}\r
\r
EFI_STATUS Status;\r
EFI_CALLBACK_INFO *Private;\r
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;\r
-\r
+ \r
if (Request == NULL) {\r
return EFI_NOT_FOUND;\r
}\r
)\r
{\r
EFI_CALLBACK_INFO *Private;\r
- EFI_STATUS Status;\r
UINT16 KeyValue;\r
- UINTN BufferSize;\r
PLAT_OVER_MNGR_DATA *FakeNvData;\r
\r
- Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-\r
- FakeNvData = &Private->FakeNvData;\r
- BufferSize = sizeof (PLAT_OVER_MNGR_DATA);\r
- Status = GetBrowserData (NULL, NULL, &BufferSize, (UINT8 *) FakeNvData);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
+ FakeNvData = (PLAT_OVER_MNGR_DATA *) HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA));\r
+ if (FakeNvData == NULL) {\r
+ return EFI_NOT_FOUND;\r
}\r
\r
if (mCurrentPage == FORM_ID_DRIVER) {\r
KeyValue = KEY_VALUE_ORDER_SAVE_AND_EXIT;\r
CommintChanges (Private, KeyValue, FakeNvData);\r
}\r
+\r
+ if (FakeNvData != NULL) {\r
+ FreePool (FakeNvData);\r
+ }\r
+\r
return EFI_SUCCESS;\r
}\r
\r
EFI_CALLBACK_INFO *Private;\r
EFI_STATUS Status;\r
EFI_STRING_ID NewStringToken;\r
- UINTN BufferSize;\r
- PLAT_OVER_MNGR_DATA *FakeNvData;\r
EFI_INPUT_KEY Key;\r
-\r
+ PLAT_OVER_MNGR_DATA *FakeNvData;\r
+ \r
Private = EFI_CALLBACK_INFO_FROM_THIS (This);\r
-\r
- FakeNvData = &Private->FakeNvData;\r
- BufferSize = sizeof (PLAT_OVER_MNGR_DATA);\r
- Status = GetBrowserData (NULL, NULL, &BufferSize, (UINT8 *) FakeNvData);\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
+ FakeNvData = (PLAT_OVER_MNGR_DATA *) HiiGetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA));\r
+ if (FakeNvData == NULL) {\r
+ return EFI_NOT_FOUND;\r
}\r
\r
if (KeyValue == KEY_VALUE_DEVICE_REFRESH ||\r
// Update page title string\r
//\r
NewStringToken = STRING_TOKEN (STR_TITLE);\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path");\r
- ASSERT_EFI_ERROR (Status);\r
+ if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"First, Select the controller by device path", NULL) == 0) {\r
+ ASSERT (FALSE);\r
+ }\r
}\r
\r
if (((KeyValue >= KEY_VALUE_DEVICE_OFFSET) && (KeyValue < KEY_VALUE_DEVICE_MAX)) || (KeyValue == KEY_VALUE_ORDER_GOTO_PREVIOUS)) {\r
// Update page title string\r
//\r
NewStringToken = STRING_TOKEN (STR_TITLE);\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller");\r
- ASSERT_EFI_ERROR (Status);\r
+ if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Second, Select drivers for the previous selected controller", NULL) == 0) {\r
+ ASSERT (FALSE);\r
+ }\r
}\r
\r
if (KeyValue == KEY_VALUE_DRIVER_GOTO_ORDER) {\r
// Update page title string\r
//\r
NewStringToken = STRING_TOKEN (STR_TITLE);\r
- Status = HiiLibSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them");\r
- ASSERT_EFI_ERROR (Status);\r
+ if (HiiSetString (Private->RegisteredHandle, NewStringToken, L"Finally, Set the priority order for the drivers and save them", NULL) == 0) {\r
+ ASSERT (FALSE);\r
+ }\r
}\r
\r
if (KeyValue == KEY_VALUE_ORDER_SAVE_AND_EXIT) {\r
Status = CommintChanges (Private, KeyValue, FakeNvData);\r
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_SUBMIT;\r
- if (!EFI_ERROR (Status)) {\r
+ if (EFI_ERROR (Status)) {\r
CreatePopUp (EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, &Key, L"Single Override Info too large, Saving Error!", NULL);\r
return EFI_DEVICE_ERROR;\r
}\r
//\r
// Pass changed uncommitted data back to Form Browser\r
//\r
- BufferSize = sizeof (PLAT_OVER_MNGR_DATA);\r
- Status = SetBrowserData (NULL, NULL, BufferSize, (UINT8 *) FakeNvData, NULL);\r
+ HiiSetBrowserData (&mPlatformOverridesManagerGuid, mVariableName, sizeof (PLAT_OVER_MNGR_DATA), (UINT8 *) FakeNvData, NULL);\r
+ \r
+ //\r
+ // Update local configuration buffer.\r
+ //\r
+ CopyMem (&Private->FakeNvData, FakeNvData, sizeof (PLAT_OVER_MNGR_DATA));\r
+ if (FakeNvData != NULL) {\r
+ FreePool (FakeNvData);\r
+ }\r
\r
return EFI_SUCCESS;\r
}\r
)\r
{\r
EFI_STATUS Status;\r
- EFI_HII_DATABASE_PROTOCOL *HiiDatabase;\r
- EFI_HII_PACKAGE_LIST_HEADER *PackageList;\r
- EFI_CALLBACK_INFO *CallbackInfo;\r
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;\r
\r
- //\r
- // There should only be one HII protocol\r
- //\r
- Status = gBS->LocateProtocol (\r
- &gEfiHiiDatabaseProtocolGuid,\r
- NULL,\r
- (VOID **) &HiiDatabase\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
//\r
// There should only be one Form Configuration protocol\r
//\r
return Status;\r
}\r
\r
- CallbackInfo = AllocateZeroPool (sizeof (EFI_CALLBACK_INFO));\r
- if (CallbackInfo == NULL) {\r
+ mCallbackInfo = AllocateZeroPool (sizeof (EFI_CALLBACK_INFO));\r
+ if (mCallbackInfo == NULL) {\r
return EFI_BAD_BUFFER_SIZE;\r
}\r
\r
- CallbackInfo->Signature = EFI_CALLBACK_INFO_SIGNATURE;\r
- CallbackInfo->ConfigAccess.ExtractConfig = PlatOverMngrExtractConfig;\r
- CallbackInfo->ConfigAccess.RouteConfig = PlatOverMngrRouteConfig;\r
- CallbackInfo->ConfigAccess.Callback = PlatOverMngrCallback;\r
+ mCallbackInfo->Signature = EFI_CALLBACK_INFO_SIGNATURE;\r
+ mCallbackInfo->ConfigAccess.ExtractConfig = PlatOverMngrExtractConfig;\r
+ mCallbackInfo->ConfigAccess.RouteConfig = PlatOverMngrRouteConfig;\r
+ mCallbackInfo->ConfigAccess.Callback = PlatOverMngrCallback;\r
\r
//\r
// Install Device Path Protocol and Config Access protocol to driver handle\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &CallbackInfo->DriverHandle,\r
+ &mCallbackInfo->DriverHandle,\r
&gEfiDevicePathProtocolGuid,\r
&mHiiVendorDevicePath,\r
&gEfiHiiConfigAccessProtocolGuid,\r
- &CallbackInfo->ConfigAccess,\r
+ &mCallbackInfo->ConfigAccess,\r
NULL\r
);\r
if (EFI_ERROR (Status)) {\r
//\r
// Publish our HII data\r
//\r
- PackageList = HiiLibPreparePackageList (\r
- 2,\r
- &mPlatformOverridesManagerGuid,\r
- VfrBin,\r
- PlatOverMngrStrings\r
- );\r
- ASSERT (PackageList != NULL);\r
-\r
- Status = HiiDatabase->NewPackageList (\r
- HiiDatabase,\r
- PackageList,\r
- CallbackInfo->DriverHandle,\r
- &CallbackInfo->RegisteredHandle\r
- );\r
- FreePool (PackageList);\r
-\r
- if (EFI_ERROR (Status)) {\r
+ mCallbackInfo->RegisteredHandle = HiiAddPackages (\r
+ &mPlatformOverridesManagerGuid,\r
+ mCallbackInfo->DriverHandle,\r
+ VfrBin,\r
+ PlatOverMngrStrings,\r
+ NULL\r
+ );\r
+ if (mCallbackInfo->RegisteredHandle == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
goto Finish;\r
}\r
\r
Status = gBS->LocateProtocol (\r
&gEfiHiiConfigRoutingProtocolGuid,\r
NULL,\r
- (VOID **) &CallbackInfo->HiiConfigRouting\r
+ (VOID **) &mCallbackInfo->HiiConfigRouting\r
);\r
if (EFI_ERROR (Status)) {\r
goto Finish;\r
//\r
Status = FormBrowser2->SendForm (\r
FormBrowser2,\r
- &CallbackInfo->RegisteredHandle,\r
+ &mCallbackInfo->RegisteredHandle,\r
1,\r
NULL,\r
0,\r
NULL,\r
NULL\r
);\r
- if (EFI_ERROR (Status)) {\r
- goto Finish;\r
- }\r
\r
- Status = HiiDatabase->RemovePackageList (HiiDatabase, CallbackInfo->RegisteredHandle);\r
- if (EFI_ERROR (Status)) {\r
- goto Finish;\r
- }\r
- \r
- return EFI_SUCCESS;\r
+ HiiRemovePackages (mCallbackInfo->RegisteredHandle);\r
+ Status = EFI_SUCCESS;\r
\r
Finish:\r
- if (CallbackInfo->DriverHandle != NULL) {\r
+ if (mCallbackInfo->DriverHandle != NULL) {\r
gBS->UninstallMultipleProtocolInterfaces (\r
- CallbackInfo->DriverHandle,\r
+ mCallbackInfo->DriverHandle,\r
&gEfiDevicePathProtocolGuid,\r
&mHiiVendorDevicePath,\r
&gEfiHiiConfigAccessProtocolGuid,\r
- &CallbackInfo->ConfigAccess,\r
+ &mCallbackInfo->ConfigAccess,\r
NULL\r
);\r
}\r
- if (CallbackInfo != NULL) {\r
- FreePool (CallbackInfo);\r
+\r
+ if (mCallbackInfo != NULL) {\r
+ FreePool (mCallbackInfo);\r
}\r
\r
return Status;\r