mirror of
https://github.com/acidanthera/audk.git
synced 2025-04-08 17:05:09 +02:00
MdeModulePkg: Add sample code for keyword handler protocol.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <samer.el-haj-mahmoud@hp.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17431 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
f736c1f198
commit
34326197d1
@ -2,7 +2,7 @@
|
||||
This is an example of how a driver might export data to the HII protocol to be
|
||||
later utilized by the Setup Protocol
|
||||
|
||||
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@ -1279,6 +1279,10 @@ DriverCallback (
|
||||
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
||||
MY_EFI_VARSTORE_DATA *EfiData;
|
||||
EFI_FORM_ID FormId;
|
||||
EFI_STRING Progress;
|
||||
EFI_STRING Results;
|
||||
UINT32 ProgressErr;
|
||||
CHAR16 *TmpStr;
|
||||
|
||||
if (((Value == NULL) && (Action != EFI_BROWSER_ACTION_FORM_OPEN) && (Action != EFI_BROWSER_ACTION_FORM_CLOSE))||
|
||||
(ActionRequest == NULL)) {
|
||||
@ -1287,6 +1291,7 @@ DriverCallback (
|
||||
|
||||
|
||||
FormId = 0;
|
||||
ProgressErr = 0;
|
||||
Status = EFI_SUCCESS;
|
||||
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
|
||||
|
||||
@ -1753,7 +1758,78 @@ DriverCallback (
|
||||
//
|
||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
|
||||
break;
|
||||
|
||||
case 0x1231:
|
||||
//
|
||||
// 1. Check to see whether system support keyword.
|
||||
//
|
||||
Status = PrivateData->HiiKeywordHandler->GetData (PrivateData->HiiKeywordHandler,
|
||||
L"NAMESPACE=x-UEFI-ns",
|
||||
L"KEYWORD=iSCSIBootEnable",
|
||||
&Progress,
|
||||
&ProgressErr,
|
||||
&Results
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
do {
|
||||
CreatePopUp (
|
||||
EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,
|
||||
&Key,
|
||||
L"",
|
||||
L"This system not support this keyword!",
|
||||
L"Press ENTER to continue ...",
|
||||
L"",
|
||||
NULL
|
||||
);
|
||||
} while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
// 2. If system support this keyword, just try to change value.
|
||||
//
|
||||
|
||||
//
|
||||
// Change value from '0' to '1' or from '1' to '0'
|
||||
//
|
||||
TmpStr = StrStr (Results, L"&VALUE=");
|
||||
ASSERT (TmpStr != NULL);
|
||||
TmpStr += StrLen (L"&VALUE=");
|
||||
TmpStr++;
|
||||
if (*TmpStr == L'0') {
|
||||
*TmpStr = L'1';
|
||||
} else {
|
||||
*TmpStr = L'0';
|
||||
}
|
||||
|
||||
//
|
||||
// 3. Call the keyword handler protocol to change the value.
|
||||
//
|
||||
Status = PrivateData->HiiKeywordHandler->SetData (PrivateData->HiiKeywordHandler,
|
||||
Results,
|
||||
&Progress,
|
||||
&ProgressErr
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
do {
|
||||
CreatePopUp (
|
||||
EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE,
|
||||
&Key,
|
||||
L"",
|
||||
L"Set keyword to the system failed!",
|
||||
L"Press ENTER to continue ...",
|
||||
L"",
|
||||
NULL
|
||||
);
|
||||
} while (Key.UnicodeChar != CHAR_CARRIAGE_RETURN);
|
||||
|
||||
Status = EFI_SUCCESS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1790,6 +1866,7 @@ DriverSampleInit (
|
||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
||||
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
||||
EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *HiiKeywordHandler;
|
||||
CHAR16 *NewString;
|
||||
UINTN BufferSize;
|
||||
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
||||
@ -1867,6 +1944,15 @@ DriverSampleInit (
|
||||
}
|
||||
PrivateData->HiiConfigRouting = HiiConfigRouting;
|
||||
|
||||
//
|
||||
// Locate keyword handler protocol
|
||||
//
|
||||
Status = gBS->LocateProtocol (&gEfiConfigKeywordHandlerProtocolGuid, NULL, (VOID **) &HiiKeywordHandler);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
PrivateData->HiiKeywordHandler = HiiKeywordHandler;
|
||||
|
||||
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||
&DriverHandle[0],
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
@ -1902,6 +1988,8 @@ DriverSampleInit (
|
||||
&DriverHandle[1],
|
||||
&gEfiDevicePathProtocolGuid,
|
||||
&mHiiVendorDevicePath1,
|
||||
&gEfiHiiConfigAccessProtocolGuid,
|
||||
&PrivateData->ConfigAccess,
|
||||
NULL
|
||||
);
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/** @file
|
||||
|
||||
Copyright (c) 2007 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
@ -32,6 +32,7 @@ Revision History
|
||||
#include <Protocol/HiiDatabase.h>
|
||||
#include <Protocol/HiiString.h>
|
||||
#include <Protocol/FormBrowserEx.h>
|
||||
#include <Protocol/HiiConfigKeyword.h>
|
||||
|
||||
#include <Guid/MdeModuleHii.h>
|
||||
#include <Library/DebugLib.h>
|
||||
@ -97,6 +98,8 @@ typedef struct {
|
||||
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
||||
EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *HiiKeywordHandler;
|
||||
|
||||
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
||||
|
||||
//
|
||||
|
@ -4,7 +4,7 @@
|
||||
# This driver shows how HII protocol, VFR and UNI files are used to create a HII
|
||||
# driver which can be dipslayed and configured by a UEFI HII Form Browser.
|
||||
#
|
||||
# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
# Copyright (c) 2007 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
#
|
||||
# This program and the accompanying materials
|
||||
# are licensed and made available under the terms and conditions of the BSD License
|
||||
@ -92,6 +92,7 @@
|
||||
gEfiHiiDatabaseProtocolGuid ## CONSUMES
|
||||
gEfiSimpleTextInputExProtocolGuid ## SOMETIMES_CONSUMES
|
||||
gEfiFormBrowserExProtocolGuid ## CONSUMES
|
||||
gEfiConfigKeywordHandlerProtocolGuid ## CONSUMES
|
||||
|
||||
[Depex]
|
||||
gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Sample Inventory Data
|
||||
//
|
||||
// Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>
|
||||
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
// This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
@ -104,6 +104,12 @@ formset
|
||||
flags = 0,
|
||||
key = 0;
|
||||
|
||||
text
|
||||
help = STRING_TOKEN(STR_CHECK_KEYWORD_SUPPORT),
|
||||
text = STRING_TOKEN(STR_CHECK_KEYWORD_SUPPORT),
|
||||
flags = INTERACTIVE,
|
||||
key = 0x1231;
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_INV_EMPTY_STRING);
|
||||
|
||||
subtitle text = STRING_TOKEN(STR_INV_VERSION_TEXT12);
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// Sample Setup formset.
|
||||
//
|
||||
// Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
|
||||
// Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>
|
||||
// This program and the accompanying materials
|
||||
// are licensed and made available under the terms and conditions of the BSD License
|
||||
// which accompanies this distribution. The full text of the license may be found at
|
||||
@ -280,7 +280,7 @@ formset
|
||||
endoneof;
|
||||
|
||||
oneof varid = MyIfrNVData.QuestionAboutTreeHugging,
|
||||
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT),
|
||||
prompt = STRING_TOKEN(STR_ONE_OF_PROMPT_KEYWORD),
|
||||
help = STRING_TOKEN(STR_ONE_OF_HELP),
|
||||
flags = RESET_REQUIRED,
|
||||
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = 0;
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user