From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=217.140.101.70; helo=foss.arm.com; envelope-from=supreeth.venkatesh@arm.com; receiver=edk2-devel@lists.01.org Received: from foss.arm.com (usa-sjc-mx-foss1.foss.arm.com [217.140.101.70]) by ml01.01.org (Postfix) with ESMTP id B7721211799DD for ; Tue, 16 Oct 2018 02:48:38 -0700 (PDT) Received: by usa-sjc-mx-foss1.foss.arm.com (Postfix, from userid 105) id 76710356E; Tue, 16 Oct 2018 02:53:34 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BBA88337D; Sun, 14 Oct 2018 19:18:07 -0700 (PDT) Received: from [10.6.43.238] (bc-c3-3-14.eu.iaas.arm.com [10.6.43.238]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C43043F5B1; Sun, 14 Oct 2018 19:17:46 -0700 (PDT) To: Eric Jin , edk2-devel@lists.01.org Cc: Jiaxin Wu References: <20181013162143.16760-1-eric.jin@intel.com> From: Supreeth Venkatesh Message-ID: Date: Mon, 15 Oct 2018 03:17:44 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20181013162143.16760-1-eric.jin@intel.com> Subject: Re: [PATCH] uefi-sct/SctPkg:Add the checkpoint of Toggle state of ReadKeyStrokeEx X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Oct 2018 09:48:39 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US On 10/13/2018 05:21 PM, Eric Jin wrote: > UEFI Spec clarify the Toggle state > > Cc: Supreeth Venkatesh > Cc: Jiaxin Wu > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Eric Jin > --- > .../SimpleTextInputEx/BlackBoxTest/Guid.c | 7 +- > .../SimpleTextInputEx/BlackBoxTest/Guid.h | 12 +- > .../SimpleTextInputExBBTestFunction.c | 210 +++++++++++++++++ > .../SimpleTextInputExBBTestMain.c | 13 +- > .../SimpleTextInputExBBTestMain.h | 22 +- > .../SimpleTextInputEx/BlackBoxTest/Guid.c | 7 +- > .../SimpleTextInputEx/BlackBoxTest/Guid.h | 12 +- > .../SimpleTextInputExBBTestFunction.c | 212 +++++++++++++++++- > .../SimpleTextInputExBBTestMain.c | 11 +- > .../SimpleTextInputExBBTestMain.h | 20 +- > 10 files changed, 513 insertions(+), 13 deletions(-) > > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > index 9cb19f48..ff2d50fa 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2012 Unified EFI, Inc.
> - Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -63,3 +63,8 @@ EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid007 = EFI_TEST_SIMPLETEXTI > EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid008 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_008_GUID; > > EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid009 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_009_GUID; > + > +EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid010 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_010_GUID; > + > +EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid011 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_011_GUID; > + > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > index 6c90fca3..2a6be48b 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2010 Unified EFI, Inc.
> - Copyright (c) 2010, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -119,3 +119,13 @@ extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid008; > { 0x534369f7, 0x8399, 0x4353, { 0x94, 0xad, 0xc4, 0x48, 0xfa, 0xda, 0xeb, 0x84 } } > > extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid009; > + > +#define EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_010_GUID \ > +{ 0xcf4d54eb, 0x6696, 0x4794, { 0x91, 0x74, 0x59, 0xd, 0x1c, 0x22, 0xa8, 0x67 } } > + > +extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid010; > + > +#define EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_011_GUID \ > +{ 0xf8e8f879, 0xa6d4, 0x4fd3, { 0x8b, 0x8e, 0xba, 0x1d, 0x18, 0xf1, 0x40, 0x71 } } > + > +extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid011; > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > index 153ade03..48f91002 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > @@ -456,6 +456,78 @@ BBTestUnregisterKeyNotifyFunctionManualTest ( > } > > > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTest ( > + IN EFI_BB_TEST_PROTOCOL *This, > + IN VOID *ClientInterface, > + IN EFI_TEST_LEVEL TestLevel, > + IN EFI_HANDLE SupportHandle > + ) > +{ > + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; > + EFI_STATUS Status; > + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx; > + > + EFI_DEVICE_PATH_PROTOCOL *DevicePath; > + CHAR16 *DevicePathStr; > + > + // > + // init > + // > + SimpleTextInputEx = (EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL*)ClientInterface; > + > + // > + // Get the Standard Library Interface > + // > + Status = gtBS->HandleProtocol ( > + SupportHandle, > + &gEfiStandardTestLibraryGuid, > + (VOID **) &StandardLib > + ); > + if (EFI_ERROR(Status)) { > + return Status; > + } > + > + // > + // Get Device Path of current Simple_Text_Input_Ex_Protocol > + // And out put device path or device name > + // > + Status = LocateDevicePathFromSimpleTextInputEx (SimpleTextInputEx, &DevicePath, StandardLib); > + if (Status == EFI_SUCCESS) { > + DevicePathStr = SctDevicePathToStr (DevicePath); > + if (DevicePathStr != NULL) { > + StandardLib->RecordMessage ( > + StandardLib, > + EFI_VERBOSE_LEVEL_DEFAULT, > + L"\r\nCurrent Device: %s", > + DevicePathStr > + ); > + Status = gtBS->FreePool (DevicePathStr); > + if (EFI_ERROR(Status)) > + return Status; > + DevicePathStr=NULL; > + } > + } else { > + // > + // Console Splitter/StdErr > + // > + StandardLib->RecordMessage ( > + StandardLib, > + EFI_VERBOSE_LEVEL_DEFAULT, > + L"\r\nCurrent Device: ConsoleSplitter/TxtIn" > + ); > + } > + > + // > + // > + // > + BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( StandardLib, SimpleTextInputEx ); > + > + return EFI_SUCCESS; > +} > + > + > + > // > //Check Points > // > @@ -1061,3 +1133,141 @@ BBTestUnregisterKeyNotifyFunctionManualTestCheckpoint1 ( > > return EFI_SUCCESS; > } > + > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( > + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, > + IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx > + ) > +{ > + EFI_STATUS Status; > + EFI_TEST_ASSERTION AssertionType; > + EFI_KEY_DATA Key; > + UINT8 Index; > + > + EFI_KEY_TOGGLE_STATE State = EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED; > + > + EFI_KEY_TOGGLE_STATE ValidState[7] = { Magic Number 7 > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_NUM_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE | EFI_NUM_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_NUM_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE |EFI_NUM_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + }; > + > + // > + //Reset the console > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + if (EFI_ERROR(Status) && Status != EFI_NOT_READY) { > + return Status; > + } > + > + if ((Key.KeyState.KeyToggleState & EFI_TOGGLE_STATE_VALID) == 0) { > + return EFI_UNSUPPORTED; > + } > + > + // > + //Set the KEY_STATE_EXPOSED to check the imcomplete keystroke support > + // > + Status = SimpleTextInputEx->SetState ( > + SimpleTextInputEx, > + &State > + ); > + > + if (Status == EFI_UNSUPPORTED || Status == EFI_DEVICE_ERROR) { > + StandardLib->RecordAssertion ( > + StandardLib, > + EFI_TEST_ASSERTION_WARNING, > + gTestGenericFailureGuid, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState - SetState() doesn't return EFI_SUCCESS with EFI_KEY_STATE_EXPOSED", > + L"%a:%d, Status = %r\n", > + __FILE__, > + (UINTN)__LINE__, > + Status > + ); > + return Status; > + } > + > + for (Index=0; Index<7; Index++) { Magic Number 7 > + > + // > + // Set the valid KeyToggleState > + // > + Status = SimpleTextInputEx->SetState ( > + SimpleTextInputEx, > + ValidState + Index > + ); > + > + if (Status != EFI_SUCCESS) { > + StandardLib->RecordAssertion ( > + StandardLib, > + EFI_TEST_ASSERTION_FAILED, > + gTestGenericFailureGuid, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState - SetState() doesn't return EFI_SUCCESS with the valid KeyToggleState", > + L"%a:%d, Status = %r, KeyToggleState = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + ValidState[Index] > + ); > + continue; > + } > + > + // > + // Get the KeyToggleState > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + > + if (Status != EFI_NOT_READY) { > + AssertionType = EFI_TEST_ASSERTION_FAILED; > + > + StandardLib->RecordAssertion ( > + StandardLib, > + AssertionType, > + gSimpleTextInputExBBTestFunctionAssertionGuid010, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx - ReadKeyStrokeEx() doesn't return EFI_NOT_READY when there is no Key data and EFI_KEY_STATE_EXPOSED is enabled", > + L"%a:%d, Status = %r, Index = %d, KeyToggleState = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + Index, > + ValidState[Index] > + ); > + > + } else { > + if (Key.KeyState.KeyToggleState == ValidState[Index] && > + (Key.KeyState.KeyShiftState == 0 || Key.KeyState.KeyShiftState == EFI_SHIFT_STATE_VALID) && > + Key.Key.ScanCode == 0 && Key.Key.UnicodeChar == 0) > + AssertionType = EFI_TEST_ASSERTION_PASSED; > + else > + AssertionType = EFI_TEST_ASSERTION_FAILED; > + > + > + StandardLib->RecordAssertion ( > + StandardLib, > + AssertionType, > + gSimpleTextInputExBBTestFunctionAssertionGuid011, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx - ReadKeyStrokeEx() should get the ValidState with EFI_NOT_READY and other field is zero", > + L"%a:%d, Status = %r, Index = %d, KeyToggleState = %x, expect State = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + Index, > + Key.KeyState.KeyToggleState, > + ValidState[Index] > + ); > + > + } > + } > + > + return EFI_SUCCESS; > +} > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > index fdbc90fe..5b71b6a9 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2017 Unified EFI, Inc.
> - Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -105,6 +105,15 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] = { > BBTestUnregisterKeyNotifyFunctionManualTest > }, > #endif > + { > + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0107, > + L"ReadKeyStrokeExFunctionAuto", > + L"Function Auto test for Simple Text Input Ex Protocol ReadKeyStrokeEx().", > + EFI_TEST_LEVEL_MINIMAL, > + gSupportProtocolGuid, > + EFI_TEST_CASE_AUTO, > + BBTestReadKeyStrokeExFunctionAutoTest > + }, > { > EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0201, > L"ReadKeyStrokeExConformance", > @@ -151,7 +160,6 @@ BOOLEAN BeenExecuted; > // > > EFI_STATUS > -EFIAPI > InitializeSimpleTextInputExBBTest ( > IN EFI_HANDLE ImageHandle, > IN EFI_SYSTEM_TABLE *SystemTable > @@ -179,7 +187,6 @@ InitializeSimpleTextInputExBBTest ( > > > EFI_STATUS > -EFIAPI > UnloadSimpleTextInputExBBTest ( > IN EFI_HANDLE ImageHandle > ) > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > index cb2160b3..86766068 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2017 Unified EFI, Inc.
> - Copyright (c) 2010 - 2017, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -57,6 +57,8 @@ Abstract: > #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0106 \ > { 0xdbc6e659, 0xb0e0, 0x4471, { 0x94, 0x13, 0x45, 0x1b, 0xdc, 0xe2, 0xad, 0xc7 } } > > +#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0107 \ > +{ 0x2c3ca282, 0x5644, 0x41b6, { 0xaf, 0xc9, 0x43, 0x87, 0xf2, 0x53, 0x89, 0xbd } } > // > // Entry GUIDs for Conf Test > // > @@ -86,7 +88,6 @@ typedef enum { > // > // > EFI_STATUS > -EFIAPI > InitializeSimpleTextInputExBBTest ( > IN EFI_HANDLE ImageHandle, > IN EFI_SYSTEM_TABLE *SystemTable > @@ -94,7 +95,6 @@ InitializeSimpleTextInputExBBTest ( > > > EFI_STATUS > -EFIAPI > UnloadSimpleTextInputExBBTest ( > IN EFI_HANDLE ImageHandle > ); > @@ -155,6 +155,15 @@ BBTestUnregisterKeyNotifyFunctionManualTest ( > IN EFI_TEST_LEVEL TestLevel, > IN EFI_HANDLE SupportHandle > ); > + > + > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTest ( > + IN EFI_BB_TEST_PROTOCOL *This, > + IN VOID *ClientInterface, > + IN EFI_TEST_LEVEL TestLevel, > + IN EFI_HANDLE SupportHandle > + ); > > > EFI_STATUS > @@ -238,6 +247,13 @@ BBTestUnregisterKeyNotifyFunctionManualTestCheckpoint1 ( > ); > > > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( > + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, > + IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx > + ); > + > + > EFI_STATUS > BBTestReadKeyStrokeExConformanceTestCheckpoint1 ( > IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > index b79772c9..6876814c 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2015 Unified EFI, Inc.
> - Copyright (c) 2010 - 2015, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -63,3 +63,8 @@ EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid007 = EFI_TEST_SIMPLETEXTI > EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid008 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_008_GUID; > > EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid009 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_009_GUID; > + > +EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid010 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_010_GUID; > + > +EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid011 = EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_011_GUID; > + > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > index 6c90fca3..2a6be48b 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > +++ b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2010 Unified EFI, Inc.
> - Copyright (c) 2010, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -119,3 +119,13 @@ extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid008; > { 0x534369f7, 0x8399, 0x4353, { 0x94, 0xad, 0xc4, 0x48, 0xfa, 0xda, 0xeb, 0x84 } } > > extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid009; > + > +#define EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_010_GUID \ > +{ 0xcf4d54eb, 0x6696, 0x4794, { 0x91, 0x74, 0x59, 0xd, 0x1c, 0x22, 0xa8, 0x67 } } > + > +extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid010; > + > +#define EFI_TEST_SIMPLETEXTINPUTEXBBTESTFUNCTION_ASSERTION_011_GUID \ > +{ 0xf8e8f879, 0xa6d4, 0x4fd3, { 0x8b, 0x8e, 0xba, 0x1d, 0x18, 0xf1, 0x40, 0x71 } } > + > +extern EFI_GUID gSimpleTextInputExBBTestFunctionAssertionGuid011; > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > index ce5a80ac..04949de8 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestFunction.c > @@ -456,6 +456,78 @@ BBTestUnregisterKeyNotifyFunctionManualTest ( > } > > > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTest ( > + IN EFI_BB_TEST_PROTOCOL *This, > + IN VOID *ClientInterface, > + IN EFI_TEST_LEVEL TestLevel, > + IN EFI_HANDLE SupportHandle > + ) > +{ > + EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; > + EFI_STATUS Status; > + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx; > + > + EFI_DEVICE_PATH_PROTOCOL *DevicePath; > + CHAR16 *DevicePathStr; > + > + // > + // init > + // > + SimpleTextInputEx = (EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL*)ClientInterface; > + > + // > + // Get the Standard Library Interface > + // > + Status = gtBS->HandleProtocol ( > + SupportHandle, > + &gEfiStandardTestLibraryGuid, > + (VOID **) &StandardLib > + ); > + if (EFI_ERROR(Status)) { > + return Status; > + } > + > + // > + // Get Device Path of current Simple_Text_Input_Ex_Protocol > + // And out put device path or device name > + // > + Status = LocateDevicePathFromSimpleTextInputEx (SimpleTextInputEx, &DevicePath, StandardLib); > + if (Status == EFI_SUCCESS) { > + DevicePathStr = SctDevicePathToStr (DevicePath); > + if (DevicePathStr != NULL) { > + StandardLib->RecordMessage ( > + StandardLib, > + EFI_VERBOSE_LEVEL_DEFAULT, > + L"\r\nCurrent Device: %s", > + DevicePathStr > + ); > + Status = gtBS->FreePool (DevicePathStr); > + if (EFI_ERROR(Status)) > + return Status; > + DevicePathStr=NULL; > + } > + } else { > + // > + // Console Splitter/StdErr > + // > + StandardLib->RecordMessage ( > + StandardLib, > + EFI_VERBOSE_LEVEL_DEFAULT, > + L"\r\nCurrent Device: ConsoleSplitter/TxtIn" > + ); > + } > + > + // > + // > + // > + BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( StandardLib, SimpleTextInputEx ); > + > + return EFI_SUCCESS; > +} > + > + > + > // > //Check Points > // > @@ -1060,4 +1132,142 @@ BBTestUnregisterKeyNotifyFunctionManualTestCheckpoint1 ( > ); > > return EFI_SUCCESS; > -} > \ No newline at end of file > +} > + > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( > + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, > + IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx > + ) > +{ > + EFI_STATUS Status; > + EFI_TEST_ASSERTION AssertionType; > + EFI_KEY_DATA Key; > + UINT8 Index; > + > + EFI_KEY_TOGGLE_STATE State = EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED; > + > + EFI_KEY_TOGGLE_STATE ValidState[7] = { Magic Number 7 > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_NUM_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE | EFI_NUM_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_NUM_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED | EFI_SCROLL_LOCK_ACTIVE |EFI_NUM_LOCK_ACTIVE | EFI_CAPS_LOCK_ACTIVE, > + }; > + > + // > + //Reset the console > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + if (EFI_ERROR(Status) && Status != EFI_NOT_READY) { > + return Status; > + } > + > + if ((Key.KeyState.KeyToggleState & EFI_TOGGLE_STATE_VALID) == 0) { > + return EFI_UNSUPPORTED; > + } > + > + // > + //Set the KEY_STATE_EXPOSED to check the imcomplete keystroke support > + // > + Status = SimpleTextInputEx->SetState ( > + SimpleTextInputEx, > + &State > + ); > + > + if (Status == EFI_UNSUPPORTED || Status == EFI_DEVICE_ERROR) { > + StandardLib->RecordAssertion ( > + StandardLib, > + EFI_TEST_ASSERTION_WARNING, > + gTestGenericFailureGuid, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState - SetState() doesn't return EFI_SUCCESS with EFI_KEY_STATE_EXPOSED", > + L"%a:%d, Status = %r\n", > + __FILE__, > + (UINTN)__LINE__, > + Status > + ); > + return Status; > + } > + > + for (Index=0; Index<7; Index++) { Magic Number 7 > + > + // > + // Set the valid KeyToggleState > + // > + Status = SimpleTextInputEx->SetState ( > + SimpleTextInputEx, > + ValidState + Index > + ); > + > + if (Status != EFI_SUCCESS) { > + StandardLib->RecordAssertion ( > + StandardLib, > + EFI_TEST_ASSERTION_FAILED, > + gTestGenericFailureGuid, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.SetState - SetState() doesn't return EFI_SUCCESS with the valid KeyToggleState", > + L"%a:%d, Status = %r, KeyToggleState = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + ValidState[Index] > + ); > + continue; > + } > + > + // > + // Get the KeyToggleState > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + > + if (Status != EFI_NOT_READY) { > + AssertionType = EFI_TEST_ASSERTION_FAILED; > + > + StandardLib->RecordAssertion ( > + StandardLib, > + AssertionType, > + gSimpleTextInputExBBTestFunctionAssertionGuid010, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx - ReadKeyStrokeEx() doesn't return EFI_NOT_READY when there is no Key data and EFI_KEY_STATE_EXPOSED is enabled", > + L"%a:%d, Status = %r, Index = %d, KeyToggleState = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + Index, > + ValidState[Index] > + ); > + > + } else { > + if (Key.KeyState.KeyToggleState == ValidState[Index] && > + (Key.KeyState.KeyShiftState == 0 || Key.KeyState.KeyShiftState == EFI_SHIFT_STATE_VALID) && > + Key.Key.ScanCode == 0 && Key.Key.UnicodeChar == 0) > + AssertionType = EFI_TEST_ASSERTION_PASSED; > + else > + AssertionType = EFI_TEST_ASSERTION_FAILED; > + > + > + StandardLib->RecordAssertion ( > + StandardLib, > + AssertionType, > + gSimpleTextInputExBBTestFunctionAssertionGuid011, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStrokeEx - ReadKeyStrokeEx() should get the ValidState with EFI_NOT_READY and other field is zero", > + L"%a:%d, Status = %r, Index = %d, KeyToggleState = %x, expect State = %x\n", > + __FILE__, > + (UINTN)__LINE__, > + Status, > + Index, > + Key.KeyState.KeyToggleState, > + ValidState[Index] > + ); > + > + } > + } > + > + return EFI_SUCCESS; > +} > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > index 43dbbdae..c0a4f5aa 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > +++ b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.c > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2016 Unified EFI, Inc.
> - Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -105,6 +105,15 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] = { > BBTestUnregisterKeyNotifyFunctionManualTest > }, > #endif > + { > + EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0107, > + L"ReadKeyStrokeExFunctionAuto", > + L"Function Auto test for Simple Text Input Ex Protocol ReadKeyStrokeEx().", > + EFI_TEST_LEVEL_MINIMAL, > + gSupportProtocolGuid, > + EFI_TEST_CASE_AUTO, > + BBTestReadKeyStrokeExFunctionAutoTest > + }, > { > EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0201, > L"ReadKeyStrokeExConformance", > diff --git a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > index 0b3312e9..bb0d8c9a 100644 > --- a/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > +++ b/uefi-sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBoxTest/SimpleTextInputExBBTestMain.h > @@ -1,7 +1,7 @@ > /** @file > > Copyright 2006 - 2014 Unified EFI, Inc.
> - Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.
> + Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.
> > This program and the accompanying materials > are licensed and made available under the terms and conditions of the BSD License > @@ -61,6 +61,8 @@ Abstract: > #define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0106 \ > { 0xdbc6e659, 0xb0e0, 0x4471, { 0x94, 0x13, 0x45, 0x1b, 0xdc, 0xe2, 0xad, 0xc7 } } > > +#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_TEST_ENTRY_GUID0107 \ > +{ 0x2c3ca282, 0x5644, 0x41b6, { 0xaf, 0xc9, 0x43, 0x87, 0xf2, 0x53, 0x89, 0xbd } } > // > // Entry GUIDs for Conf Test > // > @@ -157,6 +159,15 @@ BBTestUnregisterKeyNotifyFunctionManualTest ( > IN EFI_TEST_LEVEL TestLevel, > IN EFI_HANDLE SupportHandle > ); > + > + > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTest ( > + IN EFI_BB_TEST_PROTOCOL *This, > + IN VOID *ClientInterface, > + IN EFI_TEST_LEVEL TestLevel, > + IN EFI_HANDLE SupportHandle > + ); > > > EFI_STATUS > @@ -240,6 +251,13 @@ BBTestUnregisterKeyNotifyFunctionManualTestCheckpoint1 ( > ); > > > +EFI_STATUS > +BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( > + IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib, > + IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx > + ); > + > + > EFI_STATUS > BBTestReadKeyStrokeExConformanceTestCheckpoint1 ( > IN EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib,