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 3DFC42118F357 for ; Mon, 12 Nov 2018 11:04:30 -0800 (PST) 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 837E2A78; Mon, 12 Nov 2018 11:04:29 -0800 (PST) Received: from supven01-VirtualBox (unknown [10.119.49.60]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 331F93F5A0; Mon, 12 Nov 2018 11:04:29 -0800 (PST) Message-ID: <6ae2a54997ebdc1f5533d4da1b0d5c99f6c0fad0.camel@arm.com> From: Supreeth Venkatesh To: Eric Jin , edk2-devel@lists.01.org Date: Mon, 12 Nov 2018 13:04:26 -0600 In-Reply-To: <20181109052309.12276-1-eric.jin@intel.com> References: <20181109052309.12276-1-eric.jin@intel.com> X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.1 Mime-Version: 1.0 Subject: Re: [edk2-test][Patch v3 1/2] uefi-sct/SctPkg:Add checkpoint of ReadKeyStrokeEx Toggle state 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: Mon, 12 Nov 2018 19:04:30 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit PATCH Series Acked-by: Supreeth Venkatesh Minor indentation issues persist, but rest looks good. On Fri, 2018-11-09 at 13:23 +0800, Eric Jin wrote: > The patch is applied to the EFI part. > > UEFI drivers which implement the EFI_SIMPLE_TEXT_INPUT_EX protocol > are required to return KeyData.Key and KeyData.KeyState values. > These drivers must always return the most current state of > KeyData.KeyState.KeyShiftState and KeyData.KeyState.KeyToggleState. > > The change in spec is "EFI_NOT_READY - There was no keystroke > data available. Current KeyData.KeyState values are exposed." > > Cc: Supreeth Venkatesh > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Eric Jin > --- > .../Protocol/SimpleTextInputEx/BlackBoxTest/Guid.c | 6 +- > .../Protocol/SimpleTextInputEx/BlackBoxTest/Guid.h | 12 +- > .../BlackBoxTest/SimpleTextInputExBBTestFunction.c | 215 > +++++++++++++++++++++ > .../BlackBoxTest/SimpleTextInputExBBTestMain.c | 11 +- > .../BlackBoxTest/SimpleTextInputExBBTestMain.h | 20 +- > 5 files changed, 260 insertions(+), 4 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 9cb19f4..f72bbdd 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,7 @@ 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 6c90fca..2a6be48 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 153ade0..2f6ad7d 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,79 @@ 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: %s", > + L"ConsoleSplitter/TxtIn" > + ); > + } > + > + // > + // Call check point > + // > + BBTestReadKeyStrokeExFunctionAutoTestCheckpoint1 ( StandardLib, > SimpleTextInputEx ); > + > + return EFI_SUCCESS; > +} > + > + > + > // > //Check Points > // > @@ -1061,3 +1134,145 @@ > 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_KEY_TOGGLE_STATE ValidState[] = { > + 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, > + 0 > + }; > + > + State = EFI_TOGGLE_STATE_VALID | EFI_KEY_STATE_EXPOSED; > + > + // > + //Read next keystroke from the input device > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + if ((Status != EFI_SUCCESS) && (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 (EFI_ERROR(Status)) { > + 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; ValidState[Index]; Index++) { > + > + // > + // Set the valid KeyToggleState > + // With EFI_KEY_STATE_EXPOSED bit enabled > + // > + 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, and return status should be > EFI_NOT_READY. > + // the ReadKeyStrokeEx function will allow the return of > + // incomplete keystrokes such as there is no Key data. > + // > + Status = SimpleTextInputEx->ReadKeyStrokeEx ( > + SimpleTextInputEx, > + &Key > + ); > + > + if (Status != EFI_NOT_READY) { > + AssertionType = EFI_TEST_ASSERTION_FAILED; > + > + StandardLib->RecordAssertion ( > + StandardLib, > + AssertionType, > + gSimpleTextInputExBBTestFunctionAssertionGuid01 > 0, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStro > keEx - 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, > + gSimpleTextInputExBBTestFunctionAssertionGuid01 > 1, > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeyStro > keEx - 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 fdbc90f..dc15509 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 > @@ -106,6 +106,15 @@ EFI_BB_TEST_ENTRY_FIELD gBBTestEntryField[] = { > }, > #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", > L"Conformance test for Simple Text Input Ex Protocol > ReadKeyStrokeEx().", > 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 cb2160b..b1d6698 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 > // > @@ -155,6 +157,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 > @@ -239,6 +250,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, > IN EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *SimpleTextInputEx