--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_playtest.cpp Fri Jun 11 15:13:33 2010 +0300
@@ -0,0 +1,6539 @@
+// Copyright (c) 2008-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:
+//
+
+// User includes
+#include "char_a3f_devsound_playtest.h"
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0001
+ */
+RA3FDevSoundPlaySetConfigTest::RA3FDevSoundPlaySetConfigTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iSampleRate(0),
+ iChannels(0)
+ {
+ }
+
+RA3FDevSoundPlaySetConfigTest* RA3FDevSoundPlaySetConfigTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetConfigTest* self = new (ELeave) RA3FDevSoundPlaySetConfigTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetConfigTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlaySetConfigTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetConfigLTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFCapabilities capabilitiesSet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
+ TBuf<KMaxChannelsStringLength> stringChannelsSet;
+ SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
+ capabilitiesSet.iRate = iESampleRate;
+ capabilitiesSet.iChannels = iChannels;
+ SampleRateFromTUintToString (capabilitiesSet.iRate, stringSampleRateSet);
+ ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
+ INFO_PRINTF3(_L("Settings for Sample rate an channel mode : %S %S"), &stringSampleRateSet, &stringChannelsSet);
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
+ TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ TMMFCapabilities capabilitiesGet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
+ TBuf<KMaxChannelsStringLength> stringChannelsGet;
+ capabilitiesGet=iMMFDevSound->Config ();
+ SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
+ ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
+ if (capabilitiesGet.iRate != capabilitiesSet.iRate || capabilitiesGet.iChannels != capabilitiesSet.iChannels)
+ {
+ ERR_PRINTF3(_L("Retrieved sample rate and channel : %S %S"), &stringSampleRateGet, &stringChannelsGet);
+ ERR_PRINTF3(_L("Expected %S %S"), &stringSampleRateSet, &stringChannelsSet);
+ StopTest(aError, EFail);
+ break;
+ }
+ INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+ StopTest();
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error : %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0002
+ */
+RA3FDevSoundPlaySetVolumeWhilePlayingTest::RA3FDevSoundPlaySetVolumeWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iVolume(0),
+ iFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeWhilePlayingTest* RA3FDevSoundPlaySetVolumeWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest (KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy (filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest (KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumePlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error: %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with: %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize ())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData ();
+ }
+
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume"));
+ iMMFDevSound->SetVolume(iVolume);
+ TInt volumeGet;
+ volumeGet=iMMFDevSound->Volume();
+ if (volumeGet == iVolume)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::SetVolume during playback succeeded with %d"), volumeGet);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::SetVolume during playback failed with %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = %d"), iVolume);
+ StopTest(aError, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm (EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0003
+ */
+RA3FDevSoundPlaySetVolumeTest::RA3FDevSoundPlaySetVolumeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iVolume(0)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeTest* RA3FDevSoundPlaySetVolumeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlaySetVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumeTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume"));
+ iMMFDevSound->SetVolume(iVolume);
+ TInt volumeGet;
+ volumeGet = iMMFDevSound->Volume();
+ if (volumeGet == iVolume)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::SetVolume succeeded with %d"), volumeGet);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::SetVolume failed with %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = %d"), iVolume);
+ StopTest(aError, EFail);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0004
+ */
+RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest::RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iVolume(0)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest* RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if ( err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer (KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
+ iMMFDevSound->Pause();
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume"));
+ iMMFDevSound->SetVolume(iVolume);
+ TInt volumeGet;
+ volumeGet=iMMFDevSound->Volume ();
+ if (volumeGet == iVolume)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::SetVolume succeeded with %d"), volumeGet);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::SetVolume failed with %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected volume: %d"), iVolume);
+ StopTest(aError, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlaySetVolumeWhilePausedPlayingTest::DoTimerCallback()
+ {
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm (EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0005
+ */
+RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest::RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iReinitialized(EFalse), iVolume(0)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest* RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest * self = new (ELeave) RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest (KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumeInitializeToPlayAudioThenTonesTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume"));
+ iMMFDevSound->SetVolume(iVolume);
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ if (!iReinitialized)
+ {
+ iReinitialized = ETrue;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ TInt volumeGet;
+ volumeGet=iMMFDevSound->Volume();
+ if (volumeGet == iVolume)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::SetVolume is kept after reinitialise Devsound. Volume = %d "), volumeGet);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::SetVolume was not kept. Volume = %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = %d"),iVolume);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0006
+ */
+RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::RA3FDevSoundPlaySetVolumeRampWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iVolumeRamp(0), iPlayInitTwice(EFalse)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeRampWhilePlayingTest* RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeRampWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeRampWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest (KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL (CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumePlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData ();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolumeRamp"));
+ iMMFDevSound->SetVolumeRamp (iVolumeRamp*KMicroSecsInOneSec);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+void RA3FDevSoundPlaySetVolumeRampWhilePlayingTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ INFO_PRINTF3(KMsgErrorDevSoundCallback, &KPlayErrorText, aError);
+ if (iBuffer->LastBuffer ()&& aError == KErrUnderflow)
+ {
+ TInt filePosition = 0;
+ TInt err = iFile.Seek (ESeekStart, filePosition);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("iFile.Seek() returned %d"), err);
+ StopTest(err);
+ }
+ else
+ {
+ if (!iPlayInitTwice)
+ {
+ INFO_PRINTF1(_L("Playback completed normally"));
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Calling again CMMFDevSound::PlayInitL left with error = %d"), err);
+ StopTest(err);
+ }
+ iPlayInitTwice=ETrue;
+ }
+ else
+ {
+ StopTest(err);
+ }
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Playback completed with error"));
+ StopTest(aError, EFail);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0007
+ */
+RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest::RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest* RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest::DoKickoffTestL()
+ {
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumeBeyondMaxVolumeTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume()to set volume values beyond CMMFDevSound::MaxVolume()"));
+ TInt maxVolume = iMMFDevSound->MaxVolume();
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume()+ KExtraVolume);
+ TInt volumeGet = iMMFDevSound->Volume();
+ if (volumeGet == maxVolume)
+ {
+ INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume to set volume beyond CMMFDevSound::MaxVolume succeeded with %d"), volumeGet);
+ StopTest();
+ break;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Calling CMMFDevSound::SetVolume to set volume beyond CMMFDevSound::MaxVolume failed with %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = %d"), maxVolume);
+ StopTest(aError, EFail);
+ break;
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0008
+ */
+RA3FDevSoundPlaySetVolumeToNegativeTest::RA3FDevSoundPlaySetVolumeToNegativeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iVolume(0)
+ {
+ }
+
+RA3FDevSoundPlaySetVolumeToNegativeTest* RA3FDevSoundPlaySetVolumeToNegativeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetVolumeToNegativeTest* self = new (ELeave) RA3FDevSoundPlaySetVolumeToNegativeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetVolumeToNegativeTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest (KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlaySetVolumeToNegativeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumeToNegativeTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume to set volume value to a negative: %d"), iVolume);
+ iMMFDevSound->SetVolume (iVolume);
+ if (iMMFDevSound->Volume ()== 0)
+ {
+ INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume succeeded with %d"), iMMFDevSound->Volume());
+ StopTest();
+ break;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Calling CMMFDevSound::SetVolume failed with %d"), iMMFDevSound->Volume());
+ ERR_PRINTF2(_L("Expected value = %d"), 0);
+ StopTest (aError, EFail);
+ break;
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0009
+ */
+RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest::RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iLSpeakerBalance(0), iRSpeakerBalance(0)
+ {
+ }
+
+RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest* RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest* self = new (ELeave) RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest::DoKickoffTestL()
+ {
+ if ( !GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance) )
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if ( !GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance) )
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetPlayBalanceBeyondOneHundredTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL using left = %d right = %d values"), iLSpeakerBalance, iRSpeakerBalance);
+ TRAPD(err, iMMFDevSound->SetPlayBalanceL(iLSpeakerBalance, iRSpeakerBalance));
+ if (err == KErrNone)
+ {
+ TInt getBalanceL, getBalanceR;
+ TRAPD(err, iMMFDevSound->GetPlayBalanceL(getBalanceL, getBalanceR));
+ if (err == KErrNone)
+ {
+ if (getBalanceL == KMaxSpeakerBalanceValue && getBalanceR == KMaxSpeakerBalanceValue)
+ {
+ INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values beyond 100 succeeded, left = %d right = %d values"), getBalanceL, getBalanceR);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values beyond 100 failed, left = %d right = %d values"), getBalanceL, getBalanceR);
+ ERR_PRINTF3(_L("Expected values left = %d right = %d values"), KMaxSpeakerBalanceValue, KMaxSpeakerBalanceValue);
+ StopTest (err, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in getting left and right play balance."));
+ StopTest (err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in setting left and right play balance."));
+ StopTest (err);
+ }
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0010
+ */
+RA3FDevSoundPlaySetPlayBalanceToNegativeTest::RA3FDevSoundPlaySetPlayBalanceToNegativeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iLSpeakerBalance(0), iRSpeakerBalance(0)
+ {
+ }
+
+RA3FDevSoundPlaySetPlayBalanceToNegativeTest* RA3FDevSoundPlaySetPlayBalanceToNegativeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetPlayBalanceToNegativeTest* self = new (ELeave) RA3FDevSoundPlaySetPlayBalanceToNegativeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetPlayBalanceToNegativeTest::DoKickoffTestL()
+ {
+ if ( !GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance) )
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if ( !GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance) )
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlaySetPlayBalanceToNegativeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetPlayBalanceToNegativeTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL using left = %d right = %d values"), iLSpeakerBalance, iRSpeakerBalance);
+ TRAPD(err, iMMFDevSound->SetPlayBalanceL(iLSpeakerBalance, iRSpeakerBalance));
+ if (err == KErrNone)
+ {
+ TInt getBalanceL, getBalanceR;
+ TRAPD(err, iMMFDevSound->GetPlayBalanceL(getBalanceL, getBalanceR));
+ if (err == KErrNone)
+ {
+ if (getBalanceL == KMinSpeakerBalanceValue && getBalanceR == KMinSpeakerBalanceValue)
+ {
+ INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values to negative succeeded, left = %d right = %d values"), getBalanceL, getBalanceR);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values to negative failed, left = %d right = %d values"), getBalanceL, getBalanceR);
+ ERR_PRINTF3(_L("Expected values, left = %d right = %d values"), KMinSpeakerBalanceValue, KMinSpeakerBalanceValue);
+ StopTest(err, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in getting left and right play balance."));
+ StopTest (err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in setting left and right play balance."));
+ StopTest (err);
+ }
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0011
+ */
+RA3FDevSoundPlaySetPrioritySettingsTest::RA3FDevSoundPlaySetPrioritySettingsTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iPriority(0)
+ {
+ }
+
+RA3FDevSoundPlaySetPrioritySettingsTest* RA3FDevSoundPlaySetPrioritySettingsTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySetPrioritySettingsTest* self = new (ELeave) RA3FDevSoundPlaySetPrioritySettingsTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySetPrioritySettingsTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KPriority, iPriority))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KPriority);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlaySetPrioritySettingsTest::Fsm(
+ TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetPrioritySettingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = iPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d calling CMMFDevSound::SetPrioritySettings"), iPriority);
+ iMMFDevSound->SetPrioritySettings(priority);
+ INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+ StopTest();
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0012
+ */
+RA3FDevSoundPlayCapabilitiesTest::RA3FDevSoundPlayCapabilitiesTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName)
+ {
+ }
+
+RA3FDevSoundPlayCapabilitiesTest* RA3FDevSoundPlayCapabilitiesTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayCapabilitiesTest* self = new (ELeave) RA3FDevSoundPlayCapabilitiesTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayCapabilitiesTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlayCapabilitiesTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Capabilities"));
+ TMMFCapabilities capabilitiesGet;
+ capabilitiesGet = iMMFDevSound->Capabilities ();
+
+ INFO_PRINTF3(_L("Rate Sum:0x%x Channels Sum:0x%x"), capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ PrintSupportedCapabilities (capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ if(capabilitiesGet.iRate == iExCapRate && capabilitiesGet.iChannels == iExCapChannels)
+ {
+ INFO_PRINTF3(_L("Capabilities returned match expected capabilities which are Sum:0x%x Channels Sum:0x%x"), capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ StopTest ();
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Capabilities returned do not match the expected capabilities"));
+ ERR_PRINTF3(_L("Expected Rate Sum:0x%x Channels Sum:0x%x"), iExCapRate, iExCapChannels);
+ StopTest (KErrNone, EFail);
+ }
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0013
+ */
+RA3FDevSoundPlayConfigTest::RA3FDevSoundPlayConfigTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),iExCapRate(0),
+ iExCapChannels(0)
+ {
+ }
+
+RA3FDevSoundPlayConfigTest* RA3FDevSoundPlayConfigTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayConfigTest* self = new (ELeave) RA3FDevSoundPlayConfigTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayConfigTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlayConfigTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayConfigTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFCapabilities capabilitiesGet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
+ TBuf<KMaxChannelsStringLength> stringChannelsGet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateExpected;
+ TBuf<KMaxChannelsStringLength> stringChannelsExpected;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Config while playing"));
+ capabilitiesGet=iMMFDevSound->Config ();
+ SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
+ ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
+ SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateExpected);
+ ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsExpected);
+ if (stringSampleRateExpected.Compare(stringSampleRateGet) == 0)
+ {
+ INFO_PRINTF2(_L("Sample rate value match default as expected with %S"), &stringSampleRateGet);
+ if (stringChannelsExpected.Compare(stringChannelsGet) == 0)
+ {
+ INFO_PRINTF2(_L("Channel mode value match default as expected with %S"), &stringChannelsGet);
+ StopTest();
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Channel mode value failed with %S"), &stringChannelsGet);
+ ERR_PRINTF2(_L("Expected channel mode %S"), &stringChannelsExpected);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Sample rate value failed with %S"), &stringSampleRateGet);
+ ERR_PRINTF2(_L("Expected sample rate %S"), &stringSampleRateExpected);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0014
+ */
+RA3FDevSoundPlayGetPlayBalanceTest::RA3FDevSoundPlayGetPlayBalanceTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iExLSpeakerBalance(0),
+ iExRSpeakerBalance(0)
+ {
+ }
+
+RA3FDevSoundPlayGetPlayBalanceTest* RA3FDevSoundPlayGetPlayBalanceTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayGetPlayBalanceTest* self = new (ELeave) RA3FDevSoundPlayGetPlayBalanceTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayGetPlayBalanceTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExLSpeakerBalance, iExLSpeakerBalance))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExLSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExRSpeakerBalance, iExRSpeakerBalance))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExRSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlayGetPlayBalanceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayGetPlayBalanceTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest (aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TInt getBalanceL, getBalanceR;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::GetPlayBalance"));
+ TRAPD(err, iMMFDevSound->GetPlayBalanceL(getBalanceL, getBalanceR));
+ if (err == KErrNone)
+ {
+ if(getBalanceL == iExLSpeakerBalance && getBalanceR == iExRSpeakerBalance)
+ {
+ INFO_PRINTF3(_L("Balance values match expected values which are, right = %d, left = %d"), getBalanceL, getBalanceR);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Balance values do not match expected values, left = %d right = %d"), getBalanceL, getBalanceR);
+ ERR_PRINTF3(_L("Expected values, left = %d right = %d"), iExLSpeakerBalance, iExRSpeakerBalance);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in getting left and right play balance."));
+ StopTest(err);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0015
+ */
+RA3FDevSoundPlayGetSupportedInputDataTypesLTest::RA3FDevSoundPlayGetSupportedInputDataTypesLTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iCurrentTypeInTest(0)
+ {
+ }
+
+RA3FDevSoundPlayGetSupportedInputDataTypesLTest* RA3FDevSoundPlayGetSupportedInputDataTypesLTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayGetSupportedInputDataTypesLTest* self = new (ELeave) RA3FDevSoundPlayGetSupportedInputDataTypesLTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayGetSupportedInputDataTypesLTest::DoKickoffTestL()
+ {
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlayGetSupportedInputDataTypesLTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayGetSupportedInputDataTypesLTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ if(iCurrentTypeInTest == 0)
+ {
+ TMMFPrioritySettings prioritySettings;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::GetSupportedInputDataTypes"));
+ TRAPD(err,iMMFDevSound->GetSupportedInputDataTypesL(iSupportedDataTypes, prioritySettings));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::GetSupportedInputDataTypes data types falied ! Left with error = %d"), err);
+ StopTest (err);
+ break;
+ }
+ for(TInt x = 0; x < iSupportedDataTypes.Count (); x++)
+ {
+ TFourCC fourCC = iSupportedDataTypes[x];
+ TBuf<KTFourCC> name;
+ for (TInt i=0; i<= KFourCCMaxBitDisplacement; i+=K8Bits)
+ {
+ name.Append ( (TUint8)(fourCC.FourCC() >> i));
+ }
+ INFO_PRINTF3(_L("Supported Input Data types: 0x%x %S "), fourCC.FourCC(), &name);
+ }
+ }
+
+ // Complete test when all types have been used of initialization
+ if(iCurrentTypeInTest == iSupportedDataTypes.Count())
+ {
+ INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
+ StopTest();
+ }
+ else
+ {
+ TFourCC fourCC = iSupportedDataTypes[iCurrentTypeInTest];
+ TBuf<KTFourCC> name;
+ for (TInt i=0; i<= KFourCCMaxBitDisplacement; i+=K8Bits)
+ {
+ name.Append ( (TUint8)(fourCC.FourCC() >> i));
+ }
+ INFO_PRINTF3(_L("Initializing for Input Data type: 0x%x %S "), fourCC.FourCC(), &name);
+ TRAPD(err, iMMFDevSound->InitializeL(*this, fourCC, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ }
+ iCurrentTypeInTest++;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0016
+ */
+RA3FDevSoundPlayMaxVolumeTest::RA3FDevSoundPlayMaxVolumeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iExVolume(0)
+ {
+ }
+
+RA3FDevSoundPlayMaxVolumeTest* RA3FDevSoundPlayMaxVolumeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayMaxVolumeTest* self = new (ELeave) RA3FDevSoundPlayMaxVolumeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayMaxVolumeTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlayMaxVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayMaxVolumeTest"), EFsmIncorrectErrorPassed));
+ if ( aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TInt maxVolume = iMMFDevSound->MaxVolume();
+ INFO_PRINTF1(_L("Calling CMMFDevSound::MaxVolume"));
+ if(maxVolume == iExVolume)
+ {
+ INFO_PRINTF2(_L("Calling CMMFDevSound::MaxVolume succeeded with the expected value %d"), maxVolume);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Calling CMMFDevSound::MaxVolume failed with value %d"), maxVolume);
+ ERR_PRINTF2(_L("Expected value = %d"), iExVolume);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0017
+ */
+RA3FDevSoundPlaySamplesPlayedTest::RA3FDevSoundPlaySamplesPlayedTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iExSamplesPlayed(0)
+ {
+ }
+
+RA3FDevSoundPlaySamplesPlayedTest* RA3FDevSoundPlaySamplesPlayedTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySamplesPlayedTest* self = new (ELeave) RA3FDevSoundPlaySamplesPlayedTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySamplesPlayedTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExSamplesPlayed, iExSamplesPlayed))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExSamplesPlayed);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlaySamplesPlayedTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySamplesPlayedTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
+ TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
+ INFO_PRINTF2(_L("Samples returned by CMMFDevSound::SamplesPlayed = %d"), samplesPlayed);
+ if(samplesPlayed == iExSamplesPlayed)
+ {
+ INFO_PRINTF3(_L("Samples returned by CMMFDevSound::SamplesPlayed: %d matches the expected samples played: %d"), samplesPlayed, iExSamplesPlayed);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Call to CMMFDevSound::SamplesPlayed do not match the expected value = %d"), samplesPlayed);
+ ERR_PRINTF2(_L("Expected Samples played value = %d"), iExSamplesPlayed);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0018
+ */
+RA3FDevSoundPlayVolumeTest::RA3FDevSoundPlayVolumeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iExVolume(0)
+ {
+ }
+
+RA3FDevSoundPlayVolumeTest* RA3FDevSoundPlayVolumeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayVolumeTest* self = new (ELeave) RA3FDevSoundPlayVolumeTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayVolumeTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlayVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayVolumeTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Volume"));
+ TInt volumeGet = iMMFDevSound->Volume();
+ INFO_PRINTF2(_L("Volume returned by CMMFDevSound::Volume() = %d"), volumeGet);
+ if(volumeGet == iExVolume)
+ {
+ INFO_PRINTF3(_L("Volume returned by CMMFDevSound::Volume(): %d matches the default device volume: %d"), volumeGet, iExVolume);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Default device volume failed with %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = % d"), iExVolume);
+ StopTest(aError , EFail);
+ }
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0019
+ */
+RA3FDevSoundPlayCapabilitiesWhilePlayingTest::RA3FDevSoundPlayCapabilitiesWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iExCapChannels(0), iExCapRate(0)
+ {
+ }
+
+RA3FDevSoundPlayCapabilitiesWhilePlayingTest* RA3FDevSoundPlayCapabilitiesWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayCapabilitiesWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayCapabilitiesWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayCapabilitiesWhilePlayingTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if ( !GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayCapabilitiesWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ TMMFCapabilities capabilitiesGet;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Capabilities while playing"));
+ capabilitiesGet = iMMFDevSound->Capabilities ();
+ INFO_PRINTF3(_L("Rate Sum:0x%x Channels Sum:0x%x"), capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ PrintSupportedCapabilities (capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ if(capabilitiesGet.iRate == iExCapRate && capabilitiesGet.iChannels == iExCapChannels)
+ {
+ INFO_PRINTF3(_L("Capabilities returned match expected capabilities which are Sum:0x%x Channels Sum:0x%x"), capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Capabilities returned do not match the expected capabilities. The total capabilities Sum:0x%x Channels Sum:0x%x "), capabilitiesGet.iRate, capabilitiesGet.iChannels);
+ ERR_PRINTF3(_L("Expected Rate Sum:0x%x Channels Sum:0x%x"), iExCapRate, iExCapChannels);
+ StopTest (KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayCapabilitiesWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0020
+ */
+RA3FDevSoundPlayConfigWhilePlayingTest::RA3FDevSoundPlayConfigWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC), iExCapRate(0),
+ iExCapChannels(0)
+ {
+ }
+
+RA3FDevSoundPlayConfigWhilePlayingTest* RA3FDevSoundPlayConfigWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayConfigWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayConfigWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayConfigWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayConfigWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData ();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ TMMFCapabilities capabilitiesGet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
+ TBuf<KMaxChannelsStringLength> stringChannelsGet;
+ TBuf<KMaxSampleRateStringLength> stringSampleRateExpected;
+ TBuf<KMaxChannelsStringLength> stringChannelsExpected;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Config while playing"));
+ capabilitiesGet=iMMFDevSound->Config ();
+ SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
+ ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
+ SampleRateFromTIntToTMMFSampleRate (iExCapRate, iExSampleRate);
+ SampleRateFromTUintToString (iExSampleRate, stringSampleRateExpected);
+ ChannelsFromTUintToString (iExCapChannels, stringChannelsExpected);
+ if (stringSampleRateExpected.Compare(stringSampleRateGet) == 0)
+ {
+ INFO_PRINTF2(_L("Sample rate value match default as expected with %S"), &stringSampleRateGet);
+ if (stringChannelsExpected.Compare(stringChannelsGet) == 0)
+ {
+ INFO_PRINTF2(_L("Channel mode value match default as expected with %S"), &stringChannelsGet);
+ StopTest();
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Channel mode value failed with %S"), &stringChannelsGet);
+ ERR_PRINTF2(_L("Expected channel mode %S"), &stringChannelsExpected);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Sample rate value failed with %S"), &stringSampleRateGet);
+ ERR_PRINTF2(_L("Expected sample rate %S"), &stringSampleRateExpected);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayConfigWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm (EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0021
+ */
+RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest::RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),
+ iFilename(KNullDesC),
+ iExLSpeakerBalance(0),
+ iExRSpeakerBalance(0)
+ {
+ }
+
+RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest* RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExLSpeakerBalance, iExLSpeakerBalance))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExLSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExRSpeakerBalance, iExRSpeakerBalance))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExRSpeakerBalance);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy (filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer (KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData ();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ TInt getBalanceL, getBalanceR;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::GetPlayBalance while playing"));
+ TRAPD(err, iMMFDevSound->GetPlayBalanceL(getBalanceL, getBalanceR));
+ INFO_PRINTF3(_L("Balance returned by CMMFDevSound::GetPlayBalance left = %d right = %d"), getBalanceL, getBalanceR);
+ if (err == KErrNone)
+ {
+ if(getBalanceL == iExLSpeakerBalance && getBalanceR == iExRSpeakerBalance)
+ {
+ INFO_PRINTF5(_L("Balance returned by CMMFDevSound::GetPlayBalance: left %d right %d matches the default device balance: left %d right %d"), getBalanceL, getBalanceR, iExLSpeakerBalance, iExRSpeakerBalance);
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Balance values do not match expected values, left %d right %d"), getBalanceL, getBalanceR);
+ ERR_PRINTF3(_L("Expected values, left %d right %d"), iExLSpeakerBalance, iExRSpeakerBalance);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("Error in getting left and right play balance."));
+ StopTest(err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayGetPlayBalanceWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0022
+ */
+RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest::RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest* RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData ();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ RArray< TFourCC > supportedDataTypes;
+ TMMFPrioritySettings prioritySettings;
+ TRAPD(err,iMMFDevSound->GetSupportedInputDataTypesL(supportedDataTypes, prioritySettings));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Getting supported data types falied ! Left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ for(TInt x = 0; x < supportedDataTypes.Count (); x++)
+ {
+ TFourCC fourCC = supportedDataTypes[x];
+ TBuf<KTFourCC> name;
+ for (TInt i=0; i<= KFourCCMaxBitDisplacement; i+=K8Bits)
+ {
+ name.Append ( (TUint8)(fourCC.FourCC() >> i));
+ }
+ INFO_PRINTF3(_L("Supported Input Data types: 0x%x %S "), fourCC.FourCC(), &name);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayGetSupportedInputDataTypesWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0023
+ */
+RA3FDevSoundPlayMaxVolumeWhilePlayingTest::RA3FDevSoundPlayMaxVolumeWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iExVolume(0)
+ {
+ }
+
+RA3FDevSoundPlayMaxVolumeWhilePlayingTest* RA3FDevSoundPlayMaxVolumeWhilePlayingTest::NewL( const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayMaxVolumeWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayMaxVolumeWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayMaxVolumeWhilePlayingTest::DoKickoffTestL()
+ {
+ if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayMaxVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if ( aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete was NOT received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ TInt maxVolume = iMMFDevSound->MaxVolume();
+ INFO_PRINTF1(_L("Calling CMMFDevSound::MaxVolume"));
+ if(maxVolume == iExVolume)
+ {
+ INFO_PRINTF2(_L("Call to CMMFDevSound::MaxVolume succeeded with %d"), maxVolume);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Call to CMMFDevSound::MaxVolume failed with %d"), maxVolume);
+ ERR_PRINTF2(_L("Expected Max volume value = %d"), iExVolume);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayMaxVolumeWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm (EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0024
+ */
+RA3FDevSoundPlaySamplesPlayedWhilePlayingTest::RA3FDevSoundPlaySamplesPlayedWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iExSamplesPlayed(0)
+ {
+ }
+
+RA3FDevSoundPlaySamplesPlayedWhilePlayingTest* RA3FDevSoundPlaySamplesPlayedWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlaySamplesPlayedWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlaySamplesPlayedWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlaySamplesPlayedWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlaySamplesPlayedWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read(buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest (err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
+ TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
+ INFO_PRINTF2(_L("Samples played so far %d"), samplesPlayed);
+ if(samplesPlayed > 0)
+ {
+ INFO_PRINTF2(_L("Samples returned by CMMFDevSound::SamplesPlayed: %d matches the expected value which is > 0"), samplesPlayed);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Samples played returned an invalid value %d"), samplesPlayed);
+ ERR_PRINTF1(_L("Expected value must be a positive value greater than 0"));
+ StopTest(aError, EFail);
+
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlaySamplesPlayedWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0025
+ */
+
+RA3FDevSoundPlayVolumeWhilePlayingTest::RA3FDevSoundPlayVolumeWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iExVolume(0)
+ {
+ }
+
+RA3FDevSoundPlayVolumeWhilePlayingTest* RA3FDevSoundPlayVolumeWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayVolumeWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayVolumeWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayVolumeWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer (KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete NOT received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read(buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Volume"));
+ TInt volumeGet = iMMFDevSound->Volume();
+ if(volumeGet == iExVolume)
+ {
+ INFO_PRINTF2(_L("Default device volume succeeded with = %d"), volumeGet);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Default device volume failed with = %d"), volumeGet);
+ ERR_PRINTF2(_L("Expected value = % d"), iExVolume);
+ StopTest(aError , EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayVolumeWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0026
+ */
+RA3FDevSoundPlayTest::RA3FDevSoundPlayTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayTest* RA3FDevSoundPlayTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayTest* self = new (ELeave) RA3FDevSoundPlayTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if ( !GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest (KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy (filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlayTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayCapabilitiesPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest (err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0027
+ */
+RA3FDevSoundPlayEmptyBufferWhilePlayingTest::RA3FDevSoundPlayEmptyBufferWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayEmptyBufferWhilePlayingTest* RA3FDevSoundPlayEmptyBufferWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayEmptyBufferWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayEmptyBufferWhilePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayEmptyBufferWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayEmptyBufferWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayEmptyBufferPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError, EFail);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read(buffer->Data());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize ())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData()"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::EmptyBuffers()"));
+ TInt err = iMMFDevSound->EmptyBuffers();
+ if (err == KErrNone)
+ {
+ INFO_PRINTF2(_L("Call EmptyBuffers() while playing returned error = %d"), err);
+ StopTest();
+ break;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Call EmptyBuffers() while playing returned error = %d"), err);
+ ERR_PRINTF2(_L("Expected error = %d"), KErrNone);
+ StopTest(err);
+ break;
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest (aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayEmptyBufferWhilePlayingTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0028
+ */
+RA3FDevSoundPlayEmptyBufferBeforePlayingTest::RA3FDevSoundPlayEmptyBufferBeforePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName)
+ {
+ }
+
+RA3FDevSoundPlayEmptyBufferBeforePlayingTest* RA3FDevSoundPlayEmptyBufferBeforePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayEmptyBufferBeforePlayingTest* self = new (ELeave) RA3FDevSoundPlayEmptyBufferBeforePlayingTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayEmptyBufferBeforePlayingTest::DoKickoffTestL()
+ {
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayEmptyBufferBeforePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayEmptyBufferPlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying)) ;
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::EmptyBuffers()"));
+ TInt err = iMMFDevSound->EmptyBuffers ();
+ if (err == KErrNotReady)
+ {
+ INFO_PRINTF2(_L("Calling CMMFDevSound::EmptyBuffers after initialization and before playback returned with the expected error = %d"), err);
+ StopTest();
+ break;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Calling CMMFDevSound::EmptyBuffers after initialization and before playback returned with error = %d"), err);
+ ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+ StopTest(err, EFail);
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError, EFail);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0029
+ */
+RA3FDevSoundPlayPauseTest::RA3FDevSoundPlayPauseTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iPaused(EFalse), iSamplesPlayedPaused(0)
+ {
+ }
+
+RA3FDevSoundPlayPauseTest* RA3FDevSoundPlayPauseTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayPauseTest* self = new (ELeave) RA3FDevSoundPlayPauseTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayPauseTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayPauseTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPauseTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
+ iMMFDevSound->Pause();
+ iDevSoundState = EStatePause;
+ INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
+ iSamplesPlayedPaused = iMMFDevSound->SamplesPlayed();
+ INFO_PRINTF2(_L("The number of samples played is %d"), iSamplesPlayedPaused);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePause:
+ {
+ if (aDevSoundEvent == EEventTimerComplete)
+ {
+ TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
+ INFO_PRINTF2(_L("Samples returned by CMMFDevSound::SamplesPlayed = %d"), samplesPlayed);
+ if(iSamplesPlayedPaused == samplesPlayed)
+ {
+ INFO_PRINTF3(_L("Samples returned by CMMFDevSound::SamplesPlayed: %d matches the expected samples played: %d"), samplesPlayed, iSamplesPlayedPaused);
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Call to CMMFDevSound::SamplesPlayed do not match the expected value = %d"), samplesPlayed);
+ ERR_PRINTF2(_L("Expected Samples played value = %d"), iSamplesPlayedPaused);
+ StopTest(KErrNone, EFail);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPauseTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ if (!iPaused)
+ {
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ iPaused = ETrue;
+ }
+ else
+ {
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0030
+ */
+RA3FDevSoundPlayStopTest::RA3FDevSoundPlayStopTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC), iStopped(EFalse)
+ {
+ }
+
+RA3FDevSoundPlayStopTest* RA3FDevSoundPlayStopTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayStopTest* self = new (ELeave) RA3FDevSoundPlayStopTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayStopTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+void RA3FDevSoundPlayStopTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayStopTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ if (!iStopped)
+ {
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ }
+ else
+ {
+ INFO_PRINTF1(_L("InitializeComplete returned KErrNone after calling CMMFDevSound::Stop then CMMFDevSound::InitializeL"));
+ StopTest();
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ if (!iStopped)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("InitializeComplete returned %d after calling CMMFDevSound::Stop then CMMFDevSound::InitializeL"), aError);
+ StopTest(aError);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ INFO_PRINTF1(_L("CMMFDevSound::Stop"));
+ iMMFDevSound->Stop();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayStopTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ if (!iStopped)
+ {
+ INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
+ Fsm(EEventTimerComplete, KErrNone);
+ iStopped = ETrue;
+ }
+ else
+ {
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Initializing again after stop successful. Hence passing the test"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ }
+
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0031
+ */
+RA3FDevSoundPlayPreemptionTest::RA3FDevSoundPlayPreemptionTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iOtherFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayPreemptionTest* RA3FDevSoundPlayPreemptionTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayPreemptionTest* self = new (ELeave) RA3FDevSoundPlayPreemptionTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayPreemptionTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ // Get the filename of the second devsound instance
+ TPtrC tempString;
+ if (!GetStringFromConfig(iTestStepName, KOtherFilename, tempString))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ iOtherFilename.Copy (tempString);
+ INFO_PRINTF2(_L("File under test -> %S"), &iOtherFilename);
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ }
+
+void RA3FDevSoundPlayPreemptionTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPreemptionTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer(KMicroSecsTwoSec);
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest (err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptionTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundPlayClient->SetPriority(KMaximumPriority);
+ INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayInit(iOtherFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initializating DevSound to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptionTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
+ {
+ INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
+ INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("First DevSound client PlayError and failed with error = %d "), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptionTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayAudio();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptionTest::ClientBufferToBeFilledCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound BufferToBeFilled() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second DevSound client called BufferToBeFilled and failed with error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptionTest::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ break;
+ case EInvalidClientFSMState:
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ break;
+ case EReadFileErrorInClient:
+ ERR_PRINTF1(_L("Second devsound client could not read to file..."));
+ break;
+ default:
+ break;
+ }
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayPreemptionTest::ClientPlayErrorCallback(TInt aError, TBool aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
+
+ if (aError == KErrUnderflow && aLastBuffer)
+ {
+ INFO_PRINTF1(_L("Second DevSound client called PlayError and completed normally"));
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
+ ERR_PRINTF2(_L("Expected error = %d "), KErrUnderflow);
+ StopTest(aError, EFail);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * 3F-DEVSOUND-CHRTZ-PLAY-RAW-0032
+ */
+RA3FDevSoundPlayPreemptedByToneTest::RA3FDevSoundPlayPreemptedByToneTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),iFilename(KNullDesC),
+ iFrequencyTone1(0), iDuration(0)
+ {
+ }
+
+RA3FDevSoundPlayPreemptedByToneTest* RA3FDevSoundPlayPreemptedByToneTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayPreemptedByToneTest* self = new (ELeave) RA3FDevSoundPlayPreemptedByToneTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundToneClient = CA3FDevSoundToneClient::NewL(*this);
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPreemptedByToneTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer (KMicroSecsTwoSec);
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundToneClient->SetPriority(KMaximumPriority);
+ INFO_PRINTF1(_L("Initializing to play tones thru second devsound client"));
+ TInt err = iDevsoundToneClient->InitTonePlay(iFrequencyTone1,iDuration*KMicroSecsInOneSec);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initializating DevSoud to play tones thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
+ {
+ INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
+ INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("First DevSound client called PlayError and failed with error = %d "), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("==========Second DevSound client called InitializeComplete()=========="));
+ if (aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Starting to play tone thru second devsound client"));
+ TInt err = iDevsoundToneClient->PlayTone ();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound client called PlayTone and failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByToneTest::ClientToneFinishedCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second DevSound client called ToneFinished()=========="));
+ if (aError == KErrUnderflow)
+ {
+ INFO_PRINTF2(_L("Second DevSound client called ToneFinished and succeeded with error = %d"), aError);
+ StopTest(aError, EPass);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound client called ToneFinished and failed with error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0033
+ */
+RA3FDevSoundPlayPreemptedByRecordTest::RA3FDevSoundPlayPreemptedByRecordTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+
+ {
+ }
+
+RA3FDevSoundPlayPreemptedByRecordTest* RA3FDevSoundPlayPreemptedByRecordTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayPreemptedByRecordTest* self = new (ELeave) RA3FDevSoundPlayPreemptedByRecordTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+ // Get the filename of the audio file to record
+ if (!GetStringFromConfig(iTestStepName, KOtherFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ iOtherFilename.Copy(filename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundRecordClient = CA3FDevSoundRecordClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPreemptedByRecordTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer(KMicroSecsTwoSec);
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ if (!iOtherClientStarted)
+ {
+ INFO_PRINTF1(_L("Initializing higher priority devsound client..."));
+ iDevsoundRecordClient->SetPriority (KMaximumPriority);
+ TInt err = iDevsoundRecordClient->InitializeRecordClient (iOtherFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF1(_L("Initializating DevSoud to record audio thru second devsound client failed with error = %d"));
+ StopTest(err);
+ }
+ iOtherClientStarted = ETrue;
+ }
+ else
+ {
+ iTimer->Cancel();
+ iDevsoundRecordClient->StopRecord();
+ StopTest();
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
+ {
+ INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
+ INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("First DevSound client called PlayError and failed with error = %d "), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Second DevSound client called InitializeComplete with error = %d"), aError);
+ INFO_PRINTF1(_L("Starting to record audio thru second devsound client"));
+ TInt err = iDevsoundRecordClient->RecordAudio ();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to record audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::ClientBufferToBeEmptiedCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound ClientBufferToBeEmptied() callback =========="));
+ switch (aError)
+ {
+ case KErrGeneral:
+ {
+ INFO_PRINTF1(_L("Second DevSound client called BufferToBeEmptied and received a NULL CMMFBuffer"));
+ StopTest(aError);
+ break;
+ }
+ case KErrUnknown:
+ {
+ INFO_PRINTF1(_L("Second DevSound client called BufferToBeEmptied: Unknown behaviour: Last buffer flag set before calling CMMFDevSound->Pause()"));
+ StopTest(aError);
+ break;
+ }
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::ClientRecordErrorCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound RecordError() callback =========="));
+ if (aError == KErrUnderflow)
+ {
+ INFO_PRINTF2(_L("Second DevSound client called RecordError with error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+void RA3FDevSoundPlayPreemptedByRecordTest::ClientRecordHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ {
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ StopTest(KErrNone, EFail);
+ break;
+ }
+ case EInvalidClientFSMState:
+ {
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ StopTest(KErrNone, EFail);
+ break;
+ }
+ case EWriteFileErrorInClient:
+ {
+ ERR_PRINTF1(_L("Second devsound client could not write to file..."));
+ StopTest(KErrNone, EFail);
+ break;
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0034
+ */
+RA3FDevSoundPlayRejectionTest::RA3FDevSoundPlayRejectionTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iOtherFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayRejectionTest* RA3FDevSoundPlayRejectionTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayRejectionTest* self = new (ELeave) RA3FDevSoundPlayRejectionTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayRejectionTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ // Get the filename of the second devsound instance
+ TPtrC tempString;
+ if (!GetStringFromConfig(iTestStepName, KOtherFilename, tempString))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ iOtherFilename.Copy (tempString);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ }
+
+void RA3FDevSoundPlayRejectionTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayRejectionTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMaximumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if ( err != KErrNone)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::PlayInitL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer (KMicroSecsTwoSec);
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectionTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundPlayClient->SetPriority(KMinimumPriority);
+ INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayInit(iOtherFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initialization to play audio thru second devsound client failed with %d"), err);
+ StopTest(err);
+ }
+ }
+
+void RA3FDevSoundPlayRejectionTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Second DevSound client called InitializeComplete with error = %d"), aError);
+ INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayAudio ();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectionTest::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ break;
+ case EInvalidClientFSMState:
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ break;
+ case EReadFileErrorInClient:
+ ERR_PRINTF1(_L("Second devsound client could not read to file..."));
+ break;
+ default:
+ break;
+ }
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectionTest::ClientBufferToBeFilledCallback(TInt aError)
+ {
+ INFO_PRINTF2(_L("Second DevSound client should not call BufferToBeFilled in rejection. Error = %d"), aError);
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectionTest::ClientPlayErrorCallback(TInt aError, TBool aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
+
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied && !aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Rejecting 2nd DevSound Instance=========="));
+ INFO_PRINTF2(_L("Second DevSound client PlayError succeeded with error = %d"), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0035
+ */
+RA3FDevSoundPlayRejectedByToneTest::RA3FDevSoundPlayRejectedByToneTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayRejectedByToneTest* RA3FDevSoundPlayRejectedByToneTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayRejectedByToneTest* self = new (ELeave) RA3FDevSoundPlayRejectedByToneTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy (filename);
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayRejectedByToneTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneL"));
+ TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error =%d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer(KMicroSecsTwoSec);
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundPlayClient->SetPriority(KMinimumPriority);
+ INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayInit(iFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initialization to play audio thru second devsound client failed with %d"), err);
+ StopTest(err);
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest (aError);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Second DevSound client called InitializeComplete with error = %d"), aError);
+ INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayAudio ();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ break;
+ case EInvalidClientFSMState:
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ break;
+ case EReadFileErrorInClient:
+ ERR_PRINTF1(_L("Second devsound client could not read to file..."));
+ break;
+ default:
+ break;
+ }
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::ClientBufferToBeFilledCallback(TInt aError)
+ {
+ INFO_PRINTF2(_L("Second DevSound client should not call BufferToBeFilled in rejection. Error = %d"), aError);
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectedByToneTest::ClientPlayErrorCallback(TInt aError,TBool aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied && !aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Rejecting 2nd DevSound Instance=========="));
+ INFO_PRINTF2(_L("Second DevSound client PlayError succeeded with error = %d"), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0036
+ */
+RA3FDevSoundPlayRejectedByRecordTest::RA3FDevSoundPlayRejectedByRecordTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iOtherFilename(KNullDesC), iOtherClientStarted(EFalse)
+ {
+ }
+
+RA3FDevSoundPlayRejectedByRecordTest* RA3FDevSoundPlayRejectedByRecordTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayRejectedByRecordTest* self = new (ELeave) RA3FDevSoundPlayRejectedByRecordTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // Open file for recording using RFile
+
+ iFilename.Copy (filename);
+
+ // Get the filename of the second audio file to play
+ if (!GetStringFromConfig(iTestStepName, KOtherFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ INFO_PRINTF2(_L("Opening file for recording %S"), &iFilename);
+ TInt err = iFile.Replace (iFs, iFilename, EFileWrite);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ iOtherFilename.Copy (filename);
+
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest (KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, *this);
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayRejectedByRecordTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ INFO_PRINTF1(_L("iMMFDevSound->InitializeL()"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initialization of DevSound failed with error : %d!"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("CMMFDevSound::RecordInitL"));
+ TRAPD(err, iMMFDevSound->RecordInitL());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound RecordInitL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ StartTimer(KMicroSecsTwoSec);
+ INFO_PRINTF1(_L("DevSound State: EStateRecording"));
+ iDevSoundState = EStateRecording;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateRecording:
+ {
+ if (aDevSoundEvent == EEventBTBE)
+ {
+ // Write buffer to file
+ INFO_PRINTF1(_L("Writing data to file"));
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ iAsyncWriteBTFAO->Start(buffer);
+ }
+ else if (aDevSoundEvent == EEventTimerComplete)
+ {
+ iMMFDevSound->Pause();
+ INFO_PRINTF1(_L("DevSound State: EStatePause"));
+ iDevSoundState = EStatePause;
+ INFO_PRINTF1(_L("Recording is Paused, waiting for the last buffer callback"));
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBE not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePause:
+ {
+ if (aDevSoundEvent == EEventBTBE)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ // Continue recording data
+ iAsyncWriteBTFAO->Start (buffer);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBE not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ if (!iOtherClientStarted)
+ {
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundPlayClient->SetPriority(KMinimumPriority);
+ INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayInit(iFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initialization to play audio thru second devsound client failed with %d"), err);
+ StopTest(err);
+ }
+ iOtherClientStarted = ETrue;
+ }
+ else
+ {
+ iTimer->Cancel();
+ Fsm(EEventTimerComplete, KErrNone);
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Second DevSound client called InitializeComplete and with error = %d"), aError);
+ INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayAudio();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ break;
+ case EInvalidClientFSMState:
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ break;
+ case EReadFileErrorInClient:
+ ERR_PRINTF1(_L("Second devsound client could not read to file..."));
+ break;
+ default:
+ break;
+ }
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::ClientBufferToBeFilledCallback(TInt aError)
+ {
+ INFO_PRINTF2(_L("Second DevSound client should not call BufferToBeFilled in rejection. Error = %d"), aError);
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayRejectedByRecordTest::ClientPlayErrorCallback(TInt aError, TBool aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
+
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied && !aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Rejecting 2nd DevSound Instance=========="));
+ INFO_PRINTF2(_L("Second DevSound client PlayError succeeded with error = %d"), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0037
+ */
+RA3FDevSoundPlayDataBeforePlayInitTest::RA3FDevSoundPlayDataBeforePlayInitTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName)
+ {
+ }
+
+RA3FDevSoundPlayDataBeforePlayInitTest* RA3FDevSoundPlayDataBeforePlayInitTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayDataBeforePlayInitTest* self = new (ELeave) RA3FDevSoundPlayDataBeforePlayInitTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayDataBeforePlayInitTest::DoKickoffTestL()
+ {
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+void RA3FDevSoundPlayDataBeforePlayInitTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPlayDatabeforePlayInitLTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData out of sequence"));
+ iMMFDevSound->PlayData();
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0038
+ */
+RA3FDevSoundPlayInitTwiceTest::RA3FDevSoundPlayInitTwiceTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),iFirstPlayInitErr(KErrGeneral),
+ iErr(KErrGeneral)
+ {
+ }
+
+RA3FDevSoundPlayInitTwiceTest* RA3FDevSoundPlayInitTwiceTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayInitTwiceTest* self = new (ELeave) RA3FDevSoundPlayInitTwiceTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayInitTwiceTest::DoKickoffTestL()
+ {
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC (fourccCode);
+ }
+
+void RA3FDevSoundPlayInitTwiceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPlayInitLTwiceTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAP(iFirstPlayInitErr, iMMFDevSound->PlayInitL());
+ if (iFirstPlayInitErr != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::PlayInitL left with error = %d"), iFirstPlayInitErr);
+ StopTest(iFirstPlayInitErr);
+ break;
+ }
+ INFO_PRINTF1(_L("CMMFDevSound::PlayInitL twice (more than once)"));
+ TRAP(iErr, iMMFDevSound->PlayInitL());
+ if (iErr == KErrNotReady)
+ {
+ INFO_PRINTF2(_L("CMMFDevSound::PlayInitL left with the expected error = %d"), iErr);
+ break;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second CMMFDevSound::PlayInitL did NOT leave with the expected error = %d"), iErr);
+ ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
+ StopTest(iErr, EFail);
+ break;
+ }
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayInitTwiceTest::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
+ {
+ INFO_PRINTF1(_L("========== DevSound BufferToBeFilled() callback =========="));
+ if (iErr == KErrNotReady && iFirstPlayInitErr == KErrNone)
+ {
+ INFO_PRINTF1(_L("BufferToBeFilled is called because the leave generated due to second CMMFDevSound::PlayInitL is ignored"));
+ StopTest();
+ }
+ }
+
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0039
+ */
+RA3FDevSoundPlayARNTest::RA3FDevSoundPlayARNTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC),
+ iOtherFilename(KNullDesC)
+ {
+ }
+
+RA3FDevSoundPlayARNTest* RA3FDevSoundPlayARNTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayARNTest* self = new (ELeave) RA3FDevSoundPlayARNTest(aTestName);
+ return self;
+ }
+
+void RA3FDevSoundPlayARNTest::DoKickoffTestL()
+ {
+ iRepeat = EFalse;
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+ // Get the filename of the second devsound instance
+ TPtrC tempString;
+ if (!GetStringFromConfig(iTestStepName, KOtherFilename, tempString))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ iOtherFilename.Copy (tempString);
+ INFO_PRINTF2(_L("File under test -> %S"), &iOtherFilename);
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
+ }
+
+void RA3FDevSoundPlayARNTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPreemptionTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ INFO_PRINTF1(_L("Registering first client"));
+ iMMFDevSound->RegisterAsClient(KMMFEventCategoryAudioResourceAvailable);
+ iDevSoundState = EStatePlaying;
+ StartTimer(KMicroSecsTwoSec);
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest (err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateResumePlaying:
+ {
+// if (aDevSoundEvent == KMMFEventCategoryAudioResourceAvailable)
+ if (aDevSoundEvent == EResourceAvailable)
+ {
+ INFO_PRINTF1(_L("First Client Received Notification as expected"));
+ //INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ //iMMFDevSound->PlayData ();
+ StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound KMMFEventCategoryAudioResourceAvailable not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(KErrGeneral);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayARNTest::DoTimerCallback()
+ {
+ if(!iRepeat)
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ //iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundPlayClient->SetPriority(KMaximumPriority);
+ INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayInit(iOtherFilename);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initializating DevSound to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ iRepeat = ETrue;
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Deleting second devsound client"));
+ iDevsoundPlayClient->DeleteClient();
+ iDevSoundState = EStateResumePlaying;
+ }
+ }
+
+void RA3FDevSoundPlayARNTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
+ {
+ INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
+ INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("First DevSound client PlayError and failed with error = %d "), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+void RA3FDevSoundPlayARNTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
+ TInt err = iDevsoundPlayClient->PlayAudio();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ }
+
+void RA3FDevSoundPlayARNTest::ClientBufferToBeFilledCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound BufferToBeFilled() callback =========="));
+ if (aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second DevSound client called BufferToBeFilled and failed with error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+void RA3FDevSoundPlayARNTest::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
+ {
+ switch (aError)
+ {
+ case EInvalidClientFSMEvent:
+ ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
+ break;
+ case EInvalidClientFSMState:
+ ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
+ break;
+ case EReadFileErrorInClient:
+ ERR_PRINTF1(_L("Second devsound client could not read to file..."));
+ break;
+ default:
+ break;
+ }
+ StopTest(aError, EFail);
+ }
+
+void RA3FDevSoundPlayARNTest::ClientPlayErrorCallback(TInt aError, TBool aLastBuffer)
+ {
+ INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
+
+ if (aError == KErrUnderflow && aLastBuffer)
+ {
+ INFO_PRINTF1(_L("Second DevSound client called PlayError and completed normally"));
+ iDevSoundState = EStateResumePlaying;
+ //StopTest();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
+ ERR_PRINTF2(_L("Expected error = %d "), KErrUnderflow);
+ StopTest(aError, EFail);
+ }
+ }
+
+ /*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0040
+ */
+ RA3FDevSoundImmediatePauseAfterCreation::RA3FDevSoundImmediatePauseAfterCreation(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iFilename(KNullDesC)
+ {
+ }
+
+ RA3FDevSoundImmediatePauseAfterCreation* RA3FDevSoundImmediatePauseAfterCreation::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundImmediatePauseAfterCreation* self = new (ELeave) RA3FDevSoundImmediatePauseAfterCreation(aTestName);
+ return self;
+ }
+
+ void RA3FDevSoundImmediatePauseAfterCreation::DoKickoffTestL()
+ {
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ }
+
+ void RA3FDevSoundImmediatePauseAfterCreation::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundImmediatePauseAfterCreation"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
+
+ iMMFDevSound->Pause();
+ StartTimer(KMicroSecsInOneSec);
+
+ iDevSoundState = EStatePause;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+ void RA3FDevSoundImmediatePauseAfterCreation::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Pause did not panic DevSound"));
+ StopTest(KErrNone);
+ }
+
+
+ /*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-PLAY-RAW-0041
+ */
+ RA3FDevSoundPlayEmptyBuffersWhilePlayingTest::RA3FDevSoundPlayEmptyBuffersWhilePlayingTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName), iVolume(0),
+ iFilename(KNullDesC)
+ {
+ }
+
+ RA3FDevSoundPlayEmptyBuffersWhilePlayingTest* RA3FDevSoundPlayEmptyBuffersWhilePlayingTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayEmptyBuffersWhilePlayingTest* self = new (ELeave) RA3FDevSoundPlayEmptyBuffersWhilePlayingTest(aTestName);
+ return self;
+ }
+
+ void RA3FDevSoundPlayEmptyBuffersWhilePlayingTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest (KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy (filename);
+ TInt err = iFile.Open (iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ iFs.Close();
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
+ StopTest (KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+ EncodingFromStringToTFourCC(fourccCode);
+ }
+
+ void RA3FDevSoundPlayEmptyBuffersWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlaySetVolumePlayingTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error: %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest(err);
+ break;
+ }
+ iDevSoundState = EStatePlaying;
+ }
+ else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+
+ if(iBtbfCount == 3)
+ {
+ INFO_PRINTF2(_L("BTBF count = %d, Calling CMMFDevSound::EmptyBuffers"),iBtbfCount);
+ iMMFDevSound->EmptyBuffers();
+ }
+
+ else
+ {
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data ());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with: %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize ())
+ {
+ iBuffer->SetLastBuffer (ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData ();
+ }
+
+ ++iBtbfCount;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+ /*
+ *========================================================================================================
+ * 3F-DEVSOUND-CHRTZ-PLAY-RAW-0042
+ */
+ RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest(const TDesC& aTestName) :
+ RA3FDevSoundTestBase(aTestName),iFilename(KNullDesC),
+ iExVolume(0), iFrequencyTone1(0), iDuration(0),
+ iSetVolume(EFalse), iResume(EFalse)
+ {
+ }
+
+ RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest* RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::NewL(const TDesC& aTestName)
+ {
+ RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest* self = new (ELeave) RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest(aTestName);
+ return self;
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::DoKickoffTestL()
+ {
+ TPtrC filename;
+ // Get the filename of the audio file to play
+ if (!GetStringFromConfig(iTestStepName, KFilename, filename))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
+ StopTest(KErrNotFound);
+ return;
+ }
+ // open using RFile for playback
+ iFilename.Copy(filename);
+ TInt err = iFile.Open(iFs, iFilename, EFileRead);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
+ StopTest(err);
+ return;
+ }
+
+ INFO_PRINTF2(_L("File under test -> %S"), &iFilename);
+
+ if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
+ StopTest(KErrNotFound);
+ return;
+ }
+ if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
+ StopTest(KErrNotFound);
+ return;
+ }
+ TPtrC fourccCode;
+ if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume))
+ {
+ ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
+ StopTest(KErrNotFound);
+ return;
+ }
+
+ EncodingFromStringToTFourCC(fourccCode);
+ iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
+ iDevsoundToneClient = CA3FDevSoundToneClient::NewL(*this);
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
+ {
+ switch (iDevSoundState)
+ {
+ case EStateCreated:
+ {
+ __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundPlayPreemptedByToneTest"), EFsmIncorrectErrorPassed));
+ if (aDevSoundEvent == EEventInitialize)
+ {
+ INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+ TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+ StopTest(err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
+ iDevSoundState = EStateInitializing;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStateInitializing:
+ {
+ if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
+ {
+ TMMFPrioritySettings priority;
+ priority.iPriority = KMinimumPriority;
+ INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
+ iMMFDevSound->SetPrioritySettings (priority);
+ iMMFDevSound->SetVolume (iMMFDevSound->MaxVolume ());
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if (err != KErrNone)
+ {
+ StopTest (err);
+ break;
+ }
+ INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
+ iDevSoundState = EStatePlaying;
+ StartTimer (KMicroSecsTwoSec);
+ }
+ else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
+ {
+ ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
+ StopTest(aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ case EStatePlaying:
+ {
+ if (aDevSoundEvent == EEventBTBF)
+ {
+ if(iResume)
+ {
+ INFO_PRINTF1(_L("First Client resumed after pre-emption as expected"));
+ StopTest();
+ break;
+ }
+
+ if(!iSetVolume)
+ {
+ iMMFDevSound->SetVolume (iExVolume);
+ iSetVolume = ETrue;
+ }
+
+ CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
+ TInt err = iFile.Read (buffer->Data());
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
+ StopTest(err);
+ break;
+ }
+ if (buffer->Data().Length ()!= buffer->RequestSize())
+ {
+ iBuffer->SetLastBuffer(ETrue);
+ }
+ INFO_PRINTF1(_L("Calling CMMFDevSound::PlayData"));
+ iMMFDevSound->PlayData();
+ }
+ else
+ {
+ ERR_PRINTF2(_L("DevSound EEventBTBF not received as expected. Received event: %d"), aDevSoundEvent);
+ StopTest(aError, EFail);
+ }
+ break;
+ }
+ default:
+ {
+ ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+ StopTest(aError, EFail);
+ }
+ }
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::DoTimerCallback()
+ {
+ INFO_PRINTF1(_L("TimerEvent called"));
+ iTimer->Cancel();
+ INFO_PRINTF1(_L("Starting higher priority devsound client"));
+ iDevsoundToneClient->SetPriority(KMaximumPriority);
+ INFO_PRINTF1(_L("Initializing to play tones thru second devsound client"));
+ TInt err = iDevsoundToneClient->InitTonePlay(iFrequencyTone1,iDuration*KMicroSecsInOneSec);
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Initializating DevSoud to play tones thru second devsound client failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::PlayError(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
+ if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
+ {
+ INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
+ INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
+ }
+ else
+ {
+ ERR_PRINTF2(_L("First DevSound client called PlayError and failed with error = %d "), aError);
+ ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
+ StopTest(aError, EFail);
+ }
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::ClientInitializeCompleteCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("==========Second DevSound client called InitializeComplete()=========="));
+ if (aError == KErrNone)
+ {
+ INFO_PRINTF1(_L("Starting to play tone thru second devsound client"));
+ TInt err = iDevsoundToneClient->PlayTone ();
+ if (err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Second Devsound client called PlayTone and failed with error = %d"), err);
+ StopTest(err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+
+ void RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest::ClientToneFinishedCallback(TInt aError)
+ {
+ INFO_PRINTF1(_L("========== Second DevSound client called ToneFinished()=========="));
+ if (aError == KErrUnderflow)
+ {
+ INFO_PRINTF2(_L("Second DevSound client called ToneFinished and succeeded with error = %d"), aError);
+ iDevSoundState = EStatePlaying;
+ iResume = ETrue;
+ TRAPD(err, iMMFDevSound->PlayInitL());
+ if(err != KErrNone)
+ {
+ ERR_PRINTF2(_L("Call PlayInitL failed after Second DevSound client called ToneFinished with error = %d"), err);
+ StopTest(aError);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Second DevSound client called ToneFinished and failed with error = %d"), aError);
+ StopTest(aError);
+ }
+ }
+