diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/CIPlugins/src/teststepcigettimestamps.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/CIPlugins/src/teststepcigettimestamps.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,192 @@ +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include "teststepcigettimestamps.h" +#include "cidefine.h" + +/*****************************************************************************/ +CTestStepCICreateGetTimestamps::CTestStepCICreateGetTimestamps() + { + iTestStepName = _L("MM-MMF-DEVSOUNDCI-U-0085-HP"); + } + +/*****************************************************************************/ +TVerdict CTestStepCICreateGetTimestamps::DoTestStepL() + { + iTestStepResult = EFail; + + INFO_PRINTF1(_L("Initializing test CI device")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidGetTimestampsTestDevice}; + #else + TFourCC testUID('T','0','0','6'); + #endif + + MMMFGetTimestamps* interface = NULL; + interface = static_cast( + InitializeAndInstantiateInterfaceL(testUID, KUidGetTimestamps)); + + if (interface) + { + iTestStepResult = EPass; + INFO_PRINTF1(_L("Successfully retrieved the interface.")); + } + else + { + iTestStepResult = EFail; + ERR_PRINTF1(_L("Failed to retrieve the interface")); + } + + return iTestStepResult; + } + +/*****************************************************************************/ +CTestStepCIGetTimestampsEnable::CTestStepCIGetTimestampsEnable() + { + iTestStepName = _L("MM-MMF-DEVSOUNDCI-U-0086-HP"); + } + +/*****************************************************************************/ +TVerdict CTestStepCIGetTimestampsEnable::DoTestStepL() + { + iTestStepResult = EFail; + + INFO_PRINTF1(_L("Initializing test CI device")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidGetTimestampsTestDevice}; + #else + TFourCC testUID('T','0','0','6'); + #endif + + MMMFGetTimestamps* interface = NULL; + interface = static_cast(InitializeAndInstantiateInterfaceL(testUID, KUidGetTimestamps)); + + if (interface) + { + TBool enabled = ETrue; + INFO_PRINTF1(_L("Calling test CI method")); + TInt err = interface->MmgtSetRecordSystemTimestampsEnabled(enabled); + TBool flag = EFalse; + // Reset test result in case we leave... + iTestStepResult = EFail; + DoReadFromFileL(flag); + if ((err == KErrNone) && (flag == enabled)) + { + INFO_PRINTF1(_L("Test CI method call was successful")); + iTestStepResult = EPass; + } + else + { + INFO_PRINTF4(_L("Test CI method call failed, error: %d, expected value: %d, \ + actual value: %d"), err, enabled, flag); + } + } + else + { + INFO_PRINTF1(_L("Failed to retrieve the custom interface.")); + iTestStepResult = EInconclusive; + } + + return iTestStepResult; + } + +void CTestStepCIGetTimestampsEnable::DoReadFromFileL(TBool& aFlag) + { + RFs fs; + CleanupClosePushL(fs); + User::LeaveIfError(fs.Connect()); + + RFile file; + CleanupClosePushL(file); + + // File should already exist + User::LeaveIfError(file.Open(fs, KCITestFileName, EFileRead)); + // Size should be 1! + TInt fileSize = 0; + User::LeaveIfError(file.Size(fileSize)); + if (fileSize != KMaxCITestFileDataLength) + { + User::Leave(KErrCorrupt); + } + TBuf8 inputBuf; + User::LeaveIfError(file.Read(inputBuf)); + TChar val = inputBuf[0]; + aFlag = val.GetNumericValue(); + + CleanupStack::PopAndDestroy(); // file + + // This function is responsible for the deletion of the file after use + User::LeaveIfError(fs.Delete(KCITestFileName)); + + CleanupStack::PopAndDestroy(); // fs + } + +/*****************************************************************************/ +CTestStepCIGetTimestampsForBuffer::CTestStepCIGetTimestampsForBuffer() + { + iTestStepName = _L("MM-MMF-DEVSOUNDCI-U-0087-HP"); + } + +/*****************************************************************************/ +TVerdict CTestStepCIGetTimestampsForBuffer::DoTestStepL() + { + iTestStepResult = EFail; + + INFO_PRINTF1(_L("Initializing test CI device")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidGetTimestampsTestDevice}; + #else + TFourCC testUID('T','0','0','6'); + #endif + + MMMFGetTimestamps* interface = NULL; + interface = static_cast(InitializeAndInstantiateInterfaceL(testUID, KUidGetTimestamps)); + + if (interface) + { + INFO_PRINTF1(_L("Calling test CI method")); + // Test device implementation expects this value: + TTimeIntervalMicroSeconds bufferPosition(KTimestampPosition); + TTime timestamp; + TInt err = interface->MmgtGetSystemTimestampForBuffer(bufferPosition, timestamp); + // and it should return this value: + TTime testTimestamp(KTimestampValue); + if ((err == KErrNone) && (testTimestamp == timestamp)) + { + INFO_PRINTF1(_L("Test CI method call was successful")); + iTestStepResult = EPass; + } + else + { + INFO_PRINTF3(_L("Expected timestamp: %d, actual timestamp: %d"), \ + timestamp.Int64(), testTimestamp.Int64()); + iTestStepResult = EFail; + } + } + else + { + INFO_PRINTF1(_L("Failed to retrieve the custom interface.")); + iTestStepResult = EInconclusive; + } + + return iTestStepResult; + }