// // TDS 4.3.1 // EFI_STATUS BBTestReadKeyStrokeManualTest ( 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_IN_PROTOCOL *SimpleIn; EFI_TEST_ASSERTION AssertionType; EFI_INPUT_KEY Key; CHAR16 KeyBuffer[MAX_KEY_BUFFER_SIZE]; EFI_DEVICE_PATH_PROTOCOL *DevicePath; CHAR16 *DevicePathStr; UINTN Index; // // Get the Standard Library Interface // Status = gtBS->HandleProtocol ( SupportHandle, &gEfiStandardTestLibraryGuid, &StandardLib ); if (EFI_ERROR(Status)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.HandleProtocol - Handle standard test library", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } SimpleIn = (EFI_SIMPLE_TEXT_IN_PROTOCOL *)ClientInterface; // // Get Device Path of current Simple_Text_In_Protocol // And out put device path or device name // Status = LocateDevicePathFromSimpleTextIn (SimpleIn, &DevicePath, StandardLib); if (Status == EFI_SUCCESS) { DevicePathStr = DevicePathToStr(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)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.FreePool - Free pool", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } DevicePathStr=NULL; } } else { // // Console Splitter/StdErr // StandardLib->RecordMessage ( StandardLib, EFI_VERBOSE_LEVEL_DEFAULT, L"\r\nCurrent Device: ConsoleSplitter/TxtIn" ); } // // wait for times // Print (L"\r\nReadKeyStroke Stress Test Start!\r\n"); WaitTimeOrKey (5); // // Assertion Point 4.1.3.2.1 // ReadKeyStroke() // Status = SimpleIn->Reset (SimpleIn,TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; StandardLib->RecordAssertion ( StandardLib, AssertionType, gTestGenericFailureGuid, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset with ExtendedVeirification as TRUE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); } Print (L"\r\nPlease input some displayabed characters in 5 seconds\r\n"); gtBS->Stall (5000000); // // Assume user has input some key, go on verification // Read all key // Index=0; do { Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (Status == EFI_SUCCESS) { KeyBuffer[Index++] = Key.UnicodeChar; } } while (Status == EFI_SUCCESS && Index < MAX_KEY_BUFFER_SIZE); // // Echo the input keys // if (Status != EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInExtensiveTestAssertionGuid001, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.ReadKeyStroke - ReadKeyStroke() when no key input", L"%a:%d, Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_NOT_READY ); } KeyBuffer[Index] = 0; Print (L"The keys input are:%s", KeyBuffer); // // Prompt for user judge // if (AutoJudge (5,TRUE,L"\r\nEcho correct?\r\n") == TRUE) { AssertionType = EFI_TEST_ASSERTION_PASSED; } else { AssertionType = EFI_TEST_ASSERTION_FAILED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInExtensiveTestAssertionGuid002, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.ReadKeyStroke - ReadKeyStroke() with key input, user's view", L"%a:%d", __FILE__, __LINE__ ); return EFI_SUCCESS; }
// // TDS 4.1.4 // EFI_STATUS BBTestWaitForKeyFunctionManualTest ( 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_IN_PROTOCOL *SimpleIn; EFI_TEST_ASSERTION AssertionType; EFI_INPUT_KEY Key; EFI_DEVICE_PATH_PROTOCOL *DevicePath; CHAR16 *DevicePathStr; // BOOLEAN KeyPressed=FALSE, EscPressed=FALSE; UINTN WaitIndex; // // Verify whether it is one of IHV interfaces // if (! IsIhvInterface (ClientInterface, SupportHandle)) { return EFI_UNSUPPORTED; } // // Get the Standard Library Interface // Status = gtBS->HandleProtocol ( SupportHandle, &gEfiStandardTestLibraryGuid, &StandardLib ); if (EFI_ERROR(Status)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.HandleProtocol - Handle standard test library", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } SimpleIn = (EFI_SIMPLE_TEXT_IN_PROTOCOL *)ClientInterface; // // Get Device Path of current Simple_Text_In_Protocol // And out put device path or device name // Status = LocateDevicePathFromSimpleTextIn (SimpleIn, &DevicePath, StandardLib); if (Status == EFI_SUCCESS) { DevicePathStr = DevicePathToStr (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)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.FreePool - Free pool", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } DevicePathStr=NULL; } } else { // // Console Splitter/StdErr // StandardLib->RecordMessage ( StandardLib, EFI_VERBOSE_LEVEL_DEFAULT, L"\r\nCurrent Device: ConsoleSplitter/TxtIn" ); } // // wait for times // Print (L"\r\nWaitForKey Function Test Start!\r\n"); WaitTimeOrKey (5); Status = SimpleIn->Reset (SimpleIn, TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; StandardLib->RecordAssertion ( StandardLib, AssertionType, gTestGenericFailureGuid, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset with ExtendedVeirification as TRUE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); } // // Assertion Point 4.1.4.2.1 // WaitForKey() // Print (L"Press ONE displayable key! and NO More!"); // // WaitForKey event // Status = gtBS->WaitForEvent (1, &(SimpleIn->WaitForKey), &WaitIndex); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid011, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.WaitForKey - Wait for event with key input", L"%a:%d, Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_SUCCESS ); // // Call ReadKeyStroke repeatedly to receive the character. // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid014, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.ReadKeyStroke - ReadKeyStroke() with key input", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); return EFI_SUCCESS; }
// // TDS 4.1.2 // EFI_STATUS BBTestResetFunctionManualTest ( 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_IN_PROTOCOL *SimpleIn; EFI_TEST_ASSERTION AssertionType; EFI_DEVICE_PATH_PROTOCOL *DevicePath; CHAR16 *DevicePathStr; EFI_INPUT_KEY Key; // // Verify whether it is one of IHV interfaces // if (! IsIhvInterface (ClientInterface, SupportHandle)) { return EFI_UNSUPPORTED; } // // Get the Standard Library Interface // Status = gtBS->HandleProtocol ( SupportHandle, &gEfiStandardTestLibraryGuid, &StandardLib ); if (EFI_ERROR(Status)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.HandleProtocol - Handle standard test library", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } SimpleIn = (EFI_SIMPLE_TEXT_IN_PROTOCOL *)ClientInterface; // // Get Device Path of current Simple_Text_In_Protocol // And out put device path or device name // Status = LocateDevicePathFromSimpleTextIn (SimpleIn, &DevicePath, StandardLib); if (Status == EFI_SUCCESS) { DevicePathStr = DevicePathToStr (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)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.FreePool - Free pool", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } DevicePathStr=NULL; } } else { // // Console Splitter/StdErr // StandardLib->RecordMessage ( StandardLib, EFI_VERBOSE_LEVEL_DEFAULT, L"\r\nCurrent Device: ConsoleSplitter/TxtIn" ); } Print (L"\r\nReset Function Test Start!\r\n"); WaitTimeOrKey (5); // // Assertion Point 4.1.2.2.1 // Reset without Extended Verification & Reset with Extended Verification // // // Call SimpleTextIn.Reset() with ExtendedVerification as FALSE // Status = SimpleIn->Reset (SimpleIn, FALSE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid003, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as FALSE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); // // Prompt tester to input some characters // Print (L"Press some displayble keys in 5 second!"); // // Wait 5 seconds // gtBS->Stall (5000000); // // Call SimpleTextIn.Reset with ExtendedVerification as FALSE again // Status = SimpleIn->Reset (SimpleIn, FALSE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid004, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as FALSE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); // // Call SimpleTextIn.ReadKeyStroke() to check key buffer // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (Status!=EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid005, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as FALSE, ReadKeyStroke() verification", L"%a:%d, Status = %r, Expected=%r", __FILE__, __LINE__, Status, EFI_NOT_READY ); // // Assertion Point 4.1.2.2.2 // // // Call SimpleTextIn.Reset() with ExtendedVerification as TRUE // Status = SimpleIn->Reset (SimpleIn, TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid006, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as TRUE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); // // Prompt tester to input some characters // Print (L"Press some displayble keys in 5 second AGAIN!"); // // Wait 5 seconds // gtBS->Stall (5000000); // // Call SimpleTextIn.Reset with ExtendedVerification as TRUE again // Status = SimpleIn->Reset (SimpleIn, TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid007, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as TRUE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); // // Call SimpleTextIn.ReadKeyStroke() to check key buffer // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (Status!=EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid008, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as TRUE, ReadKeyStroke() verification", L"%a:%d, Status = %r, Expected=%r", __FILE__, __LINE__, Status, EFI_NOT_READY ); return EFI_SUCCESS; }
// // TDS 4.1.1 // EFI_STATUS BBTestResetFunctionAutoTest ( 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_IN_PROTOCOL *SimpleIn; EFI_TEST_ASSERTION AssertionType; EFI_DEVICE_PATH_PROTOCOL *DevicePath; CHAR16 *DevicePathStr; UINTN Index; EFI_INPUT_KEY Key; // // Verify whether it is one of IHV interfaces // if (! IsIhvInterface (ClientInterface, SupportHandle)) { return EFI_UNSUPPORTED; } // // Get the Standard Library Interface // Status = gtBS->HandleProtocol ( SupportHandle, &gEfiStandardTestLibraryGuid, &StandardLib ); if (EFI_ERROR(Status)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.HandleProtocol - Handle standard test library", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } SimpleIn = (EFI_SIMPLE_TEXT_IN_PROTOCOL *)ClientInterface; // // Get Device Path of current Simple_Text_In_Protocol // And out put device path or device name // Status = LocateDevicePathFromSimpleTextIn (SimpleIn, &DevicePath, StandardLib); if (Status == EFI_SUCCESS) { DevicePathStr = DevicePathToStr (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)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.FreePool - Free pool", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } DevicePathStr=NULL; } } else { // // Console Splitter/StdErr // StandardLib->RecordMessage ( StandardLib, EFI_VERBOSE_LEVEL_DEFAULT, L"\r\nCurrent Device: ConsoleSplitter/TxtIn" ); } // // Assertion Point 4.1.1.2.1 // Reset without Extended Verification & Reset with Extended Verification // for (Index=0;Index<REPEAT_EXECUTE_OF_TEST;Index++) { // // Call SimpleTextIn.Reset() with ExtendedVerification as FALSE // Status = SimpleIn->Reset (SimpleIn, FALSE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid001, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as FALSE", L"%a:%d: Status = %r", __FILE__, __LINE__, Status ); // //Auto test, after reset(), no key input, ReadKeyStroke() should return EFI_NOT_READY // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (Status != EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid012, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as FALSE, ReadKeyStroke() verification with no key input", L"%a:%d: Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_NOT_READY ); // // Call SimpleTextIn.Reset() with ExtendedVerification as TRUE // Status = SimpleIn->Reset (SimpleIn, TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid002, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as TRUE", L"%a:%d: Status = %r", __FILE__, __LINE__, Status ); // //Auto test, after reset(), no key input, ReadKeyStroke() should return EFI_NOT_READY // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (Status!=EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInInterfaceTestAssertionGuid013, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset() with ExtendedVerification as TRUE, ReadKeyStroke() verification with no key input", L"%a:%d: Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_NOT_READY ); } return EFI_SUCCESS; }
// // TDS 4.2.2 // EFI_STATUS BBTestWaitForKeyConformanceManualTest ( 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_IN_PROTOCOL *SimpleIn; EFI_TEST_ASSERTION AssertionType; EFI_INPUT_KEY Key; EFI_DEVICE_PATH_PROTOCOL *DevicePath; CHAR16 *DevicePathStr; UINTN WaitIndex; // // Get the Standard Library Interface // Status = gtBS->HandleProtocol ( SupportHandle, &gEfiStandardTestLibraryGuid, &StandardLib ); if (EFI_ERROR(Status)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.HandleProtocol - Handle standard test library", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } SimpleIn = (EFI_SIMPLE_TEXT_IN_PROTOCOL *)ClientInterface; // // Get Device Path of current Simple_Text_In_Protocol // And out put device path or device name // Status = LocateDevicePathFromSimpleTextIn (SimpleIn, &DevicePath, StandardLib); if (Status == EFI_SUCCESS) { DevicePathStr = DevicePathToStr (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)) { StandardLib->RecordAssertion ( StandardLib, EFI_TEST_ASSERTION_FAILED, gTestGenericFailureGuid, L"BS.FreePool - Free pool", L"%a:%d:Status - %r", __FILE__, __LINE__, Status ); return Status; } DevicePathStr=NULL; } } else { // // Console Splitter/StdErr // StandardLib->RecordMessage ( StandardLib, EFI_VERBOSE_LEVEL_DEFAULT, L"\r\nCurrent Device: ConsoleSplitter/TxtIn" ); } // // wait for times // Print (L"\r\nWaitForKey Conformance Test Start!\r\n"); WaitTimeOrKey (5); // // Assertion Point 4.2.2.2.1 // ReadKeyStroke() // // // Call Reset with ExtendedVerification as TRUE // Status = SimpleIn->Reset (SimpleIn, TRUE); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; StandardLib->RecordAssertion ( StandardLib, AssertionType, gTestGenericFailureGuid, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.Reset - Reset with ExtendedVeirification as TRUE", L"%a:%d, Status = %r", __FILE__, __LINE__, Status ); } // // Call CheckEvent() on the WaitForKey event // Status = gtBS->CheckEvent (SimpleIn->WaitForKey); if (Status!=EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInConformanceTestAssertionGuid007, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.WaitForKey - Event check before key input", L"%a:%d, Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_NOT_READY ); // // Prompt tester to input some character // Print (L"Press ONE displayable key! and NO More!"); // // WaitForKey event // Status = gtBS->WaitForEvent (1, &(SimpleIn->WaitForKey), &WaitIndex); if (EFI_ERROR(Status)) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInConformanceTestAssertionGuid008, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.WaitForKey - Wait for event with key input", L"%a:%d, Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_SUCCESS ); Print (L"\r\nThe key(s) input:"); // // Call ReadKeyStroke repeatedly to receive the character. // while (TRUE) { // // Call ReadKeyStroke to retrieve the key // Status = SimpleIn->ReadKeyStroke (SimpleIn, &Key); if (EFI_ERROR(Status)) { break; } // // Output what user input // if (Key.ScanCode==0) { // // Unicode character // APrint ((char*)(&Key.UnicodeChar)); } else { // // Scan code character // Print (ScanCodeDesc (Key.ScanCode)); } } // // Wait 2 second for user to check the key echoed. // gtBS->Stall (2000000); // // Call CheckEvent() on the WaitForKey event // Status = gtBS->CheckEvent (SimpleIn->WaitForKey); if (Status!=EFI_NOT_READY) { AssertionType = EFI_TEST_ASSERTION_FAILED; } else { AssertionType = EFI_TEST_ASSERTION_PASSED; } StandardLib->RecordAssertion ( StandardLib, AssertionType, gSimpleTextInConformanceTestAssertionGuid010, L"EFI_SIMPLE_TEXT_IN_PROTOCOL.WaitForKey - Event check after key read stroken", L"%a:%d, Status = %r, Expected = %r", __FILE__, __LINE__, Status, EFI_NOT_READY ); return EFI_SUCCESS; }