On Wed, 2018-11-07 at 06:45 +0000, Jin, Eric wrote: > Hi Supreeth, > > Thank for comment. The magic num 7 will be removed in the v2 patch. Thanks. > > Best Regards > Eric > > -----Original Message----- > From: Supreeth Venkatesh <supreeth.venkat...@arm.com> > Sent: Monday, October 15, 2018 10:18 AM > To: Jin, Eric <eric....@intel.com>; edk2-devel@lists.01.org > Cc: Wu, Jiaxin <jiaxin...@intel.com> > Subject: Re: [PATCH] uefi-sct/SctPkg:Add the checkpoint of Toggle > state of ReadKeyStrokeEx > > > > On 10/13/2018 05:21 PM, Eric Jin wrote: > > UEFI Spec clarify the Toggle state > > > > Cc: Supreeth Venkatesh <supreeth.venkat...@arm.com> > > Cc: Jiaxin Wu <jiaxin...@intel.com> > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Eric Jin <eric....@intel.com> > > --- > > .../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/BlackBo > > xTest/Guid.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.c > > index 9cb19f48..ff2d50fa 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/Guid.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2012 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2012, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/Guid.h > > b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.h > > index 6c90fca3..2a6be48b 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.h > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/Guid.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2010 Unified EFI, Inc.<BR> > > - Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > index 153ade03..48f91002 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/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, > > + gSimpleTextInputExBBTestFunctionAssertionGuid > > 010, > > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeySt > > rokeEx - 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, > > + gSimpleTextInputExBBTestFunctionAssertionGuid > > 011, > > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeySt > > rokeEx - 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/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > index fdbc90fe..5b71b6a9 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/SimpleTextInputExBBTestMain.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2017 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2017, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > index cb2160b3..86766068 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/EFI/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/SimpleTextInputExBBTestMain.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2017 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2017, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/Guid.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.c > > index b79772c9..6876814c 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/Guid.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2015 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2015, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/Guid.h > > b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.h > > index 6c90fca3..2a6be48b 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/Guid.h > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/Guid.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2010 Unified EFI, Inc.<BR> > > - Copyright (c) 2010, Intel Corporation. All rights reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > index ce5a80ac..04949de8 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestFunction.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/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, > > + gSimpleTextInputExBBTestFunctionAssertionGuid > > 010, > > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeySt > > rokeEx - 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, > > + gSimpleTextInputExBBTestFunctionAssertionGuid > > 011, > > + L"EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL.ReadKeySt > > rokeEx - 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/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > index 43dbbdae..c0a4f5aa 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.c > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/SimpleTextInputExBBTestMain.c > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2016 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2016, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > index 0b3312e9..bb0d8c9a 100644 > > --- > > a/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/BlackBo > > xTest/SimpleTextInputExBBTestMain.h > > +++ b/uefi- > > sct/SctPkg/TestCase/UEFI/IHV/Protocol/SimpleTextInputEx/Bla > > +++ ckBoxTest/SimpleTextInputExBBTestMain.h > > @@ -1,7 +1,7 @@ > > /** @file > > > > Copyright 2006 - 2014 Unified EFI, Inc.<BR> > > - Copyright (c) 2010 - 2014, Intel Corporation. All rights > > reserved.<BR> > > + Copyright (c) 2010 - 2018, 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 @@ -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, > >
_______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel