sl@0: // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Part of the TSI_MMFACLNT suite that tests CR1566 (TruePause) on AudioOutputStream sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file TestOutputStreamTruePause.cpp sl@0: */ sl@0: sl@0: #include "testoutputstreamtruepause.h" sl@0: sl@0: /* sl@0: * sl@0: * RMdaOutputStreamTestBase - Test step constructor sl@0: * sl@0: */ sl@0: RMdaOutputStreamTestBase::RMdaOutputStreamTestBase(const TDesC& aTestName, const TDesC& aSectName) sl@0: : iAudioOutputStreamState(EStateAOSInitial), sl@0: iAudioOutputStream(NULL), sl@0: iTimer(NULL), sl@0: iWait(EFalse), sl@0: iConfig(EFalse), sl@0: iInvalidConfig(EFalse), sl@0: iGetBytes(EFalse), sl@0: iCount(0), sl@0: iVolume(0), sl@0: iBalance(0), sl@0: iDuration(0), sl@0: iPause(0), sl@0: iBytes(0), sl@0: iPosition(0), sl@0: iFilename(KNullDesC) sl@0: { sl@0: iTestStepName = aTestName; sl@0: iSectName = aSectName; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * ~RMdaOutputStreamTestBase - Test step destructor sl@0: * sl@0: */ sl@0: RMdaOutputStreamTestBase::~RMdaOutputStreamTestBase() sl@0: { sl@0: if (iAudioOutputStream) sl@0: { sl@0: delete iAudioOutputStream; sl@0: } sl@0: if(iTimer) sl@0: { sl@0: delete iTimer; sl@0: } sl@0: iFile.Close(); sl@0: iFs.Close(); sl@0: iBuffer.Close(); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * KickoffTestL - Starts the test sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::KickoffTestL() sl@0: { sl@0: User::LeaveIfError(iFs.Connect()); sl@0: INFO_PRINTF1(_L("__________ Creating AudioOutputStream object ___________")); sl@0: sl@0: TRAPD(err, iAudioOutputStream = CMdaAudioOutputStream::NewL(*this)); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("Could not create Tone Utility object. Error = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: INFO_PRINTF1(_L("AudioOutputStream State: EStateCreated")); sl@0: iAudioOutputStreamState = EStateAOSCreated; sl@0: sl@0: DoKickoffTestL(); sl@0: sl@0: INFO_PRINTF1(_L("AudioOutputStream: EEventInitialize")); sl@0: Fsm(EEventAOSInitialize, KErrNone); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * CloseTest sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::CloseTest() sl@0: { sl@0: INFO_PRINTF1(_L("Deleting AudioOutputStream object")); sl@0: delete iAudioOutputStream; sl@0: delete iTimer; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * StartTimer - Starts timer and timer callback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::StartTimer(TTimeIntervalMicroSeconds32 aWaitTime) sl@0: { sl@0: TTimeIntervalMicroSeconds32 timeInterval; sl@0: sl@0: if(aWaitTime <= TTimeIntervalMicroSeconds32(0)) sl@0: { sl@0: timeInterval = KOneSecond; sl@0: } sl@0: else sl@0: { sl@0: timeInterval = aWaitTime; sl@0: } sl@0: TCallBack callback (TimerCallback, this); sl@0: iTimer->Start(timeInterval, timeInterval, callback); sl@0: INFO_PRINTF1(_L("Timer has been started")); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * TimerCallback sl@0: * sl@0: */ sl@0: TInt RMdaOutputStreamTestBase::TimerCallback(TAny* aPtr) sl@0: { sl@0: static_cast(aPtr)->DoTimerCallback(); sl@0: return KErrNone; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * Fsm - Executes playing events of AudioToneUtility in sequence sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError) sl@0: { sl@0: TInt error = 0; sl@0: TTimeIntervalMicroSeconds resumeposition; sl@0: switch (iAudioOutputStreamState) sl@0: { sl@0: case EStateAOSCreated: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSInitialize) sl@0: { sl@0: TMdaAudioDataSettings settings; sl@0: //Default settings sl@0: settings.Query(); sl@0: settings.iChannels = TMdaAudioDataSettings::EChannelsMono; sl@0: settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open")); sl@0: iAudioOutputStream->Open(&settings); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing")); sl@0: iAudioOutputStreamState = EStateAOSInitializing; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSInitializing: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2")); sl@0: iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2); sl@0: INFO_PRINTF1(_L("Starting playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: StartTimer(iPause*KOneSecond); sl@0: } sl@0: else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError); sl@0: StopTest(aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSPlaying: sl@0: { sl@0: if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: if(!iGetBytes) sl@0: { sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Pause returned with KErrNone as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: iPosition = iAudioOutputStream->Position(); sl@0: INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64()); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause")); sl@0: iAudioOutputStreamState = EStateAOSPause; sl@0: iWait = EFalse; sl@0: } sl@0: if(iGetBytes) sl@0: { sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Pause returned with KErrNone as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause")); sl@0: iPosition = iAudioOutputStream->Position(); sl@0: INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64()); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause")); sl@0: iAudioOutputStreamState = EStateAOSPause; sl@0: iWait = EFalse; sl@0: INFO_PRINTF1(_L("Calling GetBytes")); sl@0: iBytes = iAudioOutputStream->GetBytes(); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSPause: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: if(!iWait && !iConfig && !iInvalidConfig && !iGetBytes) sl@0: { sl@0: if(iPosition == iAudioOutputStream->Position()) sl@0: { sl@0: INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume")); sl@0: error = iAudioOutputStream->Resume(); sl@0: resumeposition = iAudioOutputStream->Position(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNone as expected")); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2) sl@0: { sl@0: INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: } sl@0: else if(!iWait && iConfig) sl@0: { sl@0: if(iPosition == iAudioOutputStream->Position()) sl@0: { sl@0: INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause); sl@0: INFO_PRINTF3(_L("Changing Volume and Balance while paused to Volume = %d and Balance = %d"),iVolume,iBalance); sl@0: iAudioOutputStream->SetVolume(iVolume); sl@0: iAudioOutputStream->SetBalanceL(iBalance); sl@0: INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume")); sl@0: error = iAudioOutputStream->Resume(); sl@0: resumeposition = iAudioOutputStream->Position(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNone as expected")); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2) sl@0: { sl@0: INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: iConfig = EFalse; sl@0: } sl@0: else if(!iWait && iInvalidConfig) sl@0: { sl@0: if(iPosition == iAudioOutputStream->Position()) sl@0: { sl@0: INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause); sl@0: INFO_PRINTF1(_L("Changing AudioProperties while paused")); sl@0: TRAPD(err,iAudioOutputStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate48000Hz, TMdaAudioDataSettings::EChannelsStereo)); sl@0: if(err == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("SetAudioPropertiesL returned with KErrNotReady as expected")); sl@0: INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume")); sl@0: error = iAudioOutputStream->Resume(); sl@0: resumeposition = iAudioOutputStream->Position(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNone as expected")); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2) sl@0: { sl@0: INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),err); sl@0: StopTest(err); sl@0: } sl@0: iInvalidConfig = EFalse; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("SetAudioPropertiesL did not return with KErrNotSupported as expected, returned with %d instead"), err); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else if(!iWait && iGetBytes) sl@0: { sl@0: if(iPosition == iAudioOutputStream->Position()) sl@0: { sl@0: INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause); sl@0: INFO_PRINTF1(_L("Calling GetBytes to verify the value hasn't changed")); sl@0: TInt myBytes = iAudioOutputStream->GetBytes(); sl@0: if(myBytes == iBytes) sl@0: { sl@0: INFO_PRINTF1(_L("GetBytes value did not change while in pause, this is expected.")); sl@0: INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume")); sl@0: error = iAudioOutputStream->Resume(); sl@0: resumeposition = iAudioOutputStream->Position(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNone as expected")); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2) sl@0: { sl@0: INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: iGetBytes = EFalse; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("GetBytes value changed while in pause, this is unexpected. Expected = %d Retrieved = %d"),iBytes,myBytes); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: default: sl@0: { sl@0: ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * MaoscOpenComplete - From MMdaAudioOutputStreamObserver sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::MaoscOpenComplete(TInt aError) sl@0: { sl@0: INFO_PRINTF1(_L("========== AudioOutputStream MaoscOpenComplete() callback ==========")); sl@0: if(iAudioOutputStreamState == EStateAOSInitializing) sl@0: { sl@0: INFO_PRINTF1(_L("AudioOutputStream MaoscOpenComplete")); sl@0: Fsm(EEventAOSOpenComplete, aError); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * MaoscBufferCopied - From MMdaAudioOutputStreamObserver sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/) sl@0: { sl@0: INFO_PRINTF1(_L("========== AudioOutputStream MaoscBufferCopied() callback ==========")); sl@0: INFO_PRINTF1(_L("Reading file")); sl@0: TInt err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: if (iBuffer != KNullDesC8 && iAudioOutputStreamState != EStateAOSStopped) sl@0: { sl@0: INFO_PRINTF1(_L("Writing to stream")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: } sl@0: if(iAudioOutputStreamState == EStateAOSPlaying) sl@0: { sl@0: INFO_PRINTF1(_L("AudioOutputStream MaoscBufferCopied")); sl@0: } sl@0: else if(iAudioOutputStreamState == EStateAOSPause) sl@0: { sl@0: ERR_PRINTF1(_L("AudioOutputStream MaoscBufferCopied in Paused. This is unexpected")); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * MaoscPlayComplete - From MMdaAudioOutputStreamObserver sl@0: * sl@0: */ sl@0: void RMdaOutputStreamTestBase::MaoscPlayComplete(TInt aError) sl@0: { sl@0: INFO_PRINTF1(_L("========== AudioOutputStream MaoscPlayComplete() callback ==========")); sl@0: if (aError == KErrUnderflow) sl@0: { sl@0: INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError); sl@0: StopTest(EPass); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError); sl@0: ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow); sl@0: StopTest(aError); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0175-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamPauseResumeBeforeWriteTest::RMdaOutputStreamPauseResumeBeforeWriteTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamPauseResumeBeforeWriteTest* RMdaOutputStreamPauseResumeBeforeWriteTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamPauseResumeBeforeWriteTest * self = new(ELeave)RMdaOutputStreamPauseResumeBeforeWriteTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseResumeBeforeWriteTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: iPause = KTimeout; //Set timeout to stop test if playback was paused sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * Fsm - Executes playing events of AudioToneUtility in sequence sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseResumeBeforeWriteTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError) sl@0: { sl@0: TInt error = 0; sl@0: TTimeIntervalMicroSeconds resumeposition; sl@0: switch (iAudioOutputStreamState) sl@0: { sl@0: case EStateAOSCreated: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSInitialize) sl@0: { sl@0: TMdaAudioDataSettings settings; sl@0: //Default settings sl@0: settings.Query(); sl@0: settings.iChannels = TMdaAudioDataSettings::EChannelsMono; sl@0: settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause before Open")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("Pause before open returned with KErrNotReady as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause before open returned with %d instead of KErrNotReady as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open")); sl@0: iAudioOutputStream->Open(&settings); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing")); sl@0: iAudioOutputStreamState = EStateAOSInitializing; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSInitializing: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2")); sl@0: iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2); sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause before first WriteL")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("Pause before first WriteL returned with KErrNotReady as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause before first WriteL returned with %d instead of KErrNotReady as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume before first WriteL")); sl@0: error = iAudioOutputStream->Resume(); sl@0: if(error == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("Resume before first WriteL returned with KErrNotReady as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume before first WriteL returned with %d instead of KErrNotReady as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: INFO_PRINTF1(_L("Starting playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: StartTimer(iPause*KOneSecond); sl@0: } sl@0: else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError); sl@0: StopTest(aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: default: sl@0: { sl@0: ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseResumeBeforeWriteTest::DoTimerCallback() sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: ERR_PRINTF1(_L("Playback was paused when it shouldn't")); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0176-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamResumeTest::RMdaOutputStreamResumeTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamResumeTest* RMdaOutputStreamResumeTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamResumeTest * self = new(ELeave)RMdaOutputStreamResumeTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamResumeTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamResumeTest::DoTimerCallback() sl@0: { sl@0: if(!iWait) sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete")); sl@0: } sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0177-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamResumeThriceTest::RMdaOutputStreamResumeThriceTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamResumeThriceTest* RMdaOutputStreamResumeThriceTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamResumeThriceTest * self = new(ELeave)RMdaOutputStreamResumeThriceTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamResumeThriceTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamResumeThriceTest::DoTimerCallback() sl@0: { sl@0: iCount++; sl@0: if(!iWait && iCount == 2*KRepeatThrice) //Repeating Pause-Resume cycle three times. Timer should be called 6 times sl@0: { sl@0: iTimer->Cancel(); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete")); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0178-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamConfigInPauseTest::RMdaOutputStreamConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamConfigInPauseTest* RMdaOutputStreamConfigInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamConfigInPauseTest * self = new(ELeave)RMdaOutputStreamConfigInPauseTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamConfigInPauseTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the volume sl@0: if (!GetIntFromConfig(iSectName, KVolume, iVolume)) sl@0: { sl@0: ERR_PRINTF1(_L("Volume could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the balance sl@0: if (!GetIntFromConfig(iSectName, KBalance, iBalance)) sl@0: { sl@0: ERR_PRINTF1(_L("Balance could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: iConfig = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamConfigInPauseTest::DoTimerCallback() sl@0: { sl@0: if(!iWait && !iConfig) sl@0: { sl@0: iTimer->Cancel(); sl@0: INFO_PRINTF1(_L("Comparing Volume and Balance with values set")); sl@0: if (iVolume == iAudioOutputStream->Volume() && Abs(iBalance - iAudioOutputStream->GetBalanceL())Volume(),iAudioOutputStream->GetBalanceL(),iVolume,iBalance); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete")); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0179-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamInvalidConfigInPauseTest::RMdaOutputStreamInvalidConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamInvalidConfigInPauseTest* RMdaOutputStreamInvalidConfigInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamInvalidConfigInPauseTest * self = new(ELeave)RMdaOutputStreamInvalidConfigInPauseTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamInvalidConfigInPauseTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: iInvalidConfig = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamInvalidConfigInPauseTest::DoTimerCallback() sl@0: { sl@0: if(!iWait) sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete")); sl@0: } sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0180-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamGetBytesInPauseTest::RMdaOutputStreamGetBytesInPauseTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamGetBytesInPauseTest* RMdaOutputStreamGetBytesInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamGetBytesInPauseTest * self = new(ELeave)RMdaOutputStreamGetBytesInPauseTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamGetBytesInPauseTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: iGetBytes = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamGetBytesInPauseTest::DoTimerCallback() sl@0: { sl@0: if(!iWait) sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete")); sl@0: } sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0181-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamPlayPauseStopPlayTest::RMdaOutputStreamPlayPauseStopPlayTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamPlayPauseStopPlayTest* RMdaOutputStreamPlayPauseStopPlayTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamPlayPauseStopPlayTest * self = new(ELeave)RMdaOutputStreamPlayPauseStopPlayTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPlayPauseStopPlayTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: iStop = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPlayPauseStopPlayTest::DoTimerCallback() sl@0: { sl@0: if(!iWait && iStop) sl@0: { sl@0: iAudioOutputStreamState = EStateAOSStopped; sl@0: iStop = EFalse; sl@0: iWait = ETrue; sl@0: INFO_PRINTF1(_L("MAudioOutputStream Event: EEventTimerComplete")); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: else if(!iWait && !iStop) sl@0: { sl@0: iTimer->Cancel(); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete")); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * Fsm - Executes playing events of AudioToneUtility in sequence sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPlayPauseStopPlayTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError) sl@0: { sl@0: TInt error = 0; sl@0: TTimeIntervalMicroSeconds resumeposition; sl@0: switch (iAudioOutputStreamState) sl@0: { sl@0: case EStateAOSCreated: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSInitialize) sl@0: { sl@0: TMdaAudioDataSettings settings; sl@0: //Default settings sl@0: settings.Query(); sl@0: settings.iChannels = TMdaAudioDataSettings::EChannelsMono; sl@0: settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open")); sl@0: iAudioOutputStream->Open(&settings); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing")); sl@0: iAudioOutputStreamState = EStateAOSInitializing; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSInitializing: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2")); sl@0: iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2); sl@0: INFO_PRINTF1(_L("Starting playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: StartTimer(iPause*KOneSecond); sl@0: } sl@0: else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError); sl@0: StopTest(aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSPlaying: sl@0: { sl@0: if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Pause returned with KErrNone as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: iPosition = iAudioOutputStream->Position(); sl@0: INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64()); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause")); sl@0: iAudioOutputStreamState = EStateAOSPause; sl@0: iWait = EFalse; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSPause: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: if(iPosition == iAudioOutputStream->Position()) sl@0: { sl@0: INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume")); sl@0: error = iAudioOutputStream->Resume(); sl@0: resumeposition = iAudioOutputStream->Position(); sl@0: if(error == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNone as expected")); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2) sl@0: { sl@0: INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64()); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64()); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSStopped: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: if(iWait) sl@0: { sl@0: INFO_PRINTF1(_L("Stopping playback for 2 seconds")); sl@0: iAudioOutputStream->Stop(); sl@0: iWait = EFalse; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume while in Stop")); sl@0: error = iAudioOutputStream->Resume(); sl@0: if(error == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("Resume returned with KErrNotReady as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume returned with %d instead of KErrNotReady as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: TInt filepos = 0; sl@0: INFO_PRINTF1(_L("Restarting file to start position")); sl@0: error = iFile.Seek(ESeekStart, filepos); sl@0: if (error != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error restarting iFile %d"), error); sl@0: StopTest(error); sl@0: } sl@0: error = iFile.Read(iBuffer); sl@0: if (error != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), error); sl@0: StopTest(error); sl@0: } sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::WriteL while in Stop to restart playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: default: sl@0: { sl@0: ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * MaoscPlayComplete - From MMdaAudioOutputStreamObserver sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPlayPauseStopPlayTest::MaoscPlayComplete(TInt aError) sl@0: { sl@0: INFO_PRINTF1(_L("========== AudioOutputStream MaoscPlayComplete() callback ==========")); sl@0: if(iAudioOutputStreamState == EStateAOSStopped) sl@0: { sl@0: if (aError == KErrCancel) sl@0: { sl@0: INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError); sl@0: ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow); sl@0: StopTest(aError); sl@0: } sl@0: } sl@0: else if(iAudioOutputStreamState == EStateAOSPlaying) sl@0: { sl@0: if(aError == KErrUnderflow) sl@0: { sl@0: INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError); sl@0: StopTest(EPass); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError); sl@0: ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow); sl@0: StopTest(aError); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF1(_L("AudioOutputStream called MaoscPlayComplete at invalid state")); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0182-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamInvalidFormatsTest::RMdaOutputStreamInvalidFormatsTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamInvalidFormatsTest* RMdaOutputStreamInvalidFormatsTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamInvalidFormatsTest * self = new(ELeave)RMdaOutputStreamInvalidFormatsTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamInvalidFormatsTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KOggFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iWait = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamInvalidFormatsTest::DoTimerCallback() sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: Fsm (EEventAOSTimerComplete, KErrNone); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * Fsm - Executes playing events of AudioToneUtility in sequence sl@0: * sl@0: */ sl@0: void RMdaOutputStreamInvalidFormatsTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError) sl@0: { sl@0: TInt error = 0; sl@0: TTimeIntervalMicroSeconds resumeposition; sl@0: switch (iAudioOutputStreamState) sl@0: { sl@0: case EStateAOSCreated: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSInitialize) sl@0: { sl@0: TMdaAudioDataSettings settings; sl@0: //setting for OGG file sl@0: settings.Query(); sl@0: settings.iChannels = TMdaAudioDataSettings::EChannelsStereo; sl@0: settings.iSampleRate = TMdaAudioDataSettings::ESampleRate44100Hz; sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open")); sl@0: iAudioOutputStream->Open(&settings); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing")); sl@0: iAudioOutputStreamState = EStateAOSInitializing; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSInitializing: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone) sl@0: { sl@0: TFourCC KVORBDataType('V', 'O', 'R', 'B'); sl@0: TRAPD(err,iAudioOutputStream->SetDataTypeL(KVORBDataType)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Failed to set non-PCM Format")); sl@0: StopTest(err); sl@0: } sl@0: INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2")); sl@0: iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2); sl@0: INFO_PRINTF1(_L("Starting playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: iAudioOutputStreamState = EStateAOSPlaying; sl@0: StartTimer(iPause*KOneSecond); sl@0: } sl@0: else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError); sl@0: StopTest(aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSPlaying: sl@0: { sl@0: if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete) sl@0: { sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause while playing non-PCM format")); sl@0: error = iAudioOutputStream->Pause(); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("Pause while playing non-PCM format returned with KErrNotSupported as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause while playing non-PCM format returned with %d instead of KErrNotReady as expected"),error); sl@0: StopTest(error); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: default: sl@0: { sl@0: ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: } sl@0: sl@0: /* sl@0: *======================================================================================================== sl@0: * MM-MMF-ACLNT-I-0184-HP sl@0: *======================================================================================================== sl@0: */ sl@0: RMdaOutputStreamPauseNonA3FTest::RMdaOutputStreamPauseNonA3FTest(const TDesC& aTestName, const TDesC& aSectName) sl@0: : RMdaOutputStreamTestBase(aTestName,aSectName) sl@0: { sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * NewL sl@0: * sl@0: */ sl@0: RMdaOutputStreamPauseNonA3FTest* RMdaOutputStreamPauseNonA3FTest::NewL(const TDesC& aTestName, const TDesC& aSectName) sl@0: { sl@0: RMdaOutputStreamPauseNonA3FTest * self = new(ELeave)RMdaOutputStreamPauseNonA3FTest(aTestName,aSectName); sl@0: return self; sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoKickoffTestL sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseNonA3FTest::DoKickoffTestL() sl@0: { sl@0: TPtrC filename; sl@0: // Get the pause time sl@0: if (!GetIntFromConfig(iSectName, KPause, iPause)) sl@0: { sl@0: ERR_PRINTF1(_L("Pause time could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // Get the filename of the audio file to play sl@0: if (!GetStringFromConfig(iSectName, KRawFile, filename)) sl@0: { sl@0: ERR_PRINTF1(_L("Filename could not be retrieved from ini file")); sl@0: StopTest(KErrNotFound); sl@0: return; sl@0: } sl@0: // open using RFile for playback sl@0: iFilename.Copy(filename); sl@0: TInt err = iFile.Open(iFs, iFilename, EFileRead); sl@0: if (err != KErrNone) sl@0: { sl@0: ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err); sl@0: iFs.Close(); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Get size of iFile sl@0: TInt filesize = 0; sl@0: err = iFile.Size(filesize); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error getting size of iFile = %d"), err); sl@0: StopTest(err); sl@0: return; sl@0: } sl@0: // Initialise iBuf sl@0: iBuffer.CreateMaxL(filesize/KFileDivision); sl@0: sl@0: //Read first half of the file sl@0: err = iFile.Read(iBuffer); sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Error reading iFile %d"), err); sl@0: StopTest(err); sl@0: } sl@0: sl@0: iPause = KTimeout; //Set timeout to stop test if playback was paused sl@0: iWait = ETrue; sl@0: INFO_PRINTF2(_L("File under test -> %S"), &iFilename); sl@0: iTimer = CPeriodic::NewL(CActive::EPriorityHigh); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * DoTimerCallback sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseNonA3FTest::DoTimerCallback() sl@0: { sl@0: INFO_PRINTF1(_L("Cancelling timer")); sl@0: iTimer->Cancel(); sl@0: ERR_PRINTF1(_L("Playback was paused when it shouldn't")); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: sl@0: /* sl@0: * sl@0: * Fsm - Executes playing events of AudioToneUtility in sequence sl@0: * sl@0: */ sl@0: void RMdaOutputStreamPauseNonA3FTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError) sl@0: { sl@0: switch (iAudioOutputStreamState) sl@0: { sl@0: case EStateAOSCreated: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSInitialize) sl@0: { sl@0: TMdaAudioDataSettings settings; sl@0: //Default settings sl@0: settings.Query(); sl@0: settings.iChannels = TMdaAudioDataSettings::EChannelsMono; sl@0: settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open")); sl@0: iAudioOutputStream->Open(&settings); sl@0: INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing")); sl@0: iAudioOutputStreamState = EStateAOSInitializing; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: case EStateAOSInitializing: sl@0: { sl@0: if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2")); sl@0: iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2); sl@0: INFO_PRINTF1(_L("Starting playback")); sl@0: iAudioOutputStream->WriteL(iBuffer); sl@0: StartTimer(iPause*KOneSecond); sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause in non-a3f configuration")); sl@0: TInt err = iAudioOutputStream->Pause(); sl@0: if(err == KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("Pause in CMdaAudioOutputStream returned with KErrNotSupported as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Pause in CMdaAudioOutputStream returned with %d instead of KErrNotSupported as expected"),err); sl@0: StopTest(err); sl@0: } sl@0: INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume in non-a3f configuration")); sl@0: err = iAudioOutputStream->Resume(); sl@0: if(err == KErrNotReady) sl@0: { sl@0: INFO_PRINTF1(_L("Resume in CMdaAudioOutputStream returned with KErrNotReady as expected")); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Resume in CMdaAudioOutputStream returned with %d instead of KErrNotReady as expected"),err); sl@0: StopTest(err); sl@0: } sl@0: } sl@0: else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError); sl@0: StopTest(aError); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent); sl@0: StopTest(aError, EFail); sl@0: } sl@0: break; sl@0: } sl@0: default: sl@0: { sl@0: ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState); sl@0: StopTest(KErrGeneral); sl@0: } sl@0: } sl@0: }