From 7e3bcccb0eed449e95c18b01ae8cbace1a759d01 Mon Sep 17 00:00:00 2001 From: lgao4 Date: Mon, 13 Apr 2009 06:05:15 +0000 Subject: Update UefiHiiLib to support new defined IFR related HII APIs. Apply new defined IFR related HII APIs in PlatOverMngr, DriverSample, IScsiDxe and Setup drivers. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8066 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Universal/Network/IScsiDxe/IScsiConfig.c | 74 ++++++++++++++-------- .../Universal/Network/IScsiDxe/IScsiConfig.h | 3 +- .../Universal/Network/IScsiDxe/IScsiConfigDxe.vfr | 2 - .../Network/IScsiDxe/IScsiConfigNVDataStruc.h | 1 + .../Universal/Network/IScsiDxe/IScsiDxe.inf | 3 +- 5 files changed, 50 insertions(+), 33 deletions(-) (limited to 'MdeModulePkg/Universal/Network/IScsiDxe') diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c index 34942f752a..76068e573e 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.c @@ -15,6 +15,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "IScsiImpl.h" EFI_GUID mVendorGuid = ISCSI_CONFIG_GUID; +CHAR16 mVendorStorageName[] = L"ISCSI_CONFIG_IFR_NVDATA"; BOOLEAN mIScsiDeviceListUpdated = FALSE; UINTN mNumberOfIScsiDevices = 0; ISCSI_FORM_CALLBACK_INFO *mCallbackInfo = NULL; @@ -504,14 +505,12 @@ IScsiFormCallback ( // // Retrive uncommitted data from Browser // - BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); - IfrNvData = AllocateZeroPool (BufferSize); - ASSERT (IfrNvData != NULL); - Status = GetBrowserData (NULL, NULL, &BufferSize, (UINT8 *) IfrNvData); - if (EFI_ERROR (Status)) { - gBS->FreePool (IfrNvData); - return Status; + IfrNvData = (ISCSI_CONFIG_IFR_NVDATA *) HiiGetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA)); + if (IfrNvData == NULL) { + return EFI_NOT_FOUND; } + + Status = EFI_SUCCESS; switch (QuestionId) { case KEY_INITIATOR_NAME: @@ -730,11 +729,10 @@ IScsiFormCallback ( // // Pass changed uncommitted data back to Form Browser // - BufferSize = sizeof (ISCSI_CONFIG_IFR_NVDATA); - Status = SetBrowserData (NULL, NULL, BufferSize, (UINT8 *) IfrNvData, NULL); + HiiSetBrowserData (&mVendorGuid, mVendorStorageName, sizeof (ISCSI_CONFIG_IFR_NVDATA), (UINT8 *) IfrNvData, NULL); } - gBS->FreePool (IfrNvData); + FreePool (IfrNvData); return Status; } @@ -761,12 +759,14 @@ IScsiConfigUpdateForm ( ISCSI_CONFIG_FORM_ENTRY *ConfigFormEntry; BOOLEAN EntryExisted; EFI_STATUS Status; - EFI_HII_UPDATE_DATA UpdateData; EFI_SIMPLE_NETWORK_PROTOCOL *Snp; CHAR16 PortString[128]; UINT16 FormIndex; UINTN BufferSize; - + VOID *StartOpCodeHandle; + VOID *EndOpCodeHandle; + EFI_IFR_GUID_LABEL *StartLabel; + EFI_IFR_GUID_LABEL *EndLabel; ConfigFormEntry = NULL; EntryExisted = FALSE; @@ -861,36 +861,56 @@ IScsiConfigUpdateForm ( // // Allocate space for creation of Buffer // - UpdateData.BufferSize = 0x1000; - UpdateData.Data = AllocateZeroPool (0x1000); - UpdateData.Offset = 0; + + // + // Init OpCode Handle + // + StartOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (StartOpCodeHandle != NULL); + + EndOpCodeHandle = HiiAllocateOpCodeHandle (); + ASSERT (EndOpCodeHandle != NULL); + + // + // Create Hii Extend Label OpCode as the start opcode + // + StartLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (StartOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); + StartLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; + StartLabel->Number = DEVICE_ENTRY_LABEL; + + // + // Create Hii Extend Label OpCode as the end opcode + // + EndLabel = (EFI_IFR_GUID_LABEL *) HiiCreateGuidOpCode (EndOpCodeHandle, &gEfiIfrTianoGuid, NULL, sizeof (EFI_IFR_GUID_LABEL)); + EndLabel->ExtendOpCode = EFI_IFR_EXTEND_OP_LABEL; + EndLabel->Number = LABEL_END; FormIndex = 0; NET_LIST_FOR_EACH (Entry, &mIScsiConfigFormList) { ConfigFormEntry = NET_LIST_USER_STRUCT (Entry, ISCSI_CONFIG_FORM_ENTRY, Link); - CreateGotoOpCode ( - FORMID_DEVICE_FORM, - ConfigFormEntry->PortTitleToken, - ConfigFormEntry->PortTitleHelpToken, - EFI_IFR_FLAG_CALLBACK, - (UINT16)(KEY_DEVICE_ENTRY_BASE + FormIndex), - &UpdateData + HiiCreateGotoOpCode ( + StartOpCodeHandle, // Container for dynamic created opcodes + FORMID_DEVICE_FORM, // Target Form ID + ConfigFormEntry->PortTitleToken, // Prompt text + ConfigFormEntry->PortTitleHelpToken, // Help text + EFI_IFR_FLAG_CALLBACK, // Question flag + (UINT16)(KEY_DEVICE_ENTRY_BASE + FormIndex) // Question ID ); FormIndex++; } - IfrLibUpdateForm ( + HiiUpdateForm ( mCallbackInfo->RegisteredHandle, &mVendorGuid, FORMID_MAIN_FORM, - DEVICE_ENTRY_LABEL, - FALSE, - &UpdateData + StartOpCodeHandle, // Label DEVICE_ENTRY_LABEL + EndOpCodeHandle // LABEL_END ); - gBS->FreePool (UpdateData.Data); + HiiFreeOpCodeHandle (StartOpCodeHandle); + HiiFreeOpCodeHandle (EndOpCodeHandle); return EFI_SUCCESS; } diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h index fd6a2c41cf..b0a748ae9c 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfig.h @@ -15,11 +15,10 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #ifndef _ISCSI_CONFIG_H_ #define _ISCSI_CONFIG_H_ +#include #include #include #include -#include -#include #include #include #include diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigDxe.vfr b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigDxe.vfr index 10f1c4ed75..666fa04170 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigDxe.vfr +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigDxe.vfr @@ -16,8 +16,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include "IScsiConfigNVDataStruc.h" #define EFI_NETWORK_DEVICE_CLASS 0x04 -#define LABEL_END 0xffff - formset guid = ISCSI_CONFIG_GUID, title = STRING_TOKEN(STR_ISCSI_CONFIG_FORM_TITLE), diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigNVDataStruc.h b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigNVDataStruc.h index eb9e7dc3c2..7b77a19e78 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigNVDataStruc.h +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiConfigNVDataStruc.h @@ -47,6 +47,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define TARGET_PORT_MAX_NUM 65535 #define DEVICE_ENTRY_LABEL 0x1234 +#define LABEL_END 0xffff #define KEY_INITIATOR_NAME 0x101 #define KEY_DHCP_ENABLE 0x102 diff --git a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf index 29509911e7..3587c307ab 100644 --- a/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf +++ b/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe.inf @@ -78,8 +78,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. DebugLib PrintLib HiiLib - IfrSupportLib - ExtendedIfrSupportLib NetLib [Protocols] @@ -97,3 +95,4 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. [Guids] gEfiEventExitBootServicesGuid + gEfiIfrTianoGuid ## CONSUMES ## Guid -- cgit v1.2.3