mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +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
|
This is an example of how a driver might export data to the HII protocol to be
|
||||||
later utilized by the Setup Protocol
|
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
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -1279,6 +1279,10 @@ DriverCallback (
|
|||||||
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
||||||
MY_EFI_VARSTORE_DATA *EfiData;
|
MY_EFI_VARSTORE_DATA *EfiData;
|
||||||
EFI_FORM_ID FormId;
|
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))||
|
if (((Value == NULL) && (Action != EFI_BROWSER_ACTION_FORM_OPEN) && (Action != EFI_BROWSER_ACTION_FORM_CLOSE))||
|
||||||
(ActionRequest == NULL)) {
|
(ActionRequest == NULL)) {
|
||||||
@ -1287,6 +1291,7 @@ DriverCallback (
|
|||||||
|
|
||||||
|
|
||||||
FormId = 0;
|
FormId = 0;
|
||||||
|
ProgressErr = 0;
|
||||||
Status = EFI_SUCCESS;
|
Status = EFI_SUCCESS;
|
||||||
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
|
PrivateData = DRIVER_SAMPLE_PRIVATE_FROM_THIS (This);
|
||||||
|
|
||||||
@ -1753,7 +1758,78 @@ DriverCallback (
|
|||||||
//
|
//
|
||||||
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
|
*ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_DISCARD_EXIT;
|
||||||
break;
|
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:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1790,6 +1866,7 @@ DriverSampleInit (
|
|||||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||||
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
||||||
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
||||||
|
EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *HiiKeywordHandler;
|
||||||
CHAR16 *NewString;
|
CHAR16 *NewString;
|
||||||
UINTN BufferSize;
|
UINTN BufferSize;
|
||||||
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
DRIVER_SAMPLE_CONFIGURATION *Configuration;
|
||||||
@ -1867,6 +1944,15 @@ DriverSampleInit (
|
|||||||
}
|
}
|
||||||
PrivateData->HiiConfigRouting = HiiConfigRouting;
|
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 (
|
Status = gBS->InstallMultipleProtocolInterfaces (
|
||||||
&DriverHandle[0],
|
&DriverHandle[0],
|
||||||
&gEfiDevicePathProtocolGuid,
|
&gEfiDevicePathProtocolGuid,
|
||||||
@ -1902,6 +1988,8 @@ DriverSampleInit (
|
|||||||
&DriverHandle[1],
|
&DriverHandle[1],
|
||||||
&gEfiDevicePathProtocolGuid,
|
&gEfiDevicePathProtocolGuid,
|
||||||
&mHiiVendorDevicePath1,
|
&mHiiVendorDevicePath1,
|
||||||
|
&gEfiHiiConfigAccessProtocolGuid,
|
||||||
|
&PrivateData->ConfigAccess,
|
||||||
NULL
|
NULL
|
||||||
);
|
);
|
||||||
ASSERT_EFI_ERROR (Status);
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @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
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
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/HiiDatabase.h>
|
||||||
#include <Protocol/HiiString.h>
|
#include <Protocol/HiiString.h>
|
||||||
#include <Protocol/FormBrowserEx.h>
|
#include <Protocol/FormBrowserEx.h>
|
||||||
|
#include <Protocol/HiiConfigKeyword.h>
|
||||||
|
|
||||||
#include <Guid/MdeModuleHii.h>
|
#include <Guid/MdeModuleHii.h>
|
||||||
#include <Library/DebugLib.h>
|
#include <Library/DebugLib.h>
|
||||||
@ -97,6 +98,8 @@ typedef struct {
|
|||||||
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
EFI_HII_DATABASE_PROTOCOL *HiiDatabase;
|
||||||
EFI_HII_STRING_PROTOCOL *HiiString;
|
EFI_HII_STRING_PROTOCOL *HiiString;
|
||||||
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
EFI_HII_CONFIG_ROUTING_PROTOCOL *HiiConfigRouting;
|
||||||
|
EFI_CONFIG_KEYWORD_HANDLER_PROTOCOL *HiiKeywordHandler;
|
||||||
|
|
||||||
EFI_FORM_BROWSER2_PROTOCOL *FormBrowser2;
|
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
|
# 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.
|
# 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
|
# This program and the accompanying materials
|
||||||
# are licensed and made available under the terms and conditions of the BSD License
|
# are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -92,6 +92,7 @@
|
|||||||
gEfiHiiDatabaseProtocolGuid ## CONSUMES
|
gEfiHiiDatabaseProtocolGuid ## CONSUMES
|
||||||
gEfiSimpleTextInputExProtocolGuid ## SOMETIMES_CONSUMES
|
gEfiSimpleTextInputExProtocolGuid ## SOMETIMES_CONSUMES
|
||||||
gEfiFormBrowserExProtocolGuid ## CONSUMES
|
gEfiFormBrowserExProtocolGuid ## CONSUMES
|
||||||
|
gEfiConfigKeywordHandlerProtocolGuid ## CONSUMES
|
||||||
|
|
||||||
[Depex]
|
[Depex]
|
||||||
gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
|
gEfiSimpleTextOutProtocolGuid AND gEfiHiiDatabaseProtocolGuid AND gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Sample Inventory Data
|
// 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
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// 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
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -104,6 +104,12 @@ formset
|
|||||||
flags = 0,
|
flags = 0,
|
||||||
key = 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_EMPTY_STRING);
|
||||||
|
|
||||||
subtitle text = STRING_TOKEN(STR_INV_VERSION_TEXT12);
|
subtitle text = STRING_TOKEN(STR_INV_VERSION_TEXT12);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
//
|
//
|
||||||
// Sample Setup formset.
|
// 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
|
// This program and the accompanying materials
|
||||||
// are licensed and made available under the terms and conditions of the BSD License
|
// 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
|
// which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -280,7 +280,7 @@ formset
|
|||||||
endoneof;
|
endoneof;
|
||||||
|
|
||||||
oneof varid = MyIfrNVData.QuestionAboutTreeHugging,
|
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),
|
help = STRING_TOKEN(STR_ONE_OF_HELP),
|
||||||
flags = RESET_REQUIRED,
|
flags = RESET_REQUIRED,
|
||||||
option text = STRING_TOKEN(STR_ONE_OF_TEXT1), value = 0, flags = 0;
|
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