diff -r 000000000000 -r bde4ae8d615e os/mm/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/CIPlugins/src/teststepciaudiobufferprefill.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/CIPlugins/src/teststepciaudiobufferprefill.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,348 @@ +// 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 "teststepciaudiobufferprefill.h" + +const TInt32 KAfterThreeSeconds = 3000000; // Three seconds +const TInt32 KEveryNinetySeconds = 90000000; // Ninety seconds + + +TVerdict CTestStepCISampleBuffering::DoTestStepL() + { + iTestStepResult = ETestSuiteError; + + INFO_PRINTF1(_L("Initializing test CI device")); + + if (iTestStepName.Compare(_L("MM-MMF-DEVSOUNDCI-U-0069-HP")) == 0) + { + iTestStepResult = DoTestStep0069L(); + } + else if (iTestStepName.Compare(_L("MM-MMF-DEVSOUNDCI-U-0070-HP")) == 0) + { + iTestStepResult = DoTestStep0070L(); + } + else if (iTestStepName.Compare(_L("MM-MMF-DEVSOUNDCI-U-0071-HP")) == 0) + { + iTestStepResult = DoTestStep0071L(); + } + else if (iTestStepName.Compare(_L("MM-MMF-DEVSOUNDCI-U-0072-HP")) == 0) + { + iTestStepResult = DoTestStep0072L(); + } + else if (iTestStepName.Compare(_L("MM-MMF-DEVSOUNDCI-U-0073-HP")) == 0) + { + iTestStepResult = DoTestStep0073L(); + } + + return iTestStepResult; + } + + +TVerdict CTestStepCISampleBuffering::DoTestStep0069L() + { + iTestStepResult = EFail; + + INFO_PRINTF1(_L("SampleBuffering - Instantiating")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidSampleBufferingTestDevice}; + #else + TFourCC testUID('T','0','1','2'); + #endif + + iTestStepResult = TestInitialize(testUID, EMMFStatePlaying); + + if (iTestStepResult != EPass) + { + INFO_PRINTF1(_L("DevSound failed to instantiate the test device")); + return EInconclusive; + } + + // reset the value as previous test is pass + iTestStepResult = EFail; + + // KUidMMMFSampleBuffering + MMMFSampleBuffering* ptr = static_cast (iMMFDevSound->CustomInterface(KUidSampleBuffering)); + + if (ptr) + { + INFO_PRINTF1(_L("MMMFSampleBuffering instantiated successfully")); + + iTestStepResult = EPass; + } + else + { + ERR_PRINTF1(_L("MMMFSampleBuffering failed to retrieve the interface")); + } + + return iTestStepResult; + } + + +TVerdict CTestStepCISampleBuffering::DoTestStep0070L() + { + iTestStepResult = EFail; + TInt result = KErrGeneral; + + INFO_PRINTF1(_L("SampleBuffering - MmsbEnableSampleBufferingBeforePlayback")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidSampleBufferingTestDevice}; + #else + TFourCC testUID('T','0','1','2'); + #endif + + iTestStepResult = TestInitialize(testUID, EMMFStatePlaying); + + if (iTestStepResult != EPass) + { + INFO_PRINTF1(_L("DevSound failed to instantiate the test device")); + return EInconclusive; + } + + // reset the value as previous test is pass + iTestStepResult = EFail; + + // KUidMMMFSampleBuffering + MMMFSampleBuffering* ptr = static_cast (iMMFDevSound->CustomInterface(KUidSampleBuffering)); + + if (ptr) + { + result = ptr->MmsbEnableSampleBufferingBeforePlayback(); // call method + + if (result == KErrNone) + { + INFO_PRINTF1(_L("MMMFSampleBuffering::MmsbEnableSampleBufferingBeforePlayback finished successfully")); + + iTestStepResult = EPass; + } + else + { + ERR_PRINTF2(_L("MMMFSampleBuffering::MmsbEnableSampleBufferingBeforePlayback failed with result %d"), result); + } + } + else + { + INFO_PRINTF1(_L("MMMFSampleBuffering failed to retrieve the interface")); + iTestStepResult = EInconclusive; + } + + return iTestStepResult; + } + + +TVerdict CTestStepCISampleBuffering::DoTestStep0071L() + { + iTestStepResult = EFail; + TInt result = KErrGeneral; + + INFO_PRINTF1(_L("SampleBuffering - MmsbDisableSampleBufferingBeforePlayback")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidSampleBufferingTestDevice}; + #else + TFourCC testUID('T','0','1','2'); + #endif + + iTestStepResult = TestInitialize(testUID, EMMFStatePlaying); + + if (iTestStepResult != EPass) + { + INFO_PRINTF1(_L("DevSound failed to instantiate the test device")); + return EInconclusive; + } + + // reset the value as previous test is pass + iTestStepResult = EFail; + + // KUidMMMFSampleBuffering + MMMFSampleBuffering* ptr = static_cast (iMMFDevSound->CustomInterface(KUidSampleBuffering)); + + if (ptr) + { + + result = ptr->MmsbDisableSampleBufferingBeforePlayback(); // call method + + if (result == KErrNone) + { + INFO_PRINTF1(_L("MMMFSampleBuffering::MmsbDisableSampleBufferingBeforePlayback finished successfully")); + + iTestStepResult = EPass; + } + else + { + ERR_PRINTF2(_L("MMMFSampleBuffering::MmsbDisableSampleBufferingBeforePlayback failed with result %d"), result); + } + } + else + { + INFO_PRINTF1(_L("MMMFSampleBuffering failed to retrieve the interface")); + iTestStepResult = EInconclusive; + } + + return iTestStepResult; + } + + +TVerdict CTestStepCISampleBuffering::DoTestStep0072L() + { + iTestStepResult = EFail; + TInt err; + + INFO_PRINTF1(_L("SampleBuffering - MmsbNotifyPlayStarted")); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidSampleBufferingTestDevice}; + #else + TFourCC testUID('T','0','1','2'); + #endif + + iTestStepResult = TestInitialize(testUID, EMMFStatePlaying); + if (iTestStepResult != EPass) + { + INFO_PRINTF1(_L("DevSound failed to instantiate the test device")); + return EInconclusive; + } + + // reset the value as previous test is pass + iTestStepResult = EFail; + + // KUidMMMFSampleBuffering + MMMFSampleBuffering* ptr = static_cast (iMMFDevSound->CustomInterface(KUidSampleBuffering)); + + if (ptr) + { + CActiveListener* listener = new(ELeave)CActiveListener; + + listener->InitialiseActiveListener(); + + ptr->MmsbNotifyPlayStarted(listener->iStatus); // call method + + CActiveScheduler::Start(); + + err = listener->iStatus.Int(); + + delete listener; + + if (err == KErrNotSupported) + { + INFO_PRINTF1(_L("MMMFSampleBuffering::MmsbNotifyPlayStarted finished successfully")); + + iTestStepResult = EPass; + } + else + { + ERR_PRINTF2(_L("MMMFSampleBuffering::MmsbNotifyPlayStarted failed with err %d"), err); + } + } + else + { + INFO_PRINTF1(_L("MMMFSampleBuffering failed to retrieve the interface")); + iTestStepResult = EInconclusive; + } + + return iTestStepResult; + } + + +TVerdict CTestStepCISampleBuffering::DoTestStep0073L() + { + iTestStepResult = EFail; + TInt err; + + INFO_PRINTF1(_L("SampleBuffering - MmsbCancelNotifyPlayStarted")); + + TCallBack callback(CTestStepCISampleBuffering::Callback, this); + + iTimer = CPeriodic::NewL(EPriorityNormal); + + // Here we use periodic timer to enable us to call MmsbCancelNotifyPlayStarted() after three + // seconds of issuing MmsbNotifyPlayStarted(). Ninety seconds is long enough to stop the timer + // before sending a second MmsbCancelNotifyPlayStarted() . + iTimer->Start(KAfterThreeSeconds, KEveryNinetySeconds, callback); + + //Initialize - with the UID of our test HwDevice + #ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND + TUid testUID = {KUidSampleBufferingTestDevice}; + #else + TFourCC testUID('T','0','1','2'); + #endif + + iTestStepResult = TestInitialize(testUID, EMMFStatePlaying); + + if (iTestStepResult != EPass) + { + INFO_PRINTF1(_L("DevSound failed to instantiate the test device")); + return EInconclusive; + } + + // reset the value as previous test is pass + iTestStepResult = EFail; + + // KUidMMMFSampleBuffering + iInterfacePtr = static_cast (iMMFDevSound->CustomInterface(KUidSampleBuffering)); + + if (iInterfacePtr) + { + CActiveListener* listener = new(ELeave) CActiveListener; + listener->InitialiseActiveListener(); + + iInterfacePtr->MmsbNotifyPlayStarted(listener->iStatus); // call method + + CActiveScheduler::Start(); + + err = listener->iStatus.Int(); + + delete listener; + + if (err == KErrCancel) + { + INFO_PRINTF1(_L("MMMFSampleBuffering::MmsbCancelNotifyPlayStarted Successfully completed")); + + iTestStepResult = EPass; + } + else + { + ERR_PRINTF2(_L("Device didn't wait for the expected duration err %d"), err); + } + } + else + { + INFO_PRINTF1(_L("MMMFSampleBuffering failed to retrieve the interface")); + iTestStepResult = EInconclusive; + } + + delete iTimer; + + return iTestStepResult; + } + + +TInt CTestStepCISampleBuffering::Callback(TAny* aAny) + { + CTestStepCISampleBuffering* me = reinterpret_cast(aAny); + me->DoCallback(); + return KErrNone; + } + +void CTestStepCISampleBuffering::DoCallback() + { + iTimer->Cancel(); + iInterfacePtr->MmsbCancelNotifyPlayStarted(); // call method + }