devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.cpp
changeset 24 2672ba96448e
child 38 4269ca484c7b
equal deleted inserted replaced
21:1c0a769d0cc5 24:2672ba96448e
       
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 #include "char_a3f_devsound_tonetest.h"
       
    17 
       
    18 
       
    19 /*
       
    20  *========================================================================================================
       
    21  * MM-A3F-DEVSOUND-CHRTZ-TONE-0001
       
    22  */
       
    23 RA3FDevSoundToneSetConfigTest::RA3FDevSoundToneSetConfigTest(const TDesC& aTestName)
       
    24 	:	RA3FDevSoundTestBase(aTestName), iSampleRate(0),
       
    25 		iChannels(0)
       
    26 	{
       
    27 	}
       
    28 
       
    29 RA3FDevSoundToneSetConfigTest* RA3FDevSoundToneSetConfigTest::NewL(const TDesC& aTestName)
       
    30 	{
       
    31 	RA3FDevSoundToneSetConfigTest * self = new(ELeave)RA3FDevSoundToneSetConfigTest(aTestName);
       
    32 	return self; 
       
    33 	}
       
    34 
       
    35 void RA3FDevSoundToneSetConfigTest::DoKickoffTestL()
       
    36 	{
       
    37 	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
       
    38 		{
       
    39 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
    40 		StopTest(KErrNotFound);
       
    41 		return;
       
    42 		}
       
    43 	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
       
    44 		{
       
    45 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
    46 		StopTest(KErrNotFound);
       
    47 		return;
       
    48 		}
       
    49 	}
       
    50 
       
    51 
       
    52 void RA3FDevSoundToneSetConfigTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
    53 	{
       
    54 	switch(iDevSoundState)
       
    55 		{
       
    56 		case EStateCreated:
       
    57 			{
       
    58 			if(aDevSoundEvent == EEventInitialize)
       
    59 				{
       
    60 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetConfigTest"), EFsmIncorrectErrorPassed));
       
    61 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
    62 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
    63 				if (err != KErrNone)
       
    64 					{
       
    65 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
    66 					StopTest(err);
       
    67 					break;
       
    68 					}
       
    69 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
    70 				iDevSoundState = EStateInitializing;
       
    71 				}
       
    72 			else
       
    73 				{
       
    74 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
    75 				StopTest(aError, EFail);
       
    76 				}
       
    77 			break;
       
    78 			}
       
    79 		case EStateInitializing:
       
    80 			{
       
    81 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
    82 				{
       
    83 				TMMFCapabilities capabilitiesSet;
       
    84 				TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
       
    85 				TBuf<KMaxChannelsStringLength> stringChannelsSet;
       
    86 				TMMFSampleRate eSampleRate;
       
    87 				SampleRateFromTIntToTMMFSampleRate (iSampleRate, eSampleRate);
       
    88 				capabilitiesSet.iRate = eSampleRate;
       
    89 				capabilitiesSet.iChannels = iChannels;
       
    90 				SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
       
    91 				ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
       
    92 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetConfigL using sample rate = %S and channel mode =%S"), &stringSampleRateSet, &stringChannelsSet);
       
    93 				TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
       
    94 				if (err != KErrNone)
       
    95 					{
       
    96 					ERR_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
       
    97 					StopTest(err);
       
    98 					break;
       
    99 					}
       
   100 				TMMFCapabilities capabilitiesGet;
       
   101 				TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
       
   102 				TBuf<KMaxChannelsStringLength> stringChannelsGet;
       
   103 				capabilitiesGet=iMMFDevSound->Config();
       
   104 				SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
       
   105 				ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
       
   106 				if (capabilitiesGet.iRate != capabilitiesSet.iRate && capabilitiesGet.iChannels != capabilitiesSet.iChannels)
       
   107 					{
       
   108 					ERR_PRINTF3(_L("Retrieved sample rate and channel %S %S"), &stringSampleRateGet, &stringChannelsGet);
       
   109 					ERR_PRINTF3(_L("Expected %S %S"), &stringSampleRateSet, &stringChannelsSet);
       
   110 					StopTest(aError, EFail);
       
   111 					break;
       
   112 					}
       
   113 				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
       
   114 				StopTest();
       
   115 				}
       
   116 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   117 				{
       
   118 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   119 				StopTest(aError);
       
   120 				}
       
   121 			else
       
   122 				{
       
   123 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   124 				StopTest(aError, EFail);
       
   125 				}
       
   126 			break;
       
   127 			}
       
   128 		default:
       
   129 			{
       
   130 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   131 			StopTest(aError, EFail);
       
   132 			}
       
   133 		}
       
   134 	}
       
   135 
       
   136 /*
       
   137  *========================================================================================================
       
   138  * MM-A3F-DEVSOUND-CHRTZ-TONE-0002
       
   139  */
       
   140 RA3FDevSoundToneSetPrioritySettingsTest::RA3FDevSoundToneSetPrioritySettingsTest(const TDesC& aTestName)
       
   141 	:	RA3FDevSoundTestBase(aTestName), iPriority(0)
       
   142 	{
       
   143 	}
       
   144 
       
   145 RA3FDevSoundToneSetPrioritySettingsTest* RA3FDevSoundToneSetPrioritySettingsTest::NewL(const TDesC& aTestName)
       
   146 	{
       
   147 	RA3FDevSoundToneSetPrioritySettingsTest * self = new(ELeave)RA3FDevSoundToneSetPrioritySettingsTest(aTestName);
       
   148 	return self;
       
   149 	}
       
   150 
       
   151 void RA3FDevSoundToneSetPrioritySettingsTest::DoKickoffTestL()
       
   152 	{
       
   153 	if (!GetIntFromConfig(iTestStepName, KPriority, iPriority)) 
       
   154 		{
       
   155 		ERR_PRINTF2(KMsgErrorGetParameter, &KPriority);
       
   156 		StopTest(KErrUnknown);
       
   157 		}
       
   158 	}
       
   159 
       
   160 void RA3FDevSoundToneSetPrioritySettingsTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   161 	{
       
   162 	switch (iDevSoundState)
       
   163 		{
       
   164 		case EStateCreated:
       
   165 			{
       
   166 			if (aDevSoundEvent == EEventInitialize)
       
   167 				{
       
   168 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetPrioritySettingsTest"), EFsmIncorrectErrorPassed));
       
   169 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   170 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   171 				if (err != KErrNone)
       
   172 					{
       
   173 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   174 					StopTest(err);
       
   175 					break;
       
   176 					}
       
   177 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   178 				iDevSoundState = EStateInitializing;
       
   179 				}
       
   180 			else
       
   181 				{
       
   182 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   183 				StopTest(aError, EFail);
       
   184 				}
       
   185 			break;
       
   186 			}
       
   187 		case EStateInitializing:
       
   188 			{
       
   189 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   190 				{
       
   191 				TMMFPrioritySettings priority;
       
   192 				priority.iPriority = iPriority;
       
   193 				INFO_PRINTF2(_L("Calling CMMFDevSound::SetPrioritySettings using a priority value = %d"), iPriority);
       
   194 				iMMFDevSound->SetPrioritySettings (priority);
       
   195 				INFO_PRINTF1(_L("========== Test Case Successfully Completed =========="));
       
   196 				StopTest();
       
   197 				}
       
   198 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   199 				{
       
   200 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   201 				StopTest(aError);	
       
   202 				}
       
   203 			else
       
   204 				{
       
   205 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   206 				StopTest(aError, EFail);
       
   207 				}
       
   208 			break;
       
   209 			}
       
   210 		default:
       
   211 			{
       
   212 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   213 			StopTest(aError, EFail);
       
   214 			}
       
   215 		}
       
   216 	}
       
   217 
       
   218 /*
       
   219  *========================================================================================================
       
   220  * MM-A3F-DEVSOUND-CHRTZ-TONE-0003
       
   221  */
       
   222 RA3FDevSoundToneSetVolumeTest::RA3FDevSoundToneSetVolumeTest(const TDesC& aTestName)
       
   223 	:	RA3FDevSoundTestBase(aTestName), iVolume(0)
       
   224 	{
       
   225 	}
       
   226 
       
   227 RA3FDevSoundToneSetVolumeTest* RA3FDevSoundToneSetVolumeTest::NewL(const TDesC& aTestName)
       
   228 	{
       
   229 	RA3FDevSoundToneSetVolumeTest * self = new(ELeave)RA3FDevSoundToneSetVolumeTest(aTestName);
       
   230 	return self;
       
   231 	}
       
   232 
       
   233 void RA3FDevSoundToneSetVolumeTest::DoKickoffTestL()
       
   234 	{
       
   235 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
       
   236 		{
       
   237 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
   238 		StopTest(KErrUnknown);
       
   239 		return;
       
   240 		}
       
   241 	}
       
   242 
       
   243 void RA3FDevSoundToneSetVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   244 	{
       
   245 	switch (iDevSoundState)
       
   246 		{
       
   247 		case EStateCreated:
       
   248 			{
       
   249 			if (aDevSoundEvent == EEventInitialize)
       
   250 				{
       
   251 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetVolumeTest"), EFsmIncorrectErrorPassed));
       
   252 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   253 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   254 				if (err != KErrNone)
       
   255 					{
       
   256 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   257 					StopTest(err);
       
   258 					break;
       
   259 					}
       
   260 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   261 				iDevSoundState = EStateInitializing;
       
   262 				}
       
   263 			else
       
   264 				{
       
   265 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   266 				StopTest(aError, EFail);
       
   267 				}
       
   268 			break;
       
   269 			}
       
   270 		case EStateInitializing:
       
   271 			{
       
   272 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   273 				{
       
   274 				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume with volume value = %d"), iVolume);
       
   275 				iMMFDevSound->SetVolume(iVolume);
       
   276 				TInt volumeGet;
       
   277 				volumeGet=iMMFDevSound->Volume();
       
   278 				if (volumeGet == iVolume)
       
   279 					{
       
   280 					INFO_PRINTF2(_L("CMMFDevSound::SetVolume succeeded with value = %d"), volumeGet);
       
   281 					StopTest();
       
   282 					}
       
   283 				else
       
   284 					{
       
   285 					ERR_PRINTF2(_L("CMMFDevSound::SetVolume failed with value = %d"), volumeGet);
       
   286 					ERR_PRINTF2(_L("Expected value = %d"), iVolume);
       
   287 					StopTest(aError, EFail);
       
   288 					}
       
   289 				}
       
   290 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   291 				{
       
   292 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   293 				StopTest(aError);	
       
   294 				}
       
   295 			else
       
   296 				{
       
   297 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   298 				StopTest(aError, EFail);
       
   299 				}
       
   300 			break;
       
   301 			}
       
   302 		default:
       
   303 			{
       
   304 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   305 			StopTest(aError, EFail);
       
   306 			}
       
   307 		}
       
   308 	}
       
   309 
       
   310 /*
       
   311  *========================================================================================================
       
   312  * MM-A3F-DEVSOUND-CHRTZ-TONE-0004
       
   313  */
       
   314 RA3FDevSoundToneVolumeRampTest::RA3FDevSoundToneVolumeRampTest(const TDesC& aTestName)
       
   315 	:	RA3FDevSoundTestBase(aTestName), iVolumeRamp(0),
       
   316 		iDuration(0), iFrequencyTone1(0)
       
   317 	{
       
   318 	}
       
   319 
       
   320 RA3FDevSoundToneVolumeRampTest* RA3FDevSoundToneVolumeRampTest::NewL(const TDesC& aTestName)
       
   321 	{
       
   322 	RA3FDevSoundToneVolumeRampTest * self = new(ELeave)RA3FDevSoundToneVolumeRampTest(aTestName);
       
   323 	return self;
       
   324 	}
       
   325 
       
   326 void RA3FDevSoundToneVolumeRampTest::DoKickoffTestL()
       
   327 	{
       
   328 	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
       
   329 		{
       
   330 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
       
   331 		StopTest(KErrNotFound);
       
   332 		return;
       
   333 		}
       
   334 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
   335 			{
       
   336 			ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
   337 			StopTest(KErrNotFound);
       
   338 			return;
       
   339 			}
       
   340 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
   341 		{
       
   342 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
   343 		StopTest(KErrNotFound);
       
   344 		return;
       
   345 		}
       
   346 	}
       
   347 
       
   348 void RA3FDevSoundToneVolumeRampTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   349 	{
       
   350 	switch (iDevSoundState)
       
   351 		{
       
   352 		case EStateCreated:
       
   353 			{
       
   354 			if (aDevSoundEvent == EEventInitialize)
       
   355 				{
       
   356 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneVolumeRampTest"), EFsmIncorrectErrorPassed));
       
   357 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   358 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   359 				if (err != KErrNone)
       
   360 					{
       
   361 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   362 					StopTest(err);
       
   363 					break;
       
   364 					}
       
   365 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   366 				iDevSoundState = EStateInitializing;
       
   367 				}
       
   368 			else
       
   369 				{
       
   370 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   371 				StopTest(aError, EFail);
       
   372 				}
       
   373 			break;
       
   374 			}
       
   375 		case EStateInitializing:
       
   376 			{
       
   377 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   378 				{
       
   379 				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
       
   380 				iMMFDevSound->SetVolumeRamp(iVolumeRamp);
       
   381 				iStartTime.HomeTime();
       
   382 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
   383 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
   384 				if (err != KErrNone)
       
   385 					{
       
   386 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
   387 					StopTest(err);
       
   388 					break;
       
   389 					}
       
   390 				}
       
   391 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   392 				{
       
   393 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   394 				StopTest(aError);
       
   395 				}
       
   396 			else
       
   397 				{
       
   398 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   399 				StopTest(aError, EFail);
       
   400 				}
       
   401 			break;
       
   402 			}
       
   403 		default:
       
   404 			{
       
   405 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   406 			StopTest(aError, EFail);
       
   407 			}
       
   408 		}
       
   409 	}
       
   410 
       
   411 void RA3FDevSoundToneVolumeRampTest::ToneFinished(TInt aError)
       
   412 	{
       
   413 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
   414 	if (aError == KErrUnderflow)
       
   415 		{
       
   416 		iEndTime.HomeTime();
       
   417 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
   418 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
   419 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
   420 			{
       
   421 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
   422 			StopTest();
       
   423 			}
       
   424 		else
       
   425 			{
       
   426 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
   427 			StopTest(KErrNone, EFail);
       
   428 			}
       
   429 		}
       
   430 	else
       
   431 		{
       
   432 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
   433 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
   434 		StopTest(aError, EFail);
       
   435 		}
       
   436 	}
       
   437 
       
   438 /*
       
   439  *========================================================================================================
       
   440  * MM-A3F-DEVSOUND-CHRTZ-TONE-0005
       
   441  */
       
   442 RA3FDevSoundToneSetToneRepeatsTest::RA3FDevSoundToneSetToneRepeatsTest(const TDesC& aTestName)
       
   443 	:	RA3FDevSoundTestBase(aTestName),
       
   444 		iDuration(0),
       
   445 		iFrequencyTone1(0),
       
   446 		iRepeatTrailingSilence(0), 
       
   447 		iRepeatCount(0)
       
   448 	{
       
   449 	}
       
   450 
       
   451 RA3FDevSoundToneSetToneRepeatsTest* RA3FDevSoundToneSetToneRepeatsTest::NewL(const TDesC& aTestName)
       
   452 	{
       
   453 	RA3FDevSoundToneSetToneRepeatsTest * self = new(ELeave)RA3FDevSoundToneSetToneRepeatsTest(aTestName);
       
   454 	return self;
       
   455 	}
       
   456 
       
   457 void RA3FDevSoundToneSetToneRepeatsTest::DoKickoffTestL()
       
   458 	{
       
   459 	if (!GetIntFromConfig(iTestStepName, KRepeatCount, iRepeatCount)) 
       
   460 		{
       
   461 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatCount);
       
   462 		StopTest(KErrNotFound);
       
   463 		return;
       
   464 		}
       
   465 	if (!GetIntFromConfig(iTestStepName, KRepeatTrailingSilence, iRepeatTrailingSilence)) 
       
   466 		{
       
   467 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatTrailingSilence);
       
   468 		StopTest(KErrNotFound);
       
   469 		return;
       
   470 		}
       
   471 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
   472 		{
       
   473 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
   474 		StopTest(KErrNotFound);
       
   475 		return;
       
   476 		}
       
   477 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
   478 		{
       
   479 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
   480 		StopTest(KErrNotFound);
       
   481 		return;
       
   482 		}
       
   483 	}
       
   484 
       
   485 void RA3FDevSoundToneSetToneRepeatsTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   486 	{
       
   487 	switch (iDevSoundState)
       
   488 		{
       
   489 		case EStateCreated:
       
   490 			{
       
   491 			if (aDevSoundEvent == EEventInitialize)
       
   492 				{
       
   493 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetToneRepeatsTest"), EFsmIncorrectErrorPassed));
       
   494 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   495 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   496 				if (err != KErrNone)
       
   497 					{
       
   498 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   499 					StopTest(err);
       
   500 					break;
       
   501 					}
       
   502 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   503 				iDevSoundState = EStateInitializing;
       
   504 				}
       
   505 			else
       
   506 				{
       
   507 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   508 				StopTest(aError, EFail);
       
   509 				}
       
   510 			break;
       
   511 			}
       
   512 		case EStateInitializing:
       
   513 			{
       
   514 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   515 				{
       
   516 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
   517 				iStartTime.HomeTime();
       
   518 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetToneRepeats using repeatCount = %d and trailingSilence = %d"), iRepeatCount, iRepeatTrailingSilence);
       
   519 				iMMFDevSound->SetToneRepeats(iRepeatCount, iRepeatTrailingSilence);
       
   520 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
   521 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
   522 				if (err != KErrNone)
       
   523 					{
       
   524 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
   525 					StopTest(err);
       
   526 					break;
       
   527 					}
       
   528 				}
       
   529 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   530 				{
       
   531 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   532 				StopTest(aError);	
       
   533 				}
       
   534 			else
       
   535 				{
       
   536 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   537 				StopTest(aError, EFail);
       
   538 				}
       
   539 			break;
       
   540 			}
       
   541 		default:
       
   542 			{
       
   543 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   544 			StopTest(aError, EFail);
       
   545 			}
       
   546 		}
       
   547 	}
       
   548 
       
   549 void RA3FDevSoundToneSetToneRepeatsTest::ToneFinished(TInt aError)
       
   550 	{
       
   551 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
   552 	if (aError == KErrUnderflow)
       
   553 		{
       
   554 		iEndTime.HomeTime();
       
   555 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
   556 		TInt repeatTrailingSilenceToSecs = iRepeatTrailingSilence/KMicroSecsInOneSec;
       
   557 		TInt totalExpectedReproductionTime = (iRepeatCount * iDuration + iDuration + (repeatTrailingSilenceToSecs*iRepeatCount))*KMicroSecsInOneSec;
       
   558 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
   559 			{
       
   560 			INFO_PRINTF1(_L("Play tone repeats succeded."));
       
   561 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
   562 			StopTest();
       
   563 			}
       
   564 		else
       
   565 			{
       
   566 			ERR_PRINTF1(_L("Play tone repeats did not work as planned."));
       
   567 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
   568 			StopTest(KErrNone, EFail);
       
   569 			}
       
   570 		}
       
   571 	else
       
   572 		{
       
   573 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
   574 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
   575 		StopTest(aError, EFail);
       
   576 		}
       
   577 	}
       
   578 
       
   579 /*
       
   580  *========================================================================================================
       
   581  * MM-A3F-DEVSOUND-CHRTZ-TONE-0006
       
   582  */
       
   583 RA3FDevSoundToneSetDTMFLengthsTest::RA3FDevSoundToneSetDTMFLengthsTest(const TDesC& aTestName)
       
   584 	:	RA3FDevSoundTestBase(aTestName), iToneOnLength(0),
       
   585 		iToneOffLength(0), iPauseLength(0), iDTMFPauses(0),
       
   586 		iDTMFTones(0)
       
   587 	{
       
   588 	}
       
   589 
       
   590 RA3FDevSoundToneSetDTMFLengthsTest* RA3FDevSoundToneSetDTMFLengthsTest::NewL(const TDesC& aTestName)
       
   591 	{
       
   592 	RA3FDevSoundToneSetDTMFLengthsTest * self = new(ELeave)RA3FDevSoundToneSetDTMFLengthsTest(aTestName);
       
   593 	return self;
       
   594 	}
       
   595 
       
   596 void RA3FDevSoundToneSetDTMFLengthsTest::DoKickoffTestL()
       
   597 	{
       
   598 	if (!GetIntFromConfig(iTestStepName, KToneOnLength, iToneOnLength))
       
   599 		{
       
   600 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOnLength);
       
   601 		StopTest(KErrNotFound);
       
   602 		return;
       
   603 		}
       
   604 	if (!GetIntFromConfig(iTestStepName, KToneOffLength, iToneOffLength))
       
   605 		{
       
   606 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOffLength);
       
   607 		StopTest(KErrNotFound);
       
   608 		return;
       
   609 		}
       
   610 	if (!GetIntFromConfig(iTestStepName, KPauseLength, iPauseLength))
       
   611 		{
       
   612 		ERR_PRINTF2(KMsgErrorGetParameter, &KPauseLength);
       
   613 		StopTest(KErrNotFound);
       
   614 		return;
       
   615 		}
       
   616 	TPtrC DTMF;
       
   617 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
   618 		{
       
   619 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
   620 		StopTest(KErrNotFound);
       
   621 		return;
       
   622 		}
       
   623 	iDTMFString.Copy(DTMF);
       
   624 	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
       
   625 		{
       
   626 		if (iDTMFString[i] == ',')
       
   627 			{
       
   628 			iDTMFPauses++;
       
   629 			}
       
   630 		else
       
   631 			{
       
   632 			iDTMFTones++;
       
   633 			}
       
   634 		}
       
   635 	}
       
   636 
       
   637 void RA3FDevSoundToneSetDTMFLengthsTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   638 	{
       
   639 	switch (iDevSoundState)
       
   640 		{
       
   641 		case EStateCreated:
       
   642 			{
       
   643 			if (aDevSoundEvent == EEventInitialize)
       
   644 				{
       
   645 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetDTMFLengthsTest"), EFsmIncorrectErrorPassed));
       
   646 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   647 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   648 				if (err != KErrNone)
       
   649 					{
       
   650 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   651 					StopTest(err);
       
   652 					break;
       
   653 					}
       
   654 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   655 				iDevSoundState = EStateInitializing;
       
   656 				}
       
   657 			else
       
   658 				{
       
   659 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   660 				StopTest(aError, EFail);
       
   661 				}
       
   662 			break;
       
   663 			}
       
   664 		case EStateInitializing:
       
   665 			{
       
   666 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   667 				{
       
   668 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
   669 				TTimeIntervalMicroSeconds32 ToneOnLength(iToneOnLength);
       
   670 				TTimeIntervalMicroSeconds32 ToneOffLength(iToneOffLength);
       
   671 				TTimeIntervalMicroSeconds32 PauseLength(iPauseLength);
       
   672 				INFO_PRINTF4(_L("Calling CMMFDevSound::SetDTMFLengths. ToneOnLength = %d, ToneOffLength = %d and PauseLength = %d"), ToneOnLength.Int(), ToneOffLength.Int(), PauseLength.Int());
       
   673 				iMMFDevSound->SetDTMFLengths(ToneOnLength, ToneOffLength, PauseLength);
       
   674 				iStartTime.HomeTime();
       
   675 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
   676 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
   677 				if (err != KErrNone)
       
   678 					{
       
   679 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
       
   680 					StopTest(err);
       
   681 					break;
       
   682 					}
       
   683 				}
       
   684 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   685 				{
       
   686 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   687 				StopTest(aError);
       
   688 				}
       
   689 			else
       
   690 				{
       
   691 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   692 				StopTest(aError, EFail);
       
   693 				}
       
   694 			break;
       
   695 			}
       
   696 		default:
       
   697 			{
       
   698 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   699 			StopTest(aError, EFail);
       
   700 			}
       
   701 		}
       
   702 	}
       
   703 
       
   704 void RA3FDevSoundToneSetDTMFLengthsTest::ToneFinished(TInt aError)
       
   705 	{
       
   706 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
   707 	if (aError == KErrUnderflow)
       
   708 		{
       
   709 		iEndTime.HomeTime();
       
   710 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
   711 		TInt totalExpectedReproductionTime = iToneOnLength*iDTMFTones + iToneOffLength * iDTMFTones + iDTMFPauses * iPauseLength;
       
   712 		if (iPlayToneTime.Int64() < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime.Int64() > totalExpectedReproductionTime - KPlayVarianceTime)
       
   713 			{
       
   714 			INFO_PRINTF1(_L("Calling CMMFDevSound::SetDTMFLengths succeded."));
       
   715 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
   716 			StopTest();
       
   717 			}
       
   718 		else
       
   719 			{
       
   720 			ERR_PRINTF2(_L("Calling CMMFDevSound::SetDTMFLengths failed with %Ld"), iPlayToneTime.Int64());
       
   721 			ERR_PRINTF2(_L("Expected time %d"), totalExpectedReproductionTime);
       
   722 			StopTest(KErrNone, EFail);
       
   723 			}
       
   724 		}
       
   725 	else
       
   726 		{
       
   727 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
   728 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
   729 		StopTest(aError, EFail);
       
   730 		}
       
   731 	}
       
   732 
       
   733 /*
       
   734  *========================================================================================================
       
   735  * MM-A3F-DEVSOUND-CHRTZ-TONE-0007
       
   736  */
       
   737 RA3FDevSoundToneSetVolumeWhilePlayingTest::RA3FDevSoundToneSetVolumeWhilePlayingTest(const TDesC& aTestName)
       
   738 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
   739 		iVolume(0), iFrequencyTone1(0)
       
   740 	{
       
   741 	}
       
   742 
       
   743 RA3FDevSoundToneSetVolumeWhilePlayingTest* RA3FDevSoundToneSetVolumeWhilePlayingTest::NewL(const TDesC& aTestName)
       
   744 	{
       
   745 	RA3FDevSoundToneSetVolumeWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetVolumeWhilePlayingTest(aTestName);
       
   746 	return self;
       
   747 	}
       
   748 
       
   749 void RA3FDevSoundToneSetVolumeWhilePlayingTest::DoKickoffTestL()
       
   750 	{
       
   751 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
       
   752 		{
       
   753 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
   754 		StopTest(KErrNotFound);
       
   755 		return;
       
   756 		}
       
   757 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
   758 		{
       
   759 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
   760 		StopTest(KErrNotFound);
       
   761 		return;
       
   762 		}
       
   763 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
   764 		{
       
   765 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
   766 		StopTest(KErrNotFound);
       
   767 		return;
       
   768 		}
       
   769 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
   770 	}
       
   771 
       
   772 void RA3FDevSoundToneSetVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   773 	{
       
   774 	switch (iDevSoundState)
       
   775 		{
       
   776 		case EStateCreated:
       
   777 			{
       
   778 			if (aDevSoundEvent == EEventInitialize)
       
   779 				{
       
   780 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetVolumeWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
   781 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   782 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   783 				if (err != KErrNone)
       
   784 					{
       
   785 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   786 					StopTest(err);
       
   787 					break;
       
   788 					}
       
   789 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   790 				iDevSoundState = EStateInitializing;
       
   791 				}
       
   792 			else
       
   793 				{
       
   794 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   795 				StopTest(aError, EFail);
       
   796 				}
       
   797 			break;
       
   798 			}
       
   799 		case EStateInitializing:
       
   800 			{
       
   801 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   802 				{
       
   803 				iStartTime.HomeTime();
       
   804 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using frequency = %d Hz and duration = %d secs "), iFrequencyTone1, iDuration);
       
   805 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
   806 				if (err != KErrNone)
       
   807 					{
       
   808 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
   809 					StopTest(err);
       
   810 					break;
       
   811 					}
       
   812 				StartTimer(KMicroSecsTwoSec);
       
   813 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
   814 				iDevSoundState = EStatePlaying;
       
   815 				}
       
   816 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   817 				{
       
   818 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   819 				StopTest(aError);	
       
   820 				}
       
   821 			else
       
   822 				{
       
   823 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   824 				StopTest(aError, EFail);
       
   825 				}
       
   826 			break;
       
   827 			}
       
   828 		default:
       
   829 			{
       
   830 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   831 			StopTest(aError, EFail);
       
   832 			}
       
   833 		}
       
   834 	}
       
   835 
       
   836 void RA3FDevSoundToneSetVolumeWhilePlayingTest::DoTimerCallback()
       
   837 	{
       
   838 	iTimer->Cancel();
       
   839 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
   840 	INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume with volume value = %d"), iVolume);
       
   841 	iMMFDevSound->SetVolume(iVolume);
       
   842 	TInt volumeGet;
       
   843 	volumeGet=iMMFDevSound->Volume();
       
   844 	if (volumeGet == iVolume)
       
   845 		{
       
   846 		INFO_PRINTF2(_L("CMMFDevSound::SetVolume succeeded with value = %d"), volumeGet);
       
   847 		}
       
   848 	else
       
   849 		{
       
   850 		ERR_PRINTF2(_L("CMMFDevSound::SetVolume failed with value = %d"), volumeGet);
       
   851 		ERR_PRINTF2(_L("Expected value = %d"), iVolume);
       
   852 		StopTest(KErrNone, EFail);
       
   853 		}
       
   854 	}
       
   855 
       
   856 void RA3FDevSoundToneSetVolumeWhilePlayingTest::ToneFinished(TInt aError)
       
   857 	{
       
   858 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
   859 	if (aError == KErrUnderflow)
       
   860 		{
       
   861 		iEndTime.HomeTime();
       
   862 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
   863 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
   864 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
   865 			{
       
   866 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
   867 			StopTest();
       
   868 			}
       
   869 		else
       
   870 			{
       
   871 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
   872 			StopTest(KErrNone, EFail);
       
   873 			}
       
   874 		}
       
   875 	else
       
   876 		{
       
   877 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
   878 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
   879 		StopTest(aError, EFail);
       
   880 		}
       
   881 	}
       
   882 
       
   883 /*
       
   884  *========================================================================================================
       
   885  * MM-A3F-DEVSOUND-CHRTZ-TONE-0008
       
   886  */
       
   887 RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::RA3FDevSoundToneSetPlayBalanceWhilePlayingTest(const TDesC& aTestName)
       
   888 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
   889 		iVolume(0), iFrequencyTone1(0), iLSpeakerBalance(0),
       
   890 		iRSpeakerBalance(0)
       
   891 		
       
   892 	{
       
   893 	}
       
   894 
       
   895 RA3FDevSoundToneSetPlayBalanceWhilePlayingTest* RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::NewL(const TDesC& aTestName)
       
   896 	{
       
   897 	RA3FDevSoundToneSetPlayBalanceWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetPlayBalanceWhilePlayingTest(aTestName);
       
   898 	return self;
       
   899 	}
       
   900 
       
   901 void RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::DoKickoffTestL()
       
   902 	{
       
   903 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
       
   904 		{
       
   905 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
   906 		StopTest(KErrNotFound);
       
   907 		return;
       
   908 		}
       
   909 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
   910 		{
       
   911 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
   912 		StopTest(KErrNotFound);
       
   913 		return;
       
   914 		}
       
   915 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
   916 		{
       
   917 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
   918 		StopTest(KErrNotFound);
       
   919 		return;
       
   920 		}
       
   921 	if (!GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance)) 
       
   922 		{
       
   923 		ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
       
   924 		StopTest(KErrNotFound);
       
   925 		return;
       
   926 		}
       
   927 	if (!GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance)) 
       
   928 		{
       
   929 		ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
       
   930 		StopTest(KErrNotFound);
       
   931 		return;
       
   932 		}	
       
   933 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
   934 	}
       
   935 
       
   936 void RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
   937 	{
       
   938 	switch (iDevSoundState)
       
   939 		{
       
   940 		case EStateCreated:
       
   941 			{
       
   942 			if (aDevSoundEvent == EEventInitialize)
       
   943 				{
       
   944 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetPlayBalanceWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
   945 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
   946 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
   947 				if (err != KErrNone)
       
   948 					{
       
   949 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
   950 					StopTest(err);
       
   951 					break;
       
   952 					}
       
   953 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
   954 				iDevSoundState = EStateInitializing;
       
   955 				}
       
   956 			else
       
   957 				{
       
   958 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
   959 				StopTest(aError, EFail);
       
   960 				}
       
   961 			break;
       
   962 			}
       
   963 		case EStateInitializing:
       
   964 			{
       
   965 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
   966 				{
       
   967 				iStartTime.HomeTime();
       
   968 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using frequency = %d Hz and duration = %d secs "), iFrequencyTone1, iDuration);
       
   969 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
   970 				if (err != KErrNone)
       
   971 					{
       
   972 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
   973 					StopTest(err);
       
   974 					break;
       
   975 					}
       
   976 				StartTimer(KMicroSecsTwoSec);
       
   977 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
   978 				iDevSoundState = EStatePlaying;
       
   979 				}
       
   980 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
   981 				{
       
   982 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
   983 				StopTest(aError);	
       
   984 				}
       
   985 			else
       
   986 				{
       
   987 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
   988 				StopTest(aError, EFail);
       
   989 				}
       
   990 			break;
       
   991 			}
       
   992 		default:
       
   993 			{
       
   994 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
   995 			StopTest(aError, EFail);
       
   996 			}
       
   997 		}
       
   998 	}
       
   999 
       
  1000 void RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::DoTimerCallback()
       
  1001 	{
       
  1002 	iTimer->Cancel();
       
  1003 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1004 	INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL using left = %d right = %d"), iLSpeakerBalance, iRSpeakerBalance);
       
  1005 	TRAPD(err, iMMFDevSound->SetPlayBalanceL(iLSpeakerBalance, iRSpeakerBalance));
       
  1006 	if (err == KErrNone)
       
  1007 		{
       
  1008 		TInt getBalanceL, getBalanceR;
       
  1009 		TRAPD(err, iMMFDevSound->GetPlayBalanceL(getBalanceL, getBalanceR));
       
  1010 		if (err == KErrNone)
       
  1011 			{
       
  1012 			if(iLSpeakerBalance == getBalanceL && iRSpeakerBalance == getBalanceR)
       
  1013 				{
       
  1014 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values succeeded, left = %d right = %d"), getBalanceL, getBalanceR);
       
  1015 				}
       
  1016 			else
       
  1017 				{
       
  1018 				ERR_PRINTF3(_L("Calling CMMFDevSound::SetPlayBalanceL to set balance values failed, left = %d right = %d"), getBalanceL, getBalanceR);
       
  1019 				ERR_PRINTF3(_L("Expected balances values for right and left respectively %d, %d"),iLSpeakerBalance, iRSpeakerBalance);
       
  1020 				StopTest(err,EFail);
       
  1021 				}
       
  1022 			}
       
  1023 		}
       
  1024 	else
       
  1025 		{
       
  1026 		ERR_PRINTF1(_L("Error in setting left and right play balance."));
       
  1027 		StopTest (err, EFail);
       
  1028 		}
       
  1029 	}
       
  1030 
       
  1031 void RA3FDevSoundToneSetPlayBalanceWhilePlayingTest::ToneFinished(TInt aError)
       
  1032 	{
       
  1033 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1034 	if (aError == KErrUnderflow)
       
  1035 		{
       
  1036 		iEndTime.HomeTime();
       
  1037 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  1038 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  1039 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  1040 			{
       
  1041 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1042 			StopTest();
       
  1043 			}
       
  1044 		else
       
  1045 			{
       
  1046 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  1047 			StopTest(KErrNone, EFail);
       
  1048 			}
       
  1049 		}
       
  1050 	else
       
  1051 		{
       
  1052 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  1053 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  1054 		StopTest(aError, EFail);
       
  1055 		}
       
  1056 	}
       
  1057 
       
  1058 /*
       
  1059  *  **========================================================================================================
       
  1060  * MM-A3F-DEVSOUND-CHRTZ-TONE-0009
       
  1061  */
       
  1062 RA3FDevSoundToneSetVolumeWhilePausePlayingTest::RA3FDevSoundToneSetVolumeWhilePausePlayingTest(const TDesC& aTestName)
       
  1063 	:	RA3FDevSoundTestBase(aTestName), 
       
  1064 		iDuration(0), iVolume(0),
       
  1065 		iFrequencyTone1(0),
       
  1066 		iTimeToEnterPauseElapsed(EFalse)
       
  1067 	{
       
  1068 	}
       
  1069 
       
  1070 RA3FDevSoundToneSetVolumeWhilePausePlayingTest* RA3FDevSoundToneSetVolumeWhilePausePlayingTest::NewL(const TDesC& aTestName)
       
  1071 	{
       
  1072 	RA3FDevSoundToneSetVolumeWhilePausePlayingTest * self = new(ELeave)RA3FDevSoundToneSetVolumeWhilePausePlayingTest(aTestName);
       
  1073 	return self;
       
  1074 	}
       
  1075 
       
  1076 void RA3FDevSoundToneSetVolumeWhilePausePlayingTest::DoKickoffTestL()
       
  1077 	{
       
  1078 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
       
  1079 		{
       
  1080 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
  1081 		StopTest(KErrNotFound);
       
  1082 		return;
       
  1083 		}
       
  1084 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
       
  1085 		{
       
  1086 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  1087 		StopTest(KErrNotFound);
       
  1088 		return;
       
  1089 		}
       
  1090 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
       
  1091 		{
       
  1092 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  1093 		StopTest(KErrNotFound);
       
  1094 		return;
       
  1095 		}
       
  1096 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  1097 	}
       
  1098 
       
  1099 void RA3FDevSoundToneSetVolumeWhilePausePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  1100 	{
       
  1101 	switch (iDevSoundState)
       
  1102 		{		
       
  1103 		case EStateCreated:
       
  1104 			{
       
  1105 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetVolumeWhilePausePlayingTest"), EFsmIncorrectErrorPassed));
       
  1106 			if (aDevSoundEvent == EEventInitialize)
       
  1107 				{
       
  1108 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1109 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1110 				if (err != KErrNone)
       
  1111 					{
       
  1112 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1113 					StopTest(err);
       
  1114 					break;
       
  1115 					}
       
  1116 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1117 				iDevSoundState = EStateInitializing;
       
  1118 				}
       
  1119 			else
       
  1120 				{
       
  1121 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1122 				StopTest(aError, EFail);
       
  1123 				}
       
  1124 			break;
       
  1125 			}
       
  1126 		case EStateInitializing:
       
  1127 			{
       
  1128 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1129 				{
       
  1130 				INFO_PRINTF3(_L("CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  1131 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1132 				if (err != KErrNone)
       
  1133 					{
       
  1134 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  1135 					StopTest(err);
       
  1136 					break;
       
  1137 					}
       
  1138 				StartTimer(KMicroSecsTwoSec);
       
  1139 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  1140 				iDevSoundState = EStatePlaying;
       
  1141 				}
       
  1142 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1143 				{
       
  1144 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1145 				StopTest(aError);
       
  1146 				}
       
  1147 			else
       
  1148 				{
       
  1149 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"),  aDevSoundEvent);
       
  1150 				StopTest(aError, EFail);
       
  1151 				}
       
  1152 			break;
       
  1153 			}
       
  1154 		case EStatePlaying:
       
  1155 			{
       
  1156 			if(aDevSoundEvent == EEventTimerComplete)
       
  1157 				{
       
  1158 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  1159 				iMMFDevSound->Pause();
       
  1160 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  1161 				iDevSoundState = EStatePause;
       
  1162 				}
       
  1163 			else
       
  1164 				{
       
  1165 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1166 				StopTest(aError, EFail);
       
  1167 				}
       
  1168 			break;
       
  1169 			}
       
  1170 		case EStatePause:
       
  1171 			{
       
  1172 			if(aDevSoundEvent == EEventTimerComplete)
       
  1173 				{
       
  1174 				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume with volume value = %d"), iVolume);
       
  1175 				iMMFDevSound->SetVolume(iVolume);
       
  1176 				TInt volumeGet;
       
  1177 				volumeGet=iMMFDevSound->Volume();
       
  1178 				if (volumeGet == iVolume)
       
  1179 					{
       
  1180 					INFO_PRINTF2(_L("CMMFDevSound::SetVolume succeeded with value = %d"), volumeGet);
       
  1181 					StopTest();
       
  1182 					}
       
  1183 				else
       
  1184 					{
       
  1185 					ERR_PRINTF2(_L("CMMFDevSound::SetVolume failed with value = %d"), volumeGet);
       
  1186 					ERR_PRINTF2(_L("Expected value = %d"), iVolume);
       
  1187 					StopTest(aError, EFail);
       
  1188 					}
       
  1189 				}
       
  1190 			else
       
  1191 				{
       
  1192 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1193 				StopTest(aError, EFail);
       
  1194 				}
       
  1195 			break;
       
  1196 			}
       
  1197 		default:
       
  1198 			{
       
  1199 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1200 			StopTest(aError, EFail);
       
  1201 			}
       
  1202 		}
       
  1203 	}
       
  1204 
       
  1205 void RA3FDevSoundToneSetVolumeWhilePausePlayingTest::DoTimerCallback()
       
  1206 	{
       
  1207 	INFO_PRINTF1(_L("TimerEvent called"));
       
  1208 	if(!iTimeToEnterPauseElapsed)
       
  1209 		{
       
  1210 		iTimeToEnterPauseElapsed = ETrue;
       
  1211 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1212 		Fsm(EEventTimerComplete, KErrNone);
       
  1213 		iTimeToEnterPauseElapsed = ETrue;
       
  1214 		}
       
  1215 	else
       
  1216 		{
       
  1217 		iTimer->Cancel();
       
  1218 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1219 		Fsm(EEventTimerComplete, KErrNone);
       
  1220 		}
       
  1221 	}
       
  1222 
       
  1223 void RA3FDevSoundToneSetVolumeWhilePausePlayingTest::ToneFinished(TInt aError)
       
  1224 	{
       
  1225 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1226 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused"));
       
  1227 	StopTest(aError, EFail);
       
  1228 	}
       
  1229 /*
       
  1230  *========================================================================================================
       
  1231  * MM-A3F-DEVSOUND-CHRTZ-TONE-0010
       
  1232  */
       
  1233 RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest::RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest(const TDesC& aTestName)
       
  1234 	:	RA3FDevSoundTestBase(aTestName), iVolume(0),
       
  1235 		iReinitialized(EFalse)
       
  1236 	{
       
  1237 	}
       
  1238 
       
  1239 RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest* RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest::NewL(const TDesC& aTestName)
       
  1240 	{
       
  1241 	RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest * self = new(ELeave)RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest(aTestName);
       
  1242 	return self;
       
  1243 	}
       
  1244 
       
  1245 void RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest::DoKickoffTestL()
       
  1246 	{
       
  1247 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
       
  1248 		{
       
  1249 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
  1250 		StopTest(KErrNotFound);
       
  1251 		return;
       
  1252 		}
       
  1253 	}
       
  1254 
       
  1255 void RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  1256 	{
       
  1257 	switch (iDevSoundState)
       
  1258 		{		
       
  1259 		case EStateCreated:
       
  1260 			{
       
  1261 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetVolumeThenInitializeToPlayAudioTest"), EFsmIncorrectErrorPassed));
       
  1262 			if (aDevSoundEvent == EEventInitialize)
       
  1263 				{
       
  1264 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1265 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1266 				if (err != KErrNone)
       
  1267 					{
       
  1268 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1269 					StopTest(err);
       
  1270 					break;
       
  1271 					}
       
  1272 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1273 				iDevSoundState = EStateInitializing;
       
  1274 				}
       
  1275 			else
       
  1276 				{
       
  1277 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1278 				StopTest(aError, EFail);
       
  1279 				}
       
  1280 			break;
       
  1281 			}
       
  1282 		case EStateInitializing:
       
  1283 			{
       
  1284 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1285 				{
       
  1286 				if(!iReinitialized)
       
  1287 					{
       
  1288 					INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1289 					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1290 					if (err != KErrNone)
       
  1291 						{
       
  1292 						ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1293 						StopTest(err);
       
  1294 						break;
       
  1295 						}
       
  1296 					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1297 					iDevSoundState = EStateInitializing;
       
  1298 					iReinitialized = ETrue;
       
  1299 					INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolume with volume value = %d"), iVolume);
       
  1300 					iMMFDevSound->SetVolume(iVolume);
       
  1301 					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1302 					iDevSoundState = EStateInitializing;
       
  1303 					}
       
  1304 				else
       
  1305 					{
       
  1306 					TInt volumeGet;
       
  1307 					volumeGet=iMMFDevSound->Volume();
       
  1308 					if (volumeGet == iVolume)
       
  1309 						{
       
  1310 						INFO_PRINTF1(_L("After calling CMMFDevSound::InitializeL for playing audio, "));
       
  1311 						INFO_PRINTF2(_L("the volume which was set when calling CMMFDevSound::InitializeL for playing tones is kept. Volume = %d"), volumeGet);
       
  1312 						StopTest();
       
  1313 						}
       
  1314 					else
       
  1315 						{
       
  1316 						INFO_PRINTF1(_L("After calling CMMFDevSound::InitializeL for playing audio, "));
       
  1317 						INFO_PRINTF2(_L("the volume which was set when calling CMMFDevSound::InitializeL for playing tones is  NOT kept. Volume = %d"), volumeGet);
       
  1318 						ERR_PRINTF2(_L("Expected value = %d"), iVolume);
       
  1319 						StopTest(aError, EFail);
       
  1320 						}
       
  1321 					}
       
  1322 				}
       
  1323 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1324 				{
       
  1325 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1326 				StopTest(aError);
       
  1327 				}
       
  1328 			else
       
  1329 				{
       
  1330 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"),  aDevSoundEvent);
       
  1331 				StopTest(aError, EFail);
       
  1332 				}
       
  1333 			break;
       
  1334 			}
       
  1335 		default:
       
  1336 			{
       
  1337 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1338 			StopTest(aError, EFail);
       
  1339 			}
       
  1340 		}
       
  1341 	}
       
  1342 
       
  1343 /*
       
  1344  *========================================================================================================
       
  1345  * MM-A3F-DEVSOUND-CHRTZ-TONE-0011
       
  1346  */
       
  1347 RA3FDevSoundToneSetVolumeRampWhilePlayingTest::RA3FDevSoundToneSetVolumeRampWhilePlayingTest(const TDesC& aTestName)
       
  1348 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  1349 		iVolume(0), iFrequencyTone1(0),iTonePlayedTwice(EFalse),
       
  1350 		iTimesToneFinishedCalled(0)
       
  1351 	{
       
  1352 	}
       
  1353 
       
  1354 RA3FDevSoundToneSetVolumeRampWhilePlayingTest* RA3FDevSoundToneSetVolumeRampWhilePlayingTest::NewL(const TDesC& aTestName)
       
  1355 	{
       
  1356 	RA3FDevSoundToneSetVolumeRampWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetVolumeRampWhilePlayingTest(aTestName);
       
  1357 	return self;
       
  1358 	}
       
  1359 
       
  1360 void RA3FDevSoundToneSetVolumeRampWhilePlayingTest::DoKickoffTestL()
       
  1361 	{
       
  1362 	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
       
  1363 		{
       
  1364 		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
       
  1365 		StopTest(KErrNotFound);
       
  1366 		return;
       
  1367 		}
       
  1368 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  1369 		{
       
  1370 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  1371 		StopTest(KErrNotFound);
       
  1372 		return;
       
  1373 		}
       
  1374 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  1375 		{
       
  1376 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  1377 		StopTest(KErrNotFound);
       
  1378 		return;
       
  1379 		}
       
  1380 	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
       
  1381 			{
       
  1382 			ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
       
  1383 			StopTest(KErrNotFound);
       
  1384 			return;
       
  1385 			}
       
  1386 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  1387 	}
       
  1388 
       
  1389 void RA3FDevSoundToneSetVolumeRampWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  1390 	{
       
  1391 	switch (iDevSoundState)
       
  1392 		{
       
  1393 		case EStateCreated:
       
  1394 			{
       
  1395 			if (aDevSoundEvent == EEventInitialize)
       
  1396 				{
       
  1397 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetVolumeRampWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  1398 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1399 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1400 				if (err != KErrNone)
       
  1401 					{
       
  1402 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  1403 					StopTest(err);
       
  1404 					break;
       
  1405 					}
       
  1406 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1407 				iDevSoundState = EStateInitializing;
       
  1408 				}
       
  1409 			else
       
  1410 				{
       
  1411 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1412 				StopTest(aError, EFail);
       
  1413 				}
       
  1414 			break;
       
  1415 			}
       
  1416 		case EStateInitializing:
       
  1417 			{
       
  1418 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1419 				{
       
  1420 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  1421 				iStartTime.HomeTime();
       
  1422 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using frequency = %d Hz and duration = %d secs "), iFrequencyTone1, iDuration);
       
  1423 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1424 				if (err != KErrNone)
       
  1425 					{
       
  1426 					ERR_PRINTF2(_L("Play tone left with error : %d!"), err);
       
  1427 					StopTest(err);
       
  1428 					break;
       
  1429 					}
       
  1430 				StartTimer(KMicroSecsTwoSec);
       
  1431 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  1432 				iDevSoundState = EStatePlaying;
       
  1433 				}
       
  1434 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1435 				{
       
  1436 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1437 				StopTest(aError);
       
  1438 				}
       
  1439 			else
       
  1440 				{
       
  1441 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1442 				StopTest(aError, EFail);
       
  1443 				}
       
  1444 			break;
       
  1445 			}
       
  1446 		default:
       
  1447 			{
       
  1448 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1449 			StopTest(aError, EFail);
       
  1450 			}
       
  1451 		}
       
  1452 	}
       
  1453 
       
  1454 void RA3FDevSoundToneSetVolumeRampWhilePlayingTest::DoTimerCallback()
       
  1455 	{
       
  1456 	iTimer->Cancel();
       
  1457 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1458 	INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
       
  1459 	iMMFDevSound->SetVolumeRamp(iVolumeRamp);
       
  1460 	}
       
  1461 
       
  1462 void RA3FDevSoundToneSetVolumeRampWhilePlayingTest::ToneFinished(TInt aError)
       
  1463 	{
       
  1464 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1465 	if (aError == KErrUnderflow)
       
  1466 		{
       
  1467 		TInt totalExpectedReproductionTime;
       
  1468 		iTimesToneFinishedCalled++;
       
  1469 		totalExpectedReproductionTime = iDuration * iTimesToneFinishedCalled * KMicroSecsInOneSec;
       
  1470 		iEndTime.HomeTime();
       
  1471 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  1472 		if(!iTonePlayedTwice)
       
  1473 			{
       
  1474 			INFO_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  1475 			INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using frequency = %d Hz and duration = %d secs "), iFrequencyTone1, iDuration);
       
  1476 			TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1477 			if (err != KErrNone)
       
  1478 				{
       
  1479 				ERR_PRINTF2(_L("CMMFDevSound::PlayToneL with error : %d!"), err);
       
  1480 				StopTest(err);
       
  1481 				}
       
  1482 			iTonePlayedTwice = ETrue;
       
  1483 			}
       
  1484 		else if (iPlayToneTime < totalExpectedReproductionTime + (2*KPlayVarianceTime) && iPlayToneTime > totalExpectedReproductionTime - (2*KPlayVarianceTime))
       
  1485 			{
       
  1486 			INFO_PRINTF2(_L("DevSound called ToneFinished twice with error = %d"), aError);
       
  1487 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1488 			StopTest();
       
  1489 			}
       
  1490 		else
       
  1491 			{
       
  1492 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  1493 			StopTest(KErrNone, EFail);
       
  1494 			}
       
  1495 		}
       
  1496 	else
       
  1497 		{
       
  1498 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  1499 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  1500 		StopTest(aError, EFail);
       
  1501 		}
       
  1502 	}
       
  1503 
       
  1504 /*
       
  1505  *========================================================================================================
       
  1506  * MM-A3F-DEVSOUND-CHRTZ-TONE-0012
       
  1507  */
       
  1508 RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest(const TDesC& aTestName)
       
  1509 	:	RA3FDevSoundTestBase(aTestName), 
       
  1510 		iDuration(0),
       
  1511 		iFrequencyTone1(0),
       
  1512 		iRepeatTrailingSilence(0), 
       
  1513 		iRepeatCount(0)
       
  1514 	{
       
  1515 	}
       
  1516 
       
  1517 RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest* RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::NewL(const TDesC& aTestName)
       
  1518 	{
       
  1519 	RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest(aTestName);
       
  1520 	return self;
       
  1521 	}
       
  1522 	
       
  1523 void RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::DoKickoffTestL()
       
  1524 	{
       
  1525 	if (!GetIntFromConfig(iTestStepName, KRepeatCount, iRepeatCount)) 
       
  1526 		{
       
  1527 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatCount);
       
  1528 		StopTest(KErrNotFound);
       
  1529 		return;
       
  1530 		}
       
  1531 	if (!GetIntFromConfig(iTestStepName, KRepeatTrailingSilence, iRepeatTrailingSilence)) 
       
  1532 		{
       
  1533 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatTrailingSilence);
       
  1534 		StopTest(KErrNotFound);
       
  1535 		return;
       
  1536 		}
       
  1537 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  1538 		{
       
  1539 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  1540 		StopTest(KErrNotFound);
       
  1541 		return;
       
  1542 		}
       
  1543 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  1544 		{
       
  1545 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  1546 		StopTest(KErrNotFound);
       
  1547 		return;
       
  1548 		}
       
  1549 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  1550 	}
       
  1551 
       
  1552 void RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  1553 	{
       
  1554 	switch (iDevSoundState)
       
  1555 		{
       
  1556 		case EStateCreated:
       
  1557 			{
       
  1558 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetToneRepetitionsWhilePlayingConfigurationTest"), EFsmIncorrectErrorPassed));
       
  1559 			if(aDevSoundEvent == EEventInitialize)
       
  1560 				{
       
  1561 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1562 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1563 				if (err != KErrNone)
       
  1564 					{
       
  1565 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1566 					StopTest(err);
       
  1567 					break;
       
  1568 					}
       
  1569 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1570 				iDevSoundState = EStateInitializing;
       
  1571 				}
       
  1572 			else
       
  1573 				{
       
  1574 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1575 				StopTest(aError, EFail);
       
  1576 				}
       
  1577 			break;
       
  1578 			}
       
  1579 		case EStateInitializing:
       
  1580 			{
       
  1581 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1582 				{
       
  1583 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  1584 				iStartTime.HomeTime();
       
  1585 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  1586 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1587 				if (err != KErrNone)
       
  1588 					{
       
  1589 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  1590 					StopTest(err);
       
  1591 					break;
       
  1592 					}
       
  1593 				StartTimer(KMicroSecsTwoSec);
       
  1594 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  1595 				iDevSoundState = EStatePlaying;
       
  1596 				}
       
  1597 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1598 				{
       
  1599 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1600 				StopTest(aError);
       
  1601 				}
       
  1602 			else
       
  1603 				{
       
  1604 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1605 				StopTest(aError, EFail);
       
  1606 				}
       
  1607 			break;
       
  1608 			}
       
  1609 		default:
       
  1610 			{
       
  1611 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1612 			StopTest(aError, EFail);
       
  1613 			}
       
  1614 		}
       
  1615 	}
       
  1616 	
       
  1617 void RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::DoTimerCallback()
       
  1618 	{
       
  1619 	iTimer->Cancel();
       
  1620 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1621 	INFO_PRINTF3(_L("Calling CMMFDevSound::SetToneRepeats using RepeatCount = %d and RepeatTrailingSilence = %d microsecs"), iRepeatCount, iRepeatTrailingSilence);
       
  1622 	iMMFDevSound->SetToneRepeats(iRepeatCount, iRepeatTrailingSilence);
       
  1623 	}
       
  1624 
       
  1625 void RA3FDevSoundToneSetToneRepetitionsWhilePlayingTest::ToneFinished(TInt aError)
       
  1626 	{
       
  1627 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1628 	const TInt KtimesPlayToneIsCalled = 2;
       
  1629 	if (aError == KErrUnderflow)
       
  1630 		{
       
  1631 		iEndTime.HomeTime();
       
  1632 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  1633 		TInt repeatTrailingSilenceToSecs = iRepeatTrailingSilence/KMicroSecsInOneSec;
       
  1634 		TInt totalExpectedReproductionTime = (KtimesPlayToneIsCalled*iDuration+iRepeatCount*iDuration + (repeatTrailingSilenceToSecs*iRepeatCount))*KMicroSecsInOneSec;
       
  1635 		if(iPlayToneTime < ((iDuration*KMicroSecsInOneSec) + KPlayVarianceTime)&& iPlayToneTime > (iDuration*KMicroSecsInOneSec) - KPlayVarianceTime)
       
  1636 			{
       
  1637 			INFO_PRINTF1(_L("First play tone succeded."));
       
  1638 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());		
       
  1639 			TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1640 			if (err != KErrNone)
       
  1641 				{
       
  1642 				ERR_PRINTF2(_L("CMMFDevSound::PlayToneL failed with error : %d!"), err);
       
  1643 				StopTest(err);
       
  1644 				}
       
  1645 			}
       
  1646 		else if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  1647 			{
       
  1648 			INFO_PRINTF1(_L("Play tone repeats succeded."));
       
  1649 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1650 			StopTest();
       
  1651 			}
       
  1652 		else
       
  1653 			{
       
  1654 			ERR_PRINTF1(_L("Play tone repeats did not work as planned."));
       
  1655 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  1656 			StopTest(KErrNone, EFail);
       
  1657 			}
       
  1658 		}
       
  1659 	else
       
  1660 		{
       
  1661 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  1662 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  1663 		StopTest(aError, EFail);
       
  1664 		}
       
  1665 	}
       
  1666 
       
  1667 /*
       
  1668  *========================================================================================================
       
  1669  * MM-A3F-DEVSOUND-CHRTZ-TONE-0013
       
  1670  */
       
  1671 RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest(const TDesC& aTestName)
       
  1672 	:	RA3FDevSoundTestBase(aTestName), 
       
  1673 		iFirstToneFinishedCall(EFalse),
       
  1674 		iToneOnLength(0), iToneOffLength(0),
       
  1675 		iPauseLength(0), iDTMFString(KNullDesC),
       
  1676 		iDTMFPauses(0), iDTMFTones(0),
       
  1677 		iTotalExpectedPlayToneTime(0)
       
  1678 	{
       
  1679 	}
       
  1680 RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest* RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::NewL(const TDesC& aTestName)
       
  1681 	{
       
  1682 	RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest(aTestName);
       
  1683 	return self;
       
  1684 	}
       
  1685 
       
  1686 void RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::DoKickoffTestL()
       
  1687 	{
       
  1688 	if (!GetIntFromConfig(iTestStepName, KToneOnLength, iToneOnLength)) 
       
  1689 		{
       
  1690 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOnLength);
       
  1691 		StopTest(KErrNotFound);
       
  1692 		return;
       
  1693 		}
       
  1694 	if (!GetIntFromConfig(iTestStepName, KToneOffLength, iToneOffLength)) 
       
  1695 		{
       
  1696 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOffLength);
       
  1697 		StopTest(KErrNotFound);
       
  1698 		return;
       
  1699 		}
       
  1700 	if (!GetIntFromConfig(iTestStepName, KPauseLength, iPauseLength)) 
       
  1701 		{
       
  1702 		ERR_PRINTF2(KMsgErrorGetParameter, &KPauseLength);
       
  1703 		StopTest(KErrNotFound);
       
  1704 		return;
       
  1705 		}
       
  1706 	TPtrC DTMF;
       
  1707 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  1708 		{
       
  1709 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  1710 		StopTest(KErrNotFound);
       
  1711 		return;
       
  1712 		}
       
  1713 	iDTMFString.Copy(DTMF);
       
  1714 	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
       
  1715 		{
       
  1716 		if (iDTMFString[i] == ',')
       
  1717 			{
       
  1718 			iDTMFPauses++;
       
  1719 			}
       
  1720 		else
       
  1721 			{
       
  1722 			iDTMFTones++;
       
  1723 			}
       
  1724 		}
       
  1725 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  1726 	}
       
  1727 
       
  1728 void RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  1729 	{
       
  1730 	switch (iDevSoundState)
       
  1731 		{
       
  1732 		case EStateCreated:
       
  1733 			{
       
  1734 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetDTMFToneRepetitionsWhilePlayingConfigurationTest"), EFsmIncorrectErrorPassed));
       
  1735 			if(aDevSoundEvent == EEventInitialize)
       
  1736 				{
       
  1737 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1738 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1739 				if (err != KErrNone)
       
  1740 					{
       
  1741 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1742 					StopTest(err);
       
  1743 					break;
       
  1744 					}
       
  1745 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1746 				iDevSoundState = EStateInitializing;
       
  1747 				}
       
  1748 			else
       
  1749 				{
       
  1750 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1751 				StopTest(aError, EFail);
       
  1752 				}
       
  1753 			break;
       
  1754 			}
       
  1755 		case EStateInitializing:
       
  1756 			{
       
  1757 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1758 				{
       
  1759 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  1760 				iStartTime.HomeTime();
       
  1761 				INFO_PRINTF2(_L("Calling CMMFDevSound::L %S"), &iDTMFString);
       
  1762 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  1763 				if (err != KErrNone)
       
  1764 					{
       
  1765 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
       
  1766 					StopTest(err);
       
  1767 					break;
       
  1768 					}
       
  1769 				StartTimer(KMicroSecsTwoSec);
       
  1770 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  1771 				iDevSoundState=EStatePlaying;
       
  1772 				}
       
  1773 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1774 				{
       
  1775 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1776 				StopTest(aError);
       
  1777 				}
       
  1778 			else
       
  1779 				{
       
  1780 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1781 				StopTest(aError, EFail);
       
  1782 				}
       
  1783 			break;
       
  1784 			}
       
  1785 		default:
       
  1786 			{
       
  1787 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1788 			StopTest(aError, EFail);
       
  1789 			}
       
  1790 		}
       
  1791 	}
       
  1792 	
       
  1793 void RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::DoTimerCallback()
       
  1794 	{
       
  1795 	iTimer->Cancel();
       
  1796 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  1797 	TTimeIntervalMicroSeconds32 ToneOnLength(iToneOnLength);
       
  1798 	TTimeIntervalMicroSeconds32 ToneOffLength(iToneOffLength);
       
  1799 	TTimeIntervalMicroSeconds32 PauseLength(iPauseLength);
       
  1800 	INFO_PRINTF4(_L("Calling CMMFDevSound::SetDTMFLengths. ToneOnLength = %d, ToneOffLength = %d and PauseLength = %d"), ToneOnLength.Int(), ToneOffLength.Int(), PauseLength.Int());
       
  1801 	iMMFDevSound->SetDTMFLengths(ToneOnLength, ToneOffLength, PauseLength);
       
  1802 	}
       
  1803 
       
  1804 void RA3FDevSoundToneSetDTMFLengthsWhilePlayingTest::ToneFinished(TInt aError)
       
  1805 	{
       
  1806 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1807 	if (aError == KErrUnderflow)
       
  1808 		{
       
  1809 		iEndTime.HomeTime();
       
  1810 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  1811 		if (!iFirstToneFinishedCall)
       
  1812 			{
       
  1813 			INFO_PRINTF1(_L("First play tone succeded"));
       
  1814 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1815 			iFirstToneFinishedCall = ETrue;
       
  1816 			INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  1817 			TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  1818 			if (err != KErrNone)
       
  1819 				{
       
  1820 				ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
       
  1821 				StopTest(err);
       
  1822 				}
       
  1823 			iTotalExpectedPlayToneTime = iToneOnLength*iDTMFTones + iToneOffLength * iDTMFTones + iDTMFPauses * iPauseLength + iPlayToneTime.Int64();
       
  1824 			return;
       
  1825 			}
       
  1826 		if (iPlayToneTime.Int64() < iTotalExpectedPlayToneTime + KPlayVarianceTime && iPlayToneTime.Int64() > iTotalExpectedPlayToneTime - KPlayVarianceTime)
       
  1827 			{
       
  1828 			INFO_PRINTF1(_L("Calling CMMFDevSound::SetDTMFLengths succeded."));
       
  1829 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1830 			StopTest();
       
  1831 			}
       
  1832 		else
       
  1833 			{
       
  1834 			ERR_PRINTF2(_L("Calling CMMFDevSound::SetDTMFLengths failed with %Ld"), iPlayToneTime.Int64());
       
  1835 			ERR_PRINTF2(_L("Expected time %d"), iTotalExpectedPlayToneTime);
       
  1836 			StopTest(KErrNone, EFail);
       
  1837 			}
       
  1838 		}
       
  1839 	else
       
  1840 		{
       
  1841 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  1842 		ERR_PRINTF2(_L("Expected error = %Ld"), KErrUnderflow);
       
  1843 		StopTest(aError, EFail);
       
  1844 		}
       
  1845 	}
       
  1846 
       
  1847 /*
       
  1848  *========================================================================================================
       
  1849  * MM-A3F-DEVSOUND-CHRTZ-TONE-0014
       
  1850  */
       
  1851 RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest::RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest(const TDesC& aTestName)
       
  1852 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  1853 		iFrequencyTone1(0),
       
  1854 		iRepeatTrailingSilence(0), iRepeatCount(0),
       
  1855 		iInitializedToPlayTones(EFalse)
       
  1856 	{
       
  1857 	}
       
  1858 
       
  1859 RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest* RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest::NewL(const TDesC& aTestName)
       
  1860 	{
       
  1861 	RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest * self = new(ELeave)RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest(aTestName);
       
  1862 	return self;
       
  1863 	}
       
  1864 	
       
  1865 void RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest::DoKickoffTestL()
       
  1866 	{
       
  1867 	if (!GetIntFromConfig(iTestStepName, KRepeatCount, iRepeatCount)) 
       
  1868 		{
       
  1869 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatCount);
       
  1870 		StopTest(KErrNotFound);
       
  1871 		return;
       
  1872 		}
       
  1873 	if (!GetIntFromConfig(iTestStepName, KRepeatTrailingSilence, iRepeatTrailingSilence)) 
       
  1874 		{
       
  1875 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatTrailingSilence);
       
  1876 		StopTest(KErrNotFound);
       
  1877 		return;
       
  1878 		}
       
  1879 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  1880 		{
       
  1881 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  1882 		StopTest(KErrNotFound);
       
  1883 		return;
       
  1884 		}
       
  1885 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  1886 		{
       
  1887 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  1888 		StopTest(KErrNotFound);
       
  1889 		return;
       
  1890 		}
       
  1891 	}
       
  1892 
       
  1893 void RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  1894 	{
       
  1895 	switch (iDevSoundState)
       
  1896 		{
       
  1897 		case EStateCreated:
       
  1898 			{
       
  1899 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeConfigurationTest"), EFsmIncorrectErrorPassed));
       
  1900 			if(aDevSoundEvent == EEventInitialize)
       
  1901 				{
       
  1902 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  1903 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStatePlaying));
       
  1904 				if (err != KErrNone)
       
  1905 					{
       
  1906 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1907 					StopTest(err);
       
  1908 					break;
       
  1909 					}
       
  1910 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  1911 				iDevSoundState = EStateInitializing;
       
  1912 				}
       
  1913 			else
       
  1914 				{
       
  1915 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  1916 				StopTest(aError, EFail);
       
  1917 				}
       
  1918 			break;
       
  1919 			}
       
  1920 		case EStateInitializing:
       
  1921 			{
       
  1922 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  1923 				{
       
  1924 				if(!iInitializedToPlayTones)
       
  1925 					{
       
  1926 					INFO_PRINTF3(_L("Calling CMMFDevSound::SetToneRepeats using RepeatCount = %d and RepeatTrailingSilence = %d microsecs"), iRepeatCount, iRepeatTrailingSilence);
       
  1927 					iMMFDevSound->SetToneRepeats(iRepeatCount, iRepeatTrailingSilence);
       
  1928 					INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL for playing tones"));
       
  1929 					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  1930 					if (err != KErrNone)
       
  1931 						{
       
  1932 						ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  1933 						StopTest(err);
       
  1934 						break;
       
  1935 						}
       
  1936 					iInitializedToPlayTones = ETrue;
       
  1937 					}
       
  1938 				else
       
  1939 					{
       
  1940 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  1941 					iStartTime.HomeTime();
       
  1942 					INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  1943 					TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  1944 					if (err != KErrNone)
       
  1945 						{
       
  1946 						ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  1947 						StopTest(err);
       
  1948 						break;
       
  1949 						}
       
  1950 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  1951 					iDevSoundState = EStatePlaying;
       
  1952 					}
       
  1953 				}
       
  1954 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  1955 				{
       
  1956 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  1957 				StopTest(aError);
       
  1958 				}
       
  1959 			else
       
  1960 				{
       
  1961 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  1962 				StopTest(aError, EFail);
       
  1963 				}
       
  1964 			break;
       
  1965 			}
       
  1966 		default:
       
  1967 			{
       
  1968 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  1969 			StopTest(aError, EFail);
       
  1970 			}
       
  1971 		}
       
  1972 	}
       
  1973 	
       
  1974 
       
  1975 void RA3FDevSoundToneSetToneRepetitionsNotPlayingTonesModeTest::ToneFinished(TInt aError)
       
  1976 	{
       
  1977 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  1978 	if (aError == KErrUnderflow)
       
  1979 		{
       
  1980 		iEndTime.HomeTime();
       
  1981 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  1982 		TInt repeatTrailingSilenceToSecs = iRepeatTrailingSilence/KMicroSecsInOneSec;
       
  1983 		TInt totalExpectedReproductionTime = (iDuration + iRepeatCount * iDuration+ (repeatTrailingSilenceToSecs*iRepeatCount)) * KMicroSecsInOneSec;
       
  1984 		if(iPlayToneTime < (totalExpectedReproductionTime + KPlayVarianceTime) && iPlayToneTime > (totalExpectedReproductionTime - KPlayVarianceTime))
       
  1985 			{
       
  1986 			INFO_PRINTF1(_L("Play tone repeats succeded."));
       
  1987 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  1988 			StopTest();
       
  1989 			}		
       
  1990 		else
       
  1991 			{
       
  1992 			ERR_PRINTF1(_L("Play tone repeats did not work as planned."));
       
  1993 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  1994 			StopTest(KErrNone, EFail);	
       
  1995 			}
       
  1996 		}
       
  1997 	else
       
  1998 		{
       
  1999 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  2000 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  2001 		StopTest(aError, EFail);
       
  2002 		}	
       
  2003 	}
       
  2004 
       
  2005 /*
       
  2006  *========================================================================================================
       
  2007  * MM-A3F-DEVSOUND-CHRTZ-TONE-0015
       
  2008  */
       
  2009 RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest::RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest(const TDesC& aTestName)
       
  2010 	:	RA3FDevSoundTestBase(aTestName), iInitializedToPlayTones(EFalse),
       
  2011 		iDTMFString(KNullDesC), iToneOnLength(0),
       
  2012 		iToneOffLength(0), iPauseLength(0),
       
  2013 		iDTMFPauses(0), iDTMFTones(0)
       
  2014 		
       
  2015 	{
       
  2016 	}
       
  2017 
       
  2018 RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest* RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest::NewL(const TDesC& aTestName)
       
  2019 	{
       
  2020 	RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest * self = new(ELeave)RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest(aTestName);
       
  2021 	return self;
       
  2022 	}
       
  2023 	
       
  2024 void RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest::DoKickoffTestL()
       
  2025 	{
       
  2026 	if (!GetIntFromConfig(iTestStepName, KToneOnLength, iToneOnLength)) 
       
  2027 		{
       
  2028 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOnLength);
       
  2029 		StopTest(KErrNotFound);
       
  2030 		return;
       
  2031 		}
       
  2032 	if (!GetIntFromConfig(iTestStepName, KToneOffLength, iToneOffLength)) 
       
  2033 		{
       
  2034 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOffLength);
       
  2035 		StopTest(KErrNotFound);
       
  2036 		return;
       
  2037 		}
       
  2038 	if (!GetIntFromConfig(iTestStepName, KPauseLength, iPauseLength))
       
  2039 		{
       
  2040 		ERR_PRINTF2(KMsgErrorGetParameter, &KPauseLength);
       
  2041 		StopTest(KErrNotFound);
       
  2042 		return;
       
  2043 		}
       
  2044 	TPtrC DTMF;
       
  2045 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  2046 		{
       
  2047 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  2048 		StopTest(KErrNotFound);
       
  2049 		return;
       
  2050 		}
       
  2051 	iDTMFString.Copy(DTMF);
       
  2052 	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
       
  2053 		{
       
  2054 		if (iDTMFString[i] == ',')
       
  2055 			{
       
  2056 			iDTMFPauses++;
       
  2057 			}
       
  2058 		else
       
  2059 			{
       
  2060 			iDTMFTones++;
       
  2061 			}
       
  2062 		}
       
  2063 	}
       
  2064 
       
  2065 void RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2066 	{
       
  2067 	switch (iDevSoundState)
       
  2068 		{
       
  2069 		case EStateCreated:
       
  2070 			{
       
  2071 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeConfigurationTest"), EFsmIncorrectErrorPassed));
       
  2072 			if(aDevSoundEvent == EEventInitialize)
       
  2073 				{
       
  2074 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2075 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
       
  2076 				if (err != KErrNone)
       
  2077 					{
       
  2078 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2079 					StopTest(err);
       
  2080 					break;
       
  2081 					}
       
  2082 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2083 				iDevSoundState = EStateInitializing;
       
  2084 				}
       
  2085 			else
       
  2086 				{
       
  2087 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"),  aDevSoundEvent);
       
  2088 				StopTest(aError, EFail);
       
  2089 				}
       
  2090 			break;
       
  2091 			}
       
  2092 		case EStateInitializing:
       
  2093 			{
       
  2094 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2095 				{
       
  2096 				if(!iInitializedToPlayTones)
       
  2097 					{
       
  2098 					TTimeIntervalMicroSeconds32 ToneOnLength(iToneOnLength);
       
  2099 					TTimeIntervalMicroSeconds32 ToneOffLength(iToneOffLength);
       
  2100 					TTimeIntervalMicroSeconds32 PauseLength(iPauseLength);
       
  2101 					INFO_PRINTF4(_L("Calling CMMFDevSound::SetDTMFLengths. ToneOnLength = %d, ToneOffLength = %d and PauseLength = %d"), ToneOnLength.Int(), ToneOffLength.Int(), PauseLength.Int());
       
  2102 					iMMFDevSound->SetDTMFLengths(ToneOnLength, ToneOffLength, PauseLength);
       
  2103 					INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2104 					TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2105 					if (err != KErrNone)
       
  2106 						{
       
  2107 						ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2108 						StopTest(err);
       
  2109 						break;
       
  2110 						}
       
  2111 					iInitializedToPlayTones = ETrue;
       
  2112 					}
       
  2113 				else
       
  2114 					{
       
  2115 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  2116 					iStartTime.HomeTime();
       
  2117 					INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  2118 					TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  2119 					if (err != KErrNone)
       
  2120 						{
       
  2121 						ERR_PRINTF2(_L("Play DTMF string failed with error : %d!"), err);
       
  2122 						StopTest(err);
       
  2123 						break;
       
  2124 						}
       
  2125 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  2126 					iDevSoundState = EStatePlaying;
       
  2127 					}
       
  2128 				}
       
  2129 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2130 				{
       
  2131 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2132 				StopTest(aError);
       
  2133 				}
       
  2134 			else
       
  2135 				{
       
  2136 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2137 				StopTest(aError, EFail);
       
  2138 				}
       
  2139 			break;
       
  2140 			}
       
  2141 		default:
       
  2142 			{
       
  2143 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2144 			StopTest(aError, EFail);
       
  2145 			}
       
  2146 		}
       
  2147 	}
       
  2148 	
       
  2149 void RA3FDevSoundToneSetDTMFLengthsNotPlayingTonesModeTest::ToneFinished(TInt aError)
       
  2150 	{
       
  2151 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  2152 	if (aError == KErrUnderflow)
       
  2153 		{
       
  2154 		iEndTime.HomeTime();
       
  2155 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  2156 		TInt totalExpectedReproductionTime = iToneOnLength*iDTMFTones + iToneOffLength * iDTMFTones + iDTMFPauses * iPauseLength;
       
  2157 		if (iPlayToneTime.Int64() < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime.Int64() > totalExpectedReproductionTime - KPlayVarianceTime)
       
  2158 			{
       
  2159 			INFO_PRINTF1(_L("CMMFDevSound::SetDTMFLengths settings were remembered after re-initialization."));
       
  2160 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  2161 			StopTest();
       
  2162 			}
       
  2163 		else
       
  2164 			{
       
  2165 			ERR_PRINTF1(_L("CMMFDevSound::SetDTMFLengths settings were not remembered after re-initialization."));
       
  2166 			ERR_PRINTF2(_L("Expected time %d"), totalExpectedReproductionTime);
       
  2167 			StopTest(KErrNone, EFail);
       
  2168 			}
       
  2169 		}
       
  2170 	else
       
  2171 		{
       
  2172 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  2173 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  2174 		StopTest(aError, EFail);
       
  2175 		}
       
  2176 	}
       
  2177 
       
  2178 /*
       
  2179  *========================================================================================================
       
  2180  * MM-A3F-DEVSOUND-CHRTZ-TONE-0016
       
  2181  */
       
  2182 RA3FDevSoundToneSetConfigWhilePlayingTest::RA3FDevSoundToneSetConfigWhilePlayingTest(const TDesC& aTestName)
       
  2183 	:	RA3FDevSoundTestBase(aTestName), iDuration(0), 
       
  2184 		iVolume(0), iFrequencyTone1(0), 
       
  2185 		iSampleRate(0), iChannels(0)
       
  2186 	{
       
  2187 	}
       
  2188 
       
  2189 RA3FDevSoundToneSetConfigWhilePlayingTest* RA3FDevSoundToneSetConfigWhilePlayingTest::NewL(const TDesC& aTestName)
       
  2190 	{
       
  2191 	RA3FDevSoundToneSetConfigWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetConfigWhilePlayingTest(aTestName);
       
  2192 	return self;
       
  2193 	}
       
  2194 	
       
  2195 void RA3FDevSoundToneSetConfigWhilePlayingTest::DoKickoffTestL()
       
  2196 	{
       
  2197 	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate)) 
       
  2198 		{
       
  2199 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  2200 		StopTest(KErrNotFound);
       
  2201 		return;
       
  2202 		}
       
  2203 	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels)) 
       
  2204 		{
       
  2205 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  2206 		StopTest(KErrNotFound);
       
  2207 		return;
       
  2208 		}
       
  2209 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  2210 		{
       
  2211 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  2212 		StopTest(KErrNotFound);
       
  2213 		return;
       
  2214 		}
       
  2215 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  2216 		{
       
  2217 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  2218 		StopTest(KErrNotFound);
       
  2219 		return;
       
  2220 		}
       
  2221 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  2222 	}
       
  2223 
       
  2224 void RA3FDevSoundToneSetConfigWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  2225 	{
       
  2226 	switch (iDevSoundState)
       
  2227 		{
       
  2228 		case EStateCreated:
       
  2229 			{
       
  2230 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetConfigWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  2231 			if (aDevSoundEvent == EEventInitialize)
       
  2232 				{
       
  2233 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2234 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2235 				if (err != KErrNone)
       
  2236 					{
       
  2237 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2238 					StopTest(err);
       
  2239 					break;
       
  2240 					}
       
  2241 				StartTimer(KMicroSecsTwoSec);
       
  2242 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2243 				iDevSoundState = EStateInitializing;
       
  2244 				}
       
  2245 			else
       
  2246 				{
       
  2247 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2248 				StopTest(aError, EFail);
       
  2249 				}
       
  2250 			break;
       
  2251 			}
       
  2252 		case EStateInitializing:
       
  2253 			{
       
  2254 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2255 				{
       
  2256 				INFO_PRINTF1(_L("CMMFDevSound::PlayToneL"));
       
  2257 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1,  iDuration*KMicroSecsInOneSec));
       
  2258 				if (err != KErrNone)
       
  2259 					{
       
  2260 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d"), err);
       
  2261 					StopTest(err);
       
  2262 					break;
       
  2263 					}
       
  2264 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  2265 				iDevSoundState = EStatePlaying;
       
  2266 				}
       
  2267 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2268 				{
       
  2269 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2270 				StopTest(aError);
       
  2271 				}
       
  2272 			else
       
  2273 				{
       
  2274 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2275 				StopTest(aError, EFail);
       
  2276 				}
       
  2277 			break;
       
  2278 			}
       
  2279 		default:
       
  2280 			{
       
  2281 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2282 			StopTest(aError, EFail);
       
  2283 			}
       
  2284 		}
       
  2285 	}
       
  2286 
       
  2287 void RA3FDevSoundToneSetConfigWhilePlayingTest::DoTimerCallback()
       
  2288 	{
       
  2289 	iTimer->Cancel();
       
  2290 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  2291 	TMMFCapabilities capabilitiesSet;
       
  2292 	TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
       
  2293 	TBuf<KMaxChannelsStringLength> stringChannelsSet;
       
  2294 	TMMFSampleRate eSampleRate;
       
  2295 	SampleRateFromTIntToTMMFSampleRate (iSampleRate, eSampleRate);
       
  2296 	capabilitiesSet.iRate = eSampleRate;
       
  2297 	capabilitiesSet.iChannels = iChannels;
       
  2298 	SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
       
  2299 	ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
       
  2300 	INFO_PRINTF3(_L("Calling CMMFDevSound::SetConfigL using sample rate = %S and channel mode = %S"), &stringSampleRateSet, &stringChannelsSet);
       
  2301 	TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
       
  2302 	if (err == KErrNotReady)
       
  2303 		{
       
  2304 		INFO_PRINTF2(_L("CMMFDevSound::SetConfigL succeeded with error = %d"), err);
       
  2305 		StopTest(err, EPass);
       
  2306 		}
       
  2307 	else
       
  2308 		{
       
  2309 		ERR_PRINTF2(_L("CMMFDevSound::SetConfigL failed with error = %d"), err);
       
  2310 		ERR_PRINTF2(_L("Expected  error = %d"), KErrNotReady);
       
  2311 		StopTest(err, EFail);
       
  2312 		}
       
  2313 	}
       
  2314 
       
  2315 /*
       
  2316  *========================================================================================================
       
  2317  * MM-A3F-DEVSOUND-CHRTZ-TONE-0017
       
  2318  */
       
  2319 RA3FDevSoundToneSetPriorityWhilePlayingTest::RA3FDevSoundToneSetPriorityWhilePlayingTest(const TDesC& aTestName)
       
  2320 	:	RA3FDevSoundTestBase(aTestName),
       
  2321 		iDuration(0), iFrequencyTone1(0)
       
  2322 	{
       
  2323 	}
       
  2324 
       
  2325 RA3FDevSoundToneSetPriorityWhilePlayingTest* RA3FDevSoundToneSetPriorityWhilePlayingTest::NewL(const TDesC& aTestName)
       
  2326 	{
       
  2327 	RA3FDevSoundToneSetPriorityWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneSetPriorityWhilePlayingTest(aTestName);
       
  2328 	return self;
       
  2329 	}
       
  2330 
       
  2331 void RA3FDevSoundToneSetPriorityWhilePlayingTest::DoKickoffTestL()
       
  2332 	{
       
  2333 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  2334 		{
       
  2335 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  2336 		StopTest(KErrNotFound);
       
  2337 		return;
       
  2338 		}
       
  2339 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  2340 		{
       
  2341 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  2342 		StopTest(KErrNotFound);
       
  2343 		return;
       
  2344 		}
       
  2345 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  2346 	iDevsoundToneClient = CA3FDevSoundToneClient::NewL(*this);
       
  2347 	}
       
  2348 
       
  2349 void RA3FDevSoundToneSetPriorityWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2350 	{
       
  2351 	switch(iDevSoundState)
       
  2352 		{
       
  2353 		case EStateCreated:
       
  2354 			{
       
  2355 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetPriorityWhilePlayingConfigurationTest"), EFsmIncorrectErrorPassed));
       
  2356 			if(aDevSoundEvent == EEventInitialize)
       
  2357 				{
       
  2358 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2359 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2360 				if (err != KErrNone)
       
  2361 					{
       
  2362 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2363 					StopTest(err);
       
  2364 					break;
       
  2365 					}
       
  2366 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2367 				iDevSoundState = EStateInitializing;
       
  2368 				}
       
  2369 			else
       
  2370 				{
       
  2371 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2372 				StopTest(aError, EFail);
       
  2373 				}
       
  2374 			break;
       
  2375 			}
       
  2376 		case EStateInitializing:
       
  2377 			{
       
  2378 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2379 				{
       
  2380 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume ());
       
  2381 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneL"));
       
  2382 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  2383 				if (err != KErrNone)
       
  2384 					{
       
  2385 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  2386 					StopTest(err);
       
  2387 					break;
       
  2388 					}
       
  2389 				StartTimer(KMicroSecsTwoSec);
       
  2390 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  2391 				iDevSoundState = EStatePlaying;
       
  2392 				INFO_PRINTF2(_L("Calling CMMFDevSound::SetPrioritySettings using a priority(highest) value = %d"), KMaximumPriority);
       
  2393 				TMMFPrioritySettings priority;
       
  2394 				priority.iPriority = KMaximumPriority;
       
  2395 				iMMFDevSound->SetPrioritySettings(priority);
       
  2396 				}
       
  2397 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2398 				{
       
  2399 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2400 				StopTest(aError);
       
  2401 				}
       
  2402 			else
       
  2403 				{
       
  2404 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2405 				StopTest(aError,  EFail);
       
  2406 				}
       
  2407 			break;
       
  2408 			}
       
  2409 		default:
       
  2410 			{
       
  2411 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2412 			StopTest(aError, EFail);
       
  2413 			}
       
  2414 		}
       
  2415 	}
       
  2416 
       
  2417 void RA3FDevSoundToneSetPriorityWhilePlayingTest::ClientInitializeCompleteCallback(TInt aError)
       
  2418 	{
       
  2419 	INFO_PRINTF1(_L("==========Second DevSound client called InitializeComplete()=========="));
       
  2420 	if (aError == KErrNone)
       
  2421 		{
       
  2422 		TInt err = iDevsoundToneClient->PlayTone ();
       
  2423 		if (err != KErrNone)
       
  2424 			{
       
  2425 			ERR_PRINTF2(_L("Second Devsound client called PlayTone and failed with error = %d"), err);
       
  2426 			StopTest(err);
       
  2427 			}
       
  2428 		}
       
  2429 	else
       
  2430 		{
       
  2431 		ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
       
  2432 		StopTest(aError);
       
  2433 		}
       
  2434 	}
       
  2435 
       
  2436 void RA3FDevSoundToneSetPriorityWhilePlayingTest::ClientToneFinishedCallback(TInt aError)
       
  2437 	{
       
  2438 	INFO_PRINTF1(_L("========== Second  DevSound client called ToneFinished()=========="));
       
  2439 	if (aError == KErrUnderflow)
       
  2440 		{
       
  2441 		INFO_PRINTF2(_L("Second DevSound client called ToneFinished and succeeded with error = %d"), aError);
       
  2442 		StopTest(aError, EPass);
       
  2443 		}
       
  2444 	else
       
  2445 		{
       
  2446 		ERR_PRINTF2(_L("Second DevSound client called ToneFinished and failed with error = %d"), aError);
       
  2447 		StopTest(aError, EFail);
       
  2448 		}
       
  2449 	}
       
  2450 
       
  2451 void RA3FDevSoundToneSetPriorityWhilePlayingTest::DoTimerCallback()
       
  2452 	{
       
  2453 	INFO_PRINTF1(_L("TimerEvent called"));
       
  2454 	iTimer->Cancel();
       
  2455 	INFO_PRINTF1(_L("Starting another devsound client using the highest priority"));	
       
  2456 	iDevsoundToneClient->SetPriority(KMaximumPriority);
       
  2457 	TInt err = iDevsoundToneClient->InitTonePlay(iFrequencyTone1, iDuration*KMicroSecsInOneSec);
       
  2458 	if(err != KErrNone)
       
  2459 		{
       
  2460 		ERR_PRINTF1(_L("Initialization to play tone thru second devsound client failed"));
       
  2461 		StopTest(err);
       
  2462 		}
       
  2463 	}
       
  2464 
       
  2465 void RA3FDevSoundToneSetPriorityWhilePlayingTest::ToneFinished(TInt aError)
       
  2466 	{
       
  2467 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  2468 	if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
       
  2469 		{
       
  2470 		INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
       
  2471 		}
       
  2472 	else
       
  2473 		{
       
  2474 		ERR_PRINTF2(_L("DevSound called ToneFinished and failed with error = %d"), aError);
       
  2475 		ERR_PRINTF4(_L("Expected errors posibilities %d %d %d"), KErrInUse, KErrDied, KErrAccessDenied);
       
  2476 		StopTest(aError, EFail);
       
  2477 		}
       
  2478 	}
       
  2479 
       
  2480 /*
       
  2481  *========================================================================================================
       
  2482  * MM-A3F-DEVSOUND-CHRTZ-TONE-0018
       
  2483  */
       
  2484 RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue::RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue(const TDesC& aTestName)
       
  2485 	:	RA3FDevSoundTestBase(aTestName), iSampleRate(0),
       
  2486 		iChannels(0)
       
  2487 	{
       
  2488 	}
       
  2489 
       
  2490 RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue* RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue::NewL(const TDesC& aTestName)
       
  2491 	{
       
  2492 	RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue * self = new(ELeave)RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue(aTestName);
       
  2493 	return self; 
       
  2494 	}
       
  2495 
       
  2496 void RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue::DoKickoffTestL()
       
  2497 	{
       
  2498 	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
       
  2499 		{
       
  2500 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  2501 		StopTest(KErrNotFound);
       
  2502 		return;
       
  2503 		}
       
  2504 	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
       
  2505 		{
       
  2506 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  2507 		StopTest(KErrNotFound);
       
  2508 		return;
       
  2509 		}
       
  2510 	}
       
  2511 
       
  2512 void RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2513 	{
       
  2514 	switch(iDevSoundState)
       
  2515 		{
       
  2516 		case EStateCreated:
       
  2517 			{
       
  2518 			if(aDevSoundEvent == EEventInitialize)
       
  2519 				{
       
  2520 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetConfigTestToInvalidSampleRateValue"), EFsmIncorrectErrorPassed));
       
  2521 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2522 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2523 				if (err != KErrNone)
       
  2524 					{
       
  2525 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2526 					StopTest(err);
       
  2527 					break;
       
  2528 					}
       
  2529 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2530 				iDevSoundState = EStateInitializing;
       
  2531 				}
       
  2532 			else
       
  2533 				{
       
  2534 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2535 				StopTest(aError, EFail);
       
  2536 				}
       
  2537 			break;
       
  2538 			}
       
  2539 		case EStateInitializing:
       
  2540 			{
       
  2541 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2542 				{
       
  2543 				TMMFCapabilities capabilitiesSet;
       
  2544 				TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
       
  2545 				TBuf<KMaxChannelsStringLength> stringChannelsSet;
       
  2546 				TMMFSampleRate eSampleRate;
       
  2547 				SampleRateFromTIntToTMMFSampleRate (iSampleRate, eSampleRate);
       
  2548 				capabilitiesSet.iRate = eSampleRate;
       
  2549 				capabilitiesSet.iChannels = iChannels;
       
  2550 				SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
       
  2551 				ChannelsFromTUintToString (capabilitiesSet.iChannels, stringChannelsSet);
       
  2552 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetConfigL using an invalid sample rate = %S and channel mode = %S"), &stringSampleRateSet, &stringChannelsSet);
       
  2553 				TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
       
  2554 				if (err == KErrNotSupported || err == KErrArgument)
       
  2555 					{
       
  2556 					INFO_PRINTF2(_L("CMMFDevSound::SetConfigL succeeded with error = %d"), err);
       
  2557 					StopTest(err, EPass);
       
  2558 					}
       
  2559 				else
       
  2560 					{
       
  2561 					ERR_PRINTF2(_L("CMMFDevSound::SetConfigL failed with error = %d"), err);
       
  2562 					ERR_PRINTF3(_L("Expected  error posibilities %d %d"), KErrArgument, KErrNotSupported);
       
  2563 					StopTest(err, EFail);
       
  2564 					}
       
  2565 				}
       
  2566 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2567 				{
       
  2568 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2569 				StopTest(aError);	
       
  2570 				}
       
  2571 			else
       
  2572 				{
       
  2573 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2574 				StopTest(aError, EFail);
       
  2575 				}
       
  2576 			break;
       
  2577 			}
       
  2578 		default:
       
  2579 			{
       
  2580 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2581 			StopTest(aError, EFail);
       
  2582 			}
       
  2583 		}
       
  2584 	}
       
  2585 
       
  2586 /*
       
  2587  *========================================================================================================
       
  2588  * MM-A3F-DEVSOUND-CHRTZ-TONE-0019
       
  2589  */
       
  2590 RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest::RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest(const TDesC& aTestName)
       
  2591 	:	RA3FDevSoundTestBase(aTestName), iSampleRate(0),
       
  2592 		iChannels(0)
       
  2593 	{
       
  2594 	}
       
  2595 
       
  2596 RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest* RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest::NewL(const TDesC& aTestName)
       
  2597 	{
       
  2598 	RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest * self = new(ELeave)RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest(aTestName);
       
  2599 	return self; 
       
  2600 	}
       
  2601 
       
  2602 void RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest::DoKickoffTestL()
       
  2603 	{
       
  2604 	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
       
  2605 		{
       
  2606 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  2607 		StopTest(KErrNotFound);
       
  2608 		return;
       
  2609 		}
       
  2610 	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
       
  2611 		{
       
  2612 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  2613 		StopTest(KErrNotFound);
       
  2614 		return;
       
  2615 		}
       
  2616 	}
       
  2617 
       
  2618 void RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2619 	{
       
  2620 	switch(iDevSoundState)
       
  2621 		{
       
  2622 		case EStateCreated:
       
  2623 			{
       
  2624 			if(aDevSoundEvent == EEventInitialize)
       
  2625 				{
       
  2626 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetConfigTestToInvalidChannelValueTest"), EFsmIncorrectErrorPassed));
       
  2627 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2628 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2629 				if (err != KErrNone)
       
  2630 					{
       
  2631 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2632 					StopTest(err);
       
  2633 					break;
       
  2634 					}
       
  2635 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2636 				iDevSoundState = EStateInitializing;
       
  2637 				}
       
  2638 			else
       
  2639 				{
       
  2640 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2641 				StopTest(aError, EFail);
       
  2642 				}
       
  2643 			break;
       
  2644 			}
       
  2645 		case EStateInitializing:
       
  2646 			{
       
  2647 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2648 				{
       
  2649 				TMMFCapabilities capabilitiesSet;
       
  2650 				TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
       
  2651 				TBuf<KMaxChannelsStringLength> stringChannelsSet;
       
  2652 				TMMFSampleRate eSampleRate;
       
  2653 				SampleRateFromTIntToTMMFSampleRate (iSampleRate, eSampleRate);
       
  2654 				capabilitiesSet.iRate = eSampleRate;
       
  2655 				capabilitiesSet.iChannels = iChannels;
       
  2656 				SampleRateFromTUintToString (capabilitiesSet.iRate,	stringSampleRateSet);
       
  2657 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetConfigL using a sample rate = %S and an invalid channel mode = %d"), &stringSampleRateSet, iChannels);
       
  2658 				TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesSet));
       
  2659 				if (err == KErrNotSupported || err == KErrArgument)
       
  2660 					{
       
  2661 					INFO_PRINTF2(_L("CMMFDevSound::SetConfigL succeeded with error = %d"), err);
       
  2662 					StopTest(err, EPass);
       
  2663 					}
       
  2664 				else
       
  2665 					{
       
  2666 					ERR_PRINTF2(_L("CMMFDevSound::SetConfigL failed with error = %d"), err);
       
  2667 					ERR_PRINTF3(_L("Expected  error posibilities %d %d"), KErrArgument, KErrNotSupported);
       
  2668 					StopTest(err, EFail);
       
  2669 					}
       
  2670 				}
       
  2671 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2672 				{
       
  2673 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2674 				StopTest(aError);	
       
  2675 				}
       
  2676 			else
       
  2677 				{
       
  2678 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2679 				StopTest(aError, EFail);
       
  2680 				}
       
  2681 			break;
       
  2682 			}
       
  2683 		default:
       
  2684 			{
       
  2685 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2686 			StopTest(aError, EFail);
       
  2687 			}
       
  2688 		}
       
  2689 	}
       
  2690 
       
  2691 /*
       
  2692  *========================================================================================================
       
  2693  * MM-A3F-DEVSOUND-CHRTZ-TONE-0020
       
  2694  */
       
  2695 RA3FDevSoundToneSetDTMFLengthsToNegativeTest::RA3FDevSoundToneSetDTMFLengthsToNegativeTest(const TDesC& aTestName)
       
  2696 	:	RA3FDevSoundTestBase(aTestName), iToneOnLength(0),
       
  2697 		iToneOffLength(0), iPauseLength(0),
       
  2698 		iDTMFString(KNullDesC)
       
  2699 	{
       
  2700 	}
       
  2701 
       
  2702 RA3FDevSoundToneSetDTMFLengthsToNegativeTest* RA3FDevSoundToneSetDTMFLengthsToNegativeTest::NewL(const TDesC& aTestName)
       
  2703 	{
       
  2704 	RA3FDevSoundToneSetDTMFLengthsToNegativeTest * self = new(ELeave)RA3FDevSoundToneSetDTMFLengthsToNegativeTest(aTestName);
       
  2705 	return self;
       
  2706 	}
       
  2707 	
       
  2708 void RA3FDevSoundToneSetDTMFLengthsToNegativeTest::DoKickoffTestL()
       
  2709 	{
       
  2710 	if ( !GetIntFromConfig(iTestStepName, KToneOnLength, iToneOnLength) ) 
       
  2711 		{
       
  2712 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOnLength);
       
  2713 		StopTest(KErrNotFound);
       
  2714 		return;
       
  2715 		}
       
  2716 	if ( !GetIntFromConfig(iTestStepName, KToneOffLength, iToneOffLength) ) 
       
  2717 		{
       
  2718 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOffLength);
       
  2719 		StopTest(KErrNotFound);
       
  2720 		return;
       
  2721 		}
       
  2722 	if ( !GetIntFromConfig(iTestStepName, KPauseLength, iPauseLength) ) 
       
  2723 		{
       
  2724 		ERR_PRINTF2(KMsgErrorGetParameter, &KPauseLength);
       
  2725 		StopTest(KErrNotFound);
       
  2726 		return;
       
  2727 		}
       
  2728 	TPtrC DTMF;
       
  2729 	if ( !GetStringFromConfig(iTestStepName,  KDTMFString,  DTMF) )
       
  2730 		{
       
  2731 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  2732 		StopTest(KErrNotFound);
       
  2733 		return;
       
  2734 		}
       
  2735 	iDTMFString.Copy(DTMF);
       
  2736 	}
       
  2737 
       
  2738 void RA3FDevSoundToneSetDTMFLengthsToNegativeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2739 	{
       
  2740 	switch (iDevSoundState)
       
  2741 		{
       
  2742 		case EStateCreated:
       
  2743 			{
       
  2744 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetDTMFLengthsToNegativeConfigurationTest"), EFsmIncorrectErrorPassed));
       
  2745 			if (aDevSoundEvent == EEventInitialize)
       
  2746 				{
       
  2747 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL"));
       
  2748 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2749 				if (err != KErrNone)
       
  2750 					{
       
  2751 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2752 					StopTest(err);
       
  2753 					break;
       
  2754 					}
       
  2755 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2756 				iDevSoundState = EStateInitializing;
       
  2757 				}
       
  2758 			else
       
  2759 				{
       
  2760 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2761 				StopTest(aError, EFail);
       
  2762 				}
       
  2763 			break;
       
  2764 			}
       
  2765 		case EStateInitializing:
       
  2766 			{
       
  2767 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2768 				{
       
  2769 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  2770 				TTimeIntervalMicroSeconds32 ToneOnLength(iToneOnLength);
       
  2771 				TTimeIntervalMicroSeconds32 ToneOffLength(iToneOffLength);
       
  2772 				TTimeIntervalMicroSeconds32 PauseLength(iPauseLength);
       
  2773 				INFO_PRINTF4(_L("Setting DTMF tone to negative lengths. ToneOnLength %d, ToneOffLength %d and PauseLength %d"), iToneOnLength, iToneOffLength, iPauseLength);
       
  2774 				iMMFDevSound->SetDTMFLengths(ToneOnLength, ToneOffLength, PauseLength);
       
  2775 				iStartTime.HomeTime();
       
  2776 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  2777 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  2778 				if (err != KErrNone)
       
  2779 					{
       
  2780 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"),  err);
       
  2781 					StopTest(err);
       
  2782 					break;
       
  2783 					}
       
  2784 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  2785 				iDevSoundState = EStatePlaying;
       
  2786 				}
       
  2787 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2788 				{
       
  2789 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2790 				StopTest(aError);
       
  2791 				}
       
  2792 			else
       
  2793 				{
       
  2794 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2795 				StopTest(aError, EFail);
       
  2796 				}
       
  2797 			break;
       
  2798 			}
       
  2799 		default:
       
  2800 			{
       
  2801 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2802 			StopTest(aError, EFail);
       
  2803 			}
       
  2804 		}
       
  2805 	}
       
  2806 
       
  2807 void RA3FDevSoundToneSetDTMFLengthsToNegativeTest::ToneFinished(TInt aError)
       
  2808 	{
       
  2809 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  2810 	INFO_PRINTF3(KMsgErrorDevSoundCallback, &KToneFinishedText, aError);
       
  2811 		
       
  2812 	if (aError == KErrUnderflow)
       
  2813 		{
       
  2814 		iEndTime.HomeTime();
       
  2815 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  2816 		if(iPlayToneTime <= KPlayVarianceTime)
       
  2817 			{
       
  2818 			INFO_PRINTF2(_L("Setting DTMF tone lengths to negative gives a reproduction time of %Ld microseconds which is the expected result"), iPlayToneTime.Int64());	
       
  2819 			StopTest(aError, EPass);	
       
  2820 			}
       
  2821 		}
       
  2822 	else
       
  2823 		{
       
  2824 		INFO_PRINTF2(_L("DevSound called ToneFinished with error = %d that was NOT expected"), aError);
       
  2825 		StopTest(aError, EFail);
       
  2826 		}
       
  2827 	}
       
  2828 
       
  2829 /*
       
  2830  *========================================================================================================
       
  2831  * MM-A3F-DEVSOUND-CHRTZ-TONE-0021
       
  2832  */
       
  2833 RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest(const TDesC& aTestName)
       
  2834 	:	RA3FDevSoundTestBase(aTestName), 
       
  2835 		iFirstToneFinishedCall(EFalse),
       
  2836 		iToneOnLength(0), iToneOffLength(0),
       
  2837 		iPauseLength(0), iDTMFString(KNullDesC)
       
  2838 	{
       
  2839 	}
       
  2840 RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest* RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::NewL(const TDesC& aTestName)
       
  2841 	{
       
  2842 	RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest * self = new(ELeave)RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest(aTestName);
       
  2843 	return self;
       
  2844 	}
       
  2845 
       
  2846 void RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::DoKickoffTestL()
       
  2847 	{
       
  2848 	if (!GetIntFromConfig(iTestStepName, KToneOnLength, iToneOnLength)) 
       
  2849 		{
       
  2850 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOnLength);
       
  2851 		StopTest(KErrNotFound);
       
  2852 		return;
       
  2853 		}
       
  2854 	if (!GetIntFromConfig(iTestStepName, KToneOffLength, iToneOffLength)) 
       
  2855 		{
       
  2856 		ERR_PRINTF2(KMsgErrorGetParameter, &KToneOffLength);
       
  2857 		StopTest(KErrNotFound);
       
  2858 		return;
       
  2859 		}
       
  2860 	if (!GetIntFromConfig(iTestStepName, KPauseLength, iPauseLength)) 
       
  2861 		{
       
  2862 		ERR_PRINTF2(KMsgErrorGetParameter, &KPauseLength);
       
  2863 		StopTest(KErrNotFound);
       
  2864 		return;
       
  2865 		}
       
  2866 	TPtrC DTMF;
       
  2867 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  2868 		{
       
  2869 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  2870 		StopTest(KErrNotFound);
       
  2871 		return;
       
  2872 		}
       
  2873 	iDTMFString.Copy(DTMF);
       
  2874 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  2875 	}
       
  2876 
       
  2877 void RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  2878 	{
       
  2879 	switch (iDevSoundState)
       
  2880 		{
       
  2881 		case EStateCreated:
       
  2882 			{
       
  2883 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest"), EFsmIncorrectErrorPassed));
       
  2884 			if(aDevSoundEvent == EEventInitialize)
       
  2885 				{
       
  2886 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  2887 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  2888 				if (err != KErrNone)
       
  2889 					{
       
  2890 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  2891 					StopTest(err);
       
  2892 					break;
       
  2893 					}
       
  2894 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  2895 				iDevSoundState = EStateInitializing;
       
  2896 				}
       
  2897 			else
       
  2898 				{
       
  2899 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  2900 				StopTest(aError, EFail);
       
  2901 				}
       
  2902 			break;
       
  2903 			}
       
  2904 		case EStateInitializing:
       
  2905 			{
       
  2906 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  2907 				{
       
  2908 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  2909 				iStartTime.HomeTime();
       
  2910 				TTimeIntervalMicroSeconds32 ToneOnLength(iToneOnLength);
       
  2911 				TTimeIntervalMicroSeconds32 ToneOffLength(iToneOffLength);
       
  2912 				TTimeIntervalMicroSeconds32 PauseLength(iPauseLength);
       
  2913 				INFO_PRINTF4(_L("Calling CMMFDevSound::SetDTMFLengths. ToneOnLength = %Ld, ToneOffLength = %Ld and PauseLength = %Ld"), iToneOnLength, iToneOffLength, iPauseLength);
       
  2914 				iMMFDevSound->SetDTMFLengths(ToneOnLength, ToneOffLength, PauseLength);
       
  2915 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  2916 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  2917 				if (err != KErrNone)
       
  2918 					{
       
  2919 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
       
  2920 					StopTest(err);
       
  2921 					break;
       
  2922 					}
       
  2923 				StartTimer(KMicrosecsInTenSec);
       
  2924 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  2925 				iDevSoundState=EStatePlaying;
       
  2926 				}
       
  2927 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  2928 				{
       
  2929 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  2930 				StopTest(aError);
       
  2931 				}
       
  2932 			else
       
  2933 				{
       
  2934 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  2935 				StopTest(aError, EFail);
       
  2936 				}
       
  2937 			break;
       
  2938 			}
       
  2939 		default:
       
  2940 			{
       
  2941 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  2942 			StopTest(aError, EFail);
       
  2943 			}
       
  2944 		}
       
  2945 	}
       
  2946 	
       
  2947 void RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::DoTimerCallback()
       
  2948 	{
       
  2949 	iTimer->Cancel();
       
  2950 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  2951 	iEndTime.HomeTime();
       
  2952 	iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  2953 	INFO_PRINTF1(_L("SetDTMF lengths succeded."));
       
  2954 	INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  2955 	StopTest();
       
  2956 	}
       
  2957 
       
  2958 void RA3FDevSoundToneSetDTMFToneOnLengthToMinusOneTest::ToneFinished(TInt aError)
       
  2959 	{
       
  2960 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  2961 	if (aError == KErrUnderflow)
       
  2962 		{
       
  2963 		INFO_PRINTF1(_L("ToneFinished was called before the timer event."));
       
  2964 		StopTest(aError);
       
  2965 		}
       
  2966 	else
       
  2967 		{
       
  2968 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  2969 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  2970 		StopTest(aError, EFail);
       
  2971 		}
       
  2972 	}
       
  2973 
       
  2974 /*
       
  2975  *========================================================================================================
       
  2976  * MM-A3F-DEVSOUND-CHRTZ-TONE-0022
       
  2977  */
       
  2978 RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest::RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest(const TDesC& aTestName)
       
  2979 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  2980 		iFrequencyTone1(0),
       
  2981 		iRepeatTrailingSilence(0), iRepeatCount(0),
       
  2982 		iInitializedToPlayTones(EFalse)
       
  2983 	{
       
  2984 	}
       
  2985 
       
  2986 RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest* RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest::NewL(const TDesC& aTestName)
       
  2987 	{
       
  2988 	RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest * self = new(ELeave)RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest(aTestName);
       
  2989 	return self;
       
  2990 	}
       
  2991 	
       
  2992 void RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest::DoKickoffTestL()
       
  2993 	{
       
  2994 	if (!GetIntFromConfig(iTestStepName, KRepeatCount, iRepeatCount)) 
       
  2995 		{
       
  2996 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatCount);
       
  2997 		StopTest(KErrNotFound);
       
  2998 		return;
       
  2999 		}
       
  3000 	if (!GetIntFromConfig(iTestStepName, KRepeatTrailingSilence, iRepeatTrailingSilence)) 
       
  3001 		{
       
  3002 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatTrailingSilence);
       
  3003 		StopTest(KErrNotFound);
       
  3004 		return;
       
  3005 		}
       
  3006 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  3007 		{
       
  3008 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  3009 		StopTest(KErrNotFound);
       
  3010 		return;
       
  3011 		}
       
  3012 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  3013 		{
       
  3014 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  3015 		StopTest(KErrNotFound);
       
  3016 		return;
       
  3017 		}
       
  3018 	}
       
  3019 
       
  3020 void RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3021 	{
       
  3022 	switch (iDevSoundState)
       
  3023 		{
       
  3024 		case EStateCreated:
       
  3025 			{
       
  3026 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest"), EFsmIncorrectErrorPassed));
       
  3027 			if(aDevSoundEvent == EEventInitialize)
       
  3028 				{
       
  3029 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3030 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3031 				if (err != KErrNone)
       
  3032 					{
       
  3033 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3034 					StopTest(err);
       
  3035 					break;
       
  3036 					}
       
  3037 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3038 				iDevSoundState = EStateInitializing;
       
  3039 				}
       
  3040 			else
       
  3041 				{
       
  3042 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3043 				StopTest(aError, EFail);
       
  3044 				}
       
  3045 			break;
       
  3046 			}
       
  3047 		case EStateInitializing:
       
  3048 			{
       
  3049 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3050 				{
       
  3051 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  3052 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetToneRepeats using RepeatCount = %d and RepeatTrailingSilence = %d microsecs"), iRepeatCount, iRepeatTrailingSilence);
       
  3053 				iMMFDevSound->SetToneRepeats(iRepeatCount, iRepeatTrailingSilence);
       
  3054 				iStartTime.HomeTime();
       
  3055 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  3056 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  3057 				if (err != KErrNone)
       
  3058 					{
       
  3059 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  3060 					StopTest(err);
       
  3061 					break;
       
  3062 					}
       
  3063 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  3064 				iDevSoundState = EStatePlaying;
       
  3065 				}
       
  3066 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3067 				{
       
  3068 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3069 				StopTest(aError);
       
  3070 				}
       
  3071 			else
       
  3072 				{
       
  3073 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3074 				StopTest(aError, EFail);
       
  3075 				}
       
  3076 			break;
       
  3077 			}
       
  3078 		default:
       
  3079 			{
       
  3080 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3081 			StopTest(aError, EFail);
       
  3082 			}
       
  3083 		}
       
  3084 	}
       
  3085 	
       
  3086 
       
  3087 void RA3FDevSoundToneSetToneRepetitionsRepeatTrailingSilenceToNegativeTest::ToneFinished(TInt aError)
       
  3088 	{
       
  3089 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  3090 	if (aError == KErrUnderflow)
       
  3091 		{
       
  3092 		iEndTime.HomeTime();
       
  3093 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  3094 		TInt repeatTrailingSilenceToSecs = iRepeatTrailingSilence/KMicroSecsInOneSec;
       
  3095 		TInt totalExpectedReproductionTime = (iRepeatCount * iDuration + iDuration + (repeatTrailingSilenceToSecs*iRepeatCount))*KMicroSecsInOneSec;
       
  3096 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  3097 			{
       
  3098 			INFO_PRINTF1(_L("Play tone repeats succeded."));
       
  3099 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  3100 			StopTest();
       
  3101 			}
       
  3102 		else
       
  3103 			{
       
  3104 			ERR_PRINTF1(_L("Play tone repeats did not work as planned."));
       
  3105 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  3106 			StopTest(KErrNone, EFail);
       
  3107 			}
       
  3108 		}
       
  3109 	else
       
  3110 		{
       
  3111 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  3112 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  3113 		StopTest(aError);
       
  3114 		}
       
  3115 	}
       
  3116 
       
  3117 /*
       
  3118  *========================================================================================================
       
  3119  * MM-A3F-DEVSOUND-CHRTZ-TONE-0023
       
  3120  */
       
  3121 RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest(const TDesC& aTestName)
       
  3122 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  3123 		iFrequencyTone1(0),
       
  3124 		iRepeatTrailingSilence(0), iRepeatCount(0),
       
  3125 		iInitializedToPlayTones(EFalse)
       
  3126 	{
       
  3127 	}
       
  3128 
       
  3129 RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest* RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::NewL(const TDesC& aTestName)
       
  3130 	{
       
  3131 	RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest * self = new(ELeave)RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest(aTestName);
       
  3132 	return self;
       
  3133 	}
       
  3134 	
       
  3135 void RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::DoKickoffTestL()
       
  3136 	{
       
  3137 	if (!GetIntFromConfig(iTestStepName, KRepeatCount, iRepeatCount)) 
       
  3138 		{
       
  3139 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatCount);
       
  3140 		StopTest(KErrNotFound);
       
  3141 		return;
       
  3142 		}
       
  3143 	if (!GetIntFromConfig(iTestStepName, KRepeatTrailingSilence, iRepeatTrailingSilence)) 
       
  3144 		{
       
  3145 		ERR_PRINTF2(KMsgErrorGetParameter, &KRepeatTrailingSilence);
       
  3146 		StopTest(KErrNotFound);
       
  3147 		return;
       
  3148 		}
       
  3149 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  3150 		{
       
  3151 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  3152 		StopTest(KErrNotFound);
       
  3153 		return;
       
  3154 		}
       
  3155 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  3156 		{
       
  3157 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  3158 		StopTest(KErrNotFound);
       
  3159 		return;
       
  3160 		}
       
  3161 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  3162 	}
       
  3163 
       
  3164 void RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3165 	{
       
  3166 	switch (iDevSoundState)
       
  3167 		{
       
  3168 		case EStateCreated:
       
  3169 			{
       
  3170 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest"), EFsmIncorrectErrorPassed));
       
  3171 			if(aDevSoundEvent == EEventInitialize)
       
  3172 				{
       
  3173 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3174 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3175 				if (err != KErrNone)
       
  3176 					{
       
  3177 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3178 					StopTest(err);
       
  3179 					break;
       
  3180 					}
       
  3181 				StartTimer(KMicrosecsInTenSec);
       
  3182 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3183 				iDevSoundState = EStateInitializing;
       
  3184 				}
       
  3185 			else
       
  3186 				{
       
  3187 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3188 				StopTest(aError, EFail);
       
  3189 				}
       
  3190 			break;
       
  3191 			}
       
  3192 		case EStateInitializing:
       
  3193 			{
       
  3194 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3195 				{
       
  3196 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  3197 				INFO_PRINTF3(_L("Calling CMMFDevSound::SetToneRepeats using RepeatCount = %d and RepeatTrailingSilence = %d microsecs"), iRepeatCount, iRepeatTrailingSilence);
       
  3198 				iMMFDevSound->SetToneRepeats(iRepeatCount, iRepeatTrailingSilence);
       
  3199 				iStartTime.HomeTime();
       
  3200 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  3201 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  3202 				if (err != KErrNone)
       
  3203 					{
       
  3204 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  3205 					StopTest(err);
       
  3206 					break;
       
  3207 					}
       
  3208 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  3209 				iDevSoundState = EStatePlaying;
       
  3210 				}
       
  3211 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3212 				{
       
  3213 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3214 				StopTest(aError);
       
  3215 				}
       
  3216 			else
       
  3217 				{
       
  3218 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3219 				StopTest(aError, EFail);
       
  3220 				}
       
  3221 			break;
       
  3222 			}
       
  3223 		default:
       
  3224 			{
       
  3225 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3226 			StopTest(aError, EFail);
       
  3227 			}
       
  3228 		}
       
  3229 	}
       
  3230 	
       
  3231 
       
  3232 void RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::DoTimerCallback()
       
  3233 	{
       
  3234 	iTimer->Cancel();
       
  3235 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  3236 	iEndTime.HomeTime();
       
  3237 	iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  3238 	INFO_PRINTF1(_L("Setting repeatCount value to KMdaRepeatForeverTest succeded."));
       
  3239 	INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  3240 	iMMFDevSound->Stop();
       
  3241 	StopTest();
       
  3242 	}
       
  3243 
       
  3244 void RA3FDevSoundToneSetToneRepetitionsRepeatCountToKMdaRepeatForeverTest::ToneFinished(TInt aError)
       
  3245 	{
       
  3246 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  3247 	if (aError == KErrUnderflow)
       
  3248 		{
       
  3249 		INFO_PRINTF1(_L("ToneFinished was called before the timer event."));
       
  3250 		StopTest(aError);
       
  3251 		}
       
  3252 	else
       
  3253 		{
       
  3254 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  3255 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  3256 		StopTest(aError, EFail);
       
  3257 		}
       
  3258 	}
       
  3259 
       
  3260 /*
       
  3261  *========================================================================================================
       
  3262  * MM-A3F-DEVSOUND-CHRTZ-TONE-0024
       
  3263  */
       
  3264 RA3FDevSoundToneCapsTest::RA3FDevSoundToneCapsTest(const TDesC& aTestName)
       
  3265 	:	RA3FDevSoundTestBase(aTestName), iExCapRate(0), iExCapChannels(0)
       
  3266 	{
       
  3267 	}
       
  3268 
       
  3269 RA3FDevSoundToneCapsTest* RA3FDevSoundToneCapsTest::NewL(const TDesC& aTestName)
       
  3270 	{
       
  3271 	RA3FDevSoundToneCapsTest * self = new(ELeave)RA3FDevSoundToneCapsTest(aTestName);
       
  3272 	return self;
       
  3273 	}
       
  3274 
       
  3275 void RA3FDevSoundToneCapsTest::DoKickoffTestL()
       
  3276 	{
       
  3277 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  3278 		{
       
  3279 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  3280 		StopTest(KErrNotFound);
       
  3281 		return;
       
  3282 		}
       
  3283 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  3284 		{
       
  3285 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  3286 		StopTest(KErrNotFound);
       
  3287 		return;
       
  3288 		}
       
  3289 	}
       
  3290 
       
  3291 void RA3FDevSoundToneCapsTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3292 	{
       
  3293 	switch(iDevSoundState)
       
  3294 		{
       
  3295 		case EStateCreated:
       
  3296 			{
       
  3297 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneCapsTest"), EFsmIncorrectErrorPassed));
       
  3298 			if (aDevSoundEvent == EEventInitialize)
       
  3299 				{
       
  3300 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3301 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3302 				if (err != KErrNone)
       
  3303 					{
       
  3304 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3305 					StopTest(err);
       
  3306 					break;
       
  3307 					}
       
  3308 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3309 				iDevSoundState = EStateInitializing;
       
  3310 				}
       
  3311 			else
       
  3312 				{
       
  3313 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3314 				StopTest(aError,  EFail);
       
  3315 				}
       
  3316 			break;
       
  3317 			}
       
  3318 		case EStateInitializing:
       
  3319 			{
       
  3320 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3321 				{
       
  3322 				TMMFCapabilities capabilities;
       
  3323 				INFO_PRINTF1(_L("Calling CMMFDevSound::Capabilities"));
       
  3324 				capabilities = iMMFDevSound->Capabilities();
       
  3325 				PrintSupportedCapabilities(capabilities.iRate, capabilities.iChannels);
       
  3326 				if(capabilities.iRate == iExCapRate)
       
  3327 					{
       
  3328 					INFO_PRINTF2(_L("The total of possible sample rate values is 0x%08x"), capabilities.iRate);
       
  3329 					}
       
  3330 				else
       
  3331 					{
       
  3332 					ERR_PRINTF2(_L("The total of possible sample rate values failed with 0x%08x"), capabilities.iRate);
       
  3333 					ERR_PRINTF2(_L("Expected value = %d"), iExCapRate);
       
  3334 					StopTest(aError, EFail);
       
  3335 					}
       
  3336 				if(capabilities.iChannels == iExCapChannels)
       
  3337 					{
       
  3338 					INFO_PRINTF2(_L("The total of possible channel values is 0x%08x"),capabilities.iChannels );
       
  3339 					StopTest();
       
  3340 					}
       
  3341 				else
       
  3342 					{
       
  3343 					ERR_PRINTF2(_L("The total of possible channel values failed with 0x%08x"), capabilities.iChannels );
       
  3344 					ERR_PRINTF2(_L("Expected value = %d"), iExCapChannels);
       
  3345 					StopTest(aError, EFail);
       
  3346 					}
       
  3347 				}
       
  3348 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3349 				{
       
  3350 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3351 				StopTest(aError);	
       
  3352 				}
       
  3353 			else
       
  3354 				{
       
  3355 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3356 				StopTest(aError, EFail);
       
  3357 				}
       
  3358 			break;
       
  3359 			}
       
  3360 		default:
       
  3361 			{
       
  3362 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3363 			StopTest(aError, EFail);
       
  3364 			}
       
  3365 		}
       
  3366 	}
       
  3367 
       
  3368 /*
       
  3369  *========================================================================================================
       
  3370  * MM-A3F-DEVSOUND-CHRTZ-TONE-0025
       
  3371  */
       
  3372 RA3FDevSoundToneConfigDefaultTest::RA3FDevSoundToneConfigDefaultTest(const TDesC& aTestName)
       
  3373 	:	RA3FDevSoundTestBase(aTestName), iExCapRate(0),
       
  3374 		iExCapChannels(0)
       
  3375 	{
       
  3376 	}
       
  3377 
       
  3378 RA3FDevSoundToneConfigDefaultTest* RA3FDevSoundToneConfigDefaultTest::NewL(const TDesC& aTestName)
       
  3379 	{
       
  3380 	RA3FDevSoundToneConfigDefaultTest * self = new(ELeave)RA3FDevSoundToneConfigDefaultTest(aTestName);
       
  3381 	return self;
       
  3382 	}
       
  3383 
       
  3384 void RA3FDevSoundToneConfigDefaultTest::DoKickoffTestL()
       
  3385 	{
       
  3386 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  3387 			{
       
  3388 			ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
       
  3389 			StopTest(KErrNotFound);
       
  3390 			return;
       
  3391 			}
       
  3392 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  3393 		{
       
  3394 		ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
       
  3395 		StopTest(KErrNotFound);
       
  3396 		return;
       
  3397 		}
       
  3398 	}
       
  3399 
       
  3400 void RA3FDevSoundToneConfigDefaultTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3401 	{
       
  3402 		switch(iDevSoundState)
       
  3403 		{
       
  3404 		case EStateCreated:
       
  3405 			{
       
  3406 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneConfigDefaultTest"), EFsmIncorrectErrorPassed));
       
  3407 			if (aDevSoundEvent == EEventInitialize)
       
  3408 				{
       
  3409 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3410 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3411 				if (err != KErrNone)
       
  3412 					{
       
  3413 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3414 					StopTest(err);
       
  3415 					}
       
  3416 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3417 				iDevSoundState=EStateInitializing;
       
  3418 				}
       
  3419 			else
       
  3420 				{
       
  3421 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3422 				StopTest(aError, EFail);
       
  3423 				}
       
  3424 			break;
       
  3425 			}
       
  3426 		case EStateInitializing:
       
  3427 			{		
       
  3428 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3429 				{
       
  3430 				TMMFCapabilities capabilitiesGet;
       
  3431 				TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
       
  3432 				TBuf<KMaxChannelsStringLength> stringChannelsGet;
       
  3433 				TBuf<KMaxSampleRateStringLength> stringSampleRateExpected;
       
  3434 				TBuf<KMaxChannelsStringLength> stringChannelsExpected;
       
  3435 				INFO_PRINTF1(_L("Calling CMMFDevSound::Config"));
       
  3436 				capabilitiesGet=iMMFDevSound->Config();
       
  3437 				SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
       
  3438 				ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
       
  3439 				SampleRateFromTIntToTMMFSampleRate (iExCapRate, iExSampleRate);
       
  3440 				SampleRateFromTUintToString (iExSampleRate, stringSampleRateExpected);
       
  3441 				ChannelsFromTUintToString (iExCapChannels, stringChannelsExpected);
       
  3442 				if (stringSampleRateExpected.Compare(stringSampleRateGet) == 0)
       
  3443 					{
       
  3444 					INFO_PRINTF2(_L("Sample rate value match default as expected with %S"), &stringSampleRateGet);
       
  3445 					if (stringChannelsExpected.Compare(stringChannelsGet) == 0)
       
  3446 						{
       
  3447 						INFO_PRINTF2(_L("Channel mode value match default as expected with %S"), &stringChannelsGet);
       
  3448 						StopTest();
       
  3449 						}
       
  3450 					else
       
  3451 						{
       
  3452 						INFO_PRINTF2(_L("Channel mode value failed with %S"), &stringChannelsGet);
       
  3453 						ERR_PRINTF2(_L("Expected channel mode %S"), &stringChannelsExpected);
       
  3454 						StopTest(aError, EFail);
       
  3455 						}
       
  3456 					}
       
  3457 				else
       
  3458 					{
       
  3459 					ERR_PRINTF2(_L("Sample rate value failed with %S"), &stringSampleRateGet);
       
  3460 					ERR_PRINTF2(_L("Expected sample rate %S"), &stringSampleRateExpected);
       
  3461 					StopTest(aError, EFail);
       
  3462 					}
       
  3463 				}
       
  3464 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3465 				{
       
  3466 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3467 				StopTest(aError);
       
  3468 				}
       
  3469 			else
       
  3470 				{
       
  3471 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3472 				StopTest(aError, EFail);
       
  3473 				}
       
  3474 			break;
       
  3475 			}
       
  3476 		default:
       
  3477 			{
       
  3478 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3479 			StopTest(aError, EFail);
       
  3480 			}
       
  3481 		}
       
  3482 	}
       
  3483 
       
  3484 /*
       
  3485  *========================================================================================================
       
  3486  * MM-A3F-DEVSOUND-CHRTZ-TONE-0026
       
  3487  */
       
  3488 RA3FDevSoundToneMaxVolumeTest::RA3FDevSoundToneMaxVolumeTest(const TDesC& aTestName)
       
  3489 	:	RA3FDevSoundTestBase(aTestName), iExVolume(0)
       
  3490 	{
       
  3491 	}
       
  3492 
       
  3493 RA3FDevSoundToneMaxVolumeTest* RA3FDevSoundToneMaxVolumeTest::NewL(const TDesC& aTestName)
       
  3494 	{
       
  3495 	RA3FDevSoundToneMaxVolumeTest * self = new(ELeave)RA3FDevSoundToneMaxVolumeTest(aTestName);
       
  3496 	return self;
       
  3497 	}
       
  3498 
       
  3499 void RA3FDevSoundToneMaxVolumeTest::DoKickoffTestL()
       
  3500 	{
       
  3501 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  3502 		{
       
  3503 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  3504 		StopTest(KErrNotFound);
       
  3505 		return;
       
  3506 		}
       
  3507 	}
       
  3508 
       
  3509 void RA3FDevSoundToneMaxVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  3510 	{
       
  3511 	switch(iDevSoundState)
       
  3512 		{
       
  3513 		case EStateCreated:
       
  3514 			{
       
  3515 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneMaxVolumeTest"), EFsmIncorrectErrorPassed));
       
  3516 			if (aDevSoundEvent == EEventInitialize)
       
  3517 				{
       
  3518 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3519 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3520 				if (err != KErrNone)
       
  3521 					{
       
  3522 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3523 					StopTest(err);
       
  3524 					break;
       
  3525 					}
       
  3526 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3527 				iDevSoundState = EStateInitializing;
       
  3528 				}
       
  3529 			else
       
  3530 				{
       
  3531 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3532 				StopTest(aError, EFail);
       
  3533 				}
       
  3534 			break;
       
  3535 			}
       
  3536 		case EStateInitializing:
       
  3537 			{		
       
  3538 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3539 				{
       
  3540 				INFO_PRINTF1(_L("Calling CMMFDevSound::MaxVolume"));
       
  3541 				TInt maxVolumeGet = iMMFDevSound->MaxVolume();
       
  3542 				if (maxVolumeGet == iExVolume)
       
  3543 					{
       
  3544 					INFO_PRINTF2(_L("The max device supported volume is %d."), maxVolumeGet);
       
  3545 					StopTest();
       
  3546 					}
       
  3547 				else
       
  3548 					{
       
  3549 					INFO_PRINTF2(_L("The max device supported volume failed with %d."), maxVolumeGet);
       
  3550 					ERR_PRINTF2(_L("Expected value = %d."), iExVolume);
       
  3551 					StopTest(aError, EFail);
       
  3552 					}
       
  3553 				}
       
  3554 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3555 				{
       
  3556 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3557 				StopTest(aError);
       
  3558 				}
       
  3559 			else
       
  3560 				{
       
  3561 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3562 				StopTest(aError, EFail);
       
  3563 				}
       
  3564 			break;
       
  3565 			}
       
  3566 		default:
       
  3567 			{
       
  3568 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3569 			StopTest(aError, EFail);
       
  3570 			}
       
  3571 		}
       
  3572 	}
       
  3573 
       
  3574 /*
       
  3575  *========================================================================================================
       
  3576  * MM-A3F-DEVSOUND-CHRTZ-TONE-0027
       
  3577  */
       
  3578 RA3FDevSoundToneVolumeTest::RA3FDevSoundToneVolumeTest(const TDesC& aTestName)
       
  3579 	:	RA3FDevSoundTestBase(aTestName), iExVolume(0)
       
  3580 	{
       
  3581 	}
       
  3582 
       
  3583 RA3FDevSoundToneVolumeTest* RA3FDevSoundToneVolumeTest::NewL(const TDesC& aTestName)
       
  3584 	{
       
  3585 	RA3FDevSoundToneVolumeTest * self = new(ELeave)RA3FDevSoundToneVolumeTest(aTestName);
       
  3586 	return self;
       
  3587 	}
       
  3588 
       
  3589 void RA3FDevSoundToneVolumeTest::DoKickoffTestL()
       
  3590 	{
       
  3591 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  3592 		{
       
  3593 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  3594 		StopTest(KErrNotFound);
       
  3595 		return;
       
  3596 		}
       
  3597 	}
       
  3598 
       
  3599 void RA3FDevSoundToneVolumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3600 	{
       
  3601 	switch (iDevSoundState)
       
  3602 		{
       
  3603 		case EStateCreated:
       
  3604 			{
       
  3605 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneVolumeTest"), EFsmIncorrectErrorPassed));
       
  3606 			if (aDevSoundEvent == EEventInitialize)
       
  3607 				{
       
  3608 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3609 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3610 				if (err != KErrNone)
       
  3611 					{
       
  3612 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3613 					StopTest(err);
       
  3614 					break;
       
  3615 					}
       
  3616 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3617 				iDevSoundState = EStateInitializing;
       
  3618 				}
       
  3619 			else
       
  3620 				{
       
  3621 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3622 				StopTest(aError, EFail);
       
  3623 				}
       
  3624 			break;
       
  3625 			}
       
  3626 		case EStateInitializing:
       
  3627 			{
       
  3628 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3629 				{
       
  3630 				INFO_PRINTF1(_L("Calling CMMFDevSound::Volume"));
       
  3631 				TInt volumeGet = iMMFDevSound->Volume();
       
  3632 				if(volumeGet == iExVolume)
       
  3633 					{
       
  3634 					INFO_PRINTF2(_L("Default device volume succeeded with = %d"), volumeGet);
       
  3635 					StopTest();
       
  3636 					}
       
  3637 				else
       
  3638 					{
       
  3639 					ERR_PRINTF2(_L("Default device volume failed with = %d"), volumeGet);
       
  3640 					ERR_PRINTF2(_L("Expected value % d"), iExVolume);
       
  3641 					StopTest(aError , EFail);
       
  3642 					}
       
  3643 				}
       
  3644 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3645 				{
       
  3646 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3647 				StopTest(aError);	
       
  3648 				}
       
  3649 			else
       
  3650 				{
       
  3651 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3652 				StopTest(aError, EFail);
       
  3653 				}
       
  3654 			break;
       
  3655 			}
       
  3656 		default:
       
  3657 			{
       
  3658 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3659 			StopTest(aError, EFail);
       
  3660 			}
       
  3661 		}
       
  3662 	}
       
  3663 
       
  3664 
       
  3665 /*
       
  3666  *========================================================================================================
       
  3667  * MM-A3F-DEVSOUND-CHRTZ-TONE-0028
       
  3668  */
       
  3669 RA3FDevSoundToneQueryCapsWhilePlayingTest::RA3FDevSoundToneQueryCapsWhilePlayingTest(const TDesC& aTestName)
       
  3670 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  3671 		iFrequencyTone1(0), iExCapRate(0), iExCapChannels(0)
       
  3672 	{
       
  3673 	}
       
  3674 
       
  3675 RA3FDevSoundToneQueryCapsWhilePlayingTest* RA3FDevSoundToneQueryCapsWhilePlayingTest::NewL(const TDesC& aTestName)
       
  3676 	{
       
  3677 	RA3FDevSoundToneQueryCapsWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneQueryCapsWhilePlayingTest(aTestName);
       
  3678 	return self;
       
  3679 	}
       
  3680 
       
  3681 void RA3FDevSoundToneQueryCapsWhilePlayingTest::DoKickoffTestL()
       
  3682 	{
       
  3683 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  3684 		{
       
  3685 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  3686 		StopTest(KErrNotFound);
       
  3687 		return;
       
  3688 		}
       
  3689 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  3690 		{
       
  3691 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  3692 		StopTest(KErrNotFound);
       
  3693 		return;
       
  3694 		}
       
  3695 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  3696 		{
       
  3697 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  3698 		StopTest(KErrNotFound);
       
  3699 		return;
       
  3700 		}
       
  3701 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  3702 		{
       
  3703 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  3704 		StopTest(KErrNotFound);
       
  3705 		return;
       
  3706 		}
       
  3707 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  3708 	}
       
  3709 
       
  3710 void RA3FDevSoundToneQueryCapsWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3711 	{
       
  3712 	switch (iDevSoundState)
       
  3713 		{
       
  3714 		case EStateCreated:
       
  3715 			{
       
  3716 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneQueryCapsWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  3717 			if (aDevSoundEvent == EEventInitialize)
       
  3718 				{
       
  3719 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3720 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3721 				if (err != KErrNone)
       
  3722 					{
       
  3723 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3724 					StopTest(err);
       
  3725 					break;
       
  3726 					}
       
  3727 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3728 				iDevSoundState = EStateInitializing;
       
  3729 				}
       
  3730 			else
       
  3731 				{
       
  3732 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3733 				StopTest(aError, EFail);
       
  3734 				}
       
  3735 			break;
       
  3736 			}
       
  3737 		case EStateInitializing:
       
  3738 			{
       
  3739 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3740 				{
       
  3741 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  3742 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  3743 				if (err != KErrNone)
       
  3744 					{
       
  3745 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  3746 					StopTest(err);
       
  3747 					break;
       
  3748 					}
       
  3749 				StartTimer(KMicroSecsTwoSec);
       
  3750 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  3751 				iDevSoundState = EStatePlaying;
       
  3752 				}
       
  3753 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3754 				{
       
  3755 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3756 				StopTest(aError);
       
  3757 				}
       
  3758 			else
       
  3759 				{
       
  3760 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3761 				StopTest(aError, EFail);
       
  3762 				}
       
  3763 			break;
       
  3764 			}
       
  3765 		default:
       
  3766 			{
       
  3767 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3768 			StopTest(aError, EFail);
       
  3769 			}
       
  3770 		}
       
  3771 	}
       
  3772 
       
  3773 void RA3FDevSoundToneQueryCapsWhilePlayingTest::DoTimerCallback()
       
  3774 	{
       
  3775 	iTimer->Cancel();
       
  3776 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  3777 	TMMFCapabilities capabilities;
       
  3778 	INFO_PRINTF1(_L("Calling CMMFDevSound::Capabilities"));
       
  3779 	capabilities = iMMFDevSound->Capabilities();
       
  3780 	PrintSupportedCapabilities(capabilities.iRate, capabilities.iChannels);
       
  3781 	if(capabilities.iRate == iExCapRate)
       
  3782 		{
       
  3783 		INFO_PRINTF2(_L("The total of possible sample rate values is 0x%08x"), capabilities.iRate);
       
  3784 		}
       
  3785 	else
       
  3786 		{
       
  3787 		ERR_PRINTF2(_L("The total of possible sample rate values failed with 0x%08x"), capabilities.iRate);
       
  3788 		ERR_PRINTF2(_L("Expected value = %d"), iExCapRate);
       
  3789 		StopTest(KErrNone, EFail);
       
  3790 		}
       
  3791 	if(capabilities.iChannels == iExCapChannels)
       
  3792 		{
       
  3793 		INFO_PRINTF2(_L("The total of possible channel values is 0x%08x"),capabilities.iChannels );
       
  3794 		}
       
  3795 	else
       
  3796 		{
       
  3797 		ERR_PRINTF2(_L("The total of possible channel values failed with 0x%08x"), capabilities.iChannels );
       
  3798 		ERR_PRINTF2(_L("Expected value = %d"), iExCapChannels);
       
  3799 		StopTest(KErrNone, EFail);
       
  3800 		}
       
  3801 	}
       
  3802 
       
  3803 /*
       
  3804  *========================================================================================================
       
  3805  * MM-A3F-DEVSOUND-CHRTZ-TONE-0029
       
  3806  */
       
  3807 RA3FDevSoundToneConfigWhilePlayingTest::RA3FDevSoundToneConfigWhilePlayingTest(const TDesC& aTestName)
       
  3808 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  3809 		iFrequencyTone1(0)
       
  3810 	{
       
  3811 	}
       
  3812 RA3FDevSoundToneConfigWhilePlayingTest* RA3FDevSoundToneConfigWhilePlayingTest::NewL(const TDesC& aTestName)
       
  3813 	{
       
  3814 	RA3FDevSoundToneConfigWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneConfigWhilePlayingTest(aTestName);
       
  3815 	return self;
       
  3816 	}
       
  3817 
       
  3818 void RA3FDevSoundToneConfigWhilePlayingTest::DoKickoffTestL()
       
  3819 	{
       
  3820 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  3821 		{
       
  3822 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  3823 		StopTest(KErrNotFound);
       
  3824 		return;
       
  3825 		}
       
  3826 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  3827 		{
       
  3828 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  3829 		StopTest(KErrNotFound);
       
  3830 		return;
       
  3831 		}
       
  3832 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  3833 			{
       
  3834 			ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
       
  3835 			StopTest(KErrNotFound);
       
  3836 			return;
       
  3837 			}
       
  3838 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  3839 		{
       
  3840 		ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
       
  3841 		StopTest(KErrNotFound);
       
  3842 		return;
       
  3843 		}
       
  3844 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  3845 	}
       
  3846 
       
  3847 void RA3FDevSoundToneConfigWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  3848 	{
       
  3849 	switch(iDevSoundState)
       
  3850 		{
       
  3851 		case EStateCreated:
       
  3852 			{
       
  3853 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneConfigWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  3854 			if (aDevSoundEvent == EEventInitialize)
       
  3855 				{
       
  3856 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  3857 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  3858 				if (err != KErrNone)
       
  3859 					{
       
  3860 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  3861 					StopTest(err);
       
  3862 					break;
       
  3863 					}
       
  3864 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  3865 				iDevSoundState = EStateInitializing;
       
  3866 				}
       
  3867 			else
       
  3868 				{
       
  3869 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  3870 				StopTest(aError, EFail);
       
  3871 				}
       
  3872 			break;
       
  3873 			}
       
  3874 		case EStateInitializing:
       
  3875 			{
       
  3876 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  3877 				{
       
  3878 				iStartTime.HomeTime();
       
  3879 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  3880 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  3881 				if (err != KErrNone)
       
  3882 					{
       
  3883 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"),  err);
       
  3884 					StopTest(err);
       
  3885 					break;
       
  3886 					}
       
  3887 				StartTimer(KMicroSecsTwoSec);
       
  3888 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  3889 				iDevSoundState = EStatePlaying;
       
  3890 				}
       
  3891 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  3892 				{
       
  3893 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  3894 				StopTest(aError);
       
  3895 				}
       
  3896 			else
       
  3897 				{
       
  3898 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  3899 				StopTest(aError, EFail);
       
  3900 				}
       
  3901 			break;
       
  3902 			}
       
  3903 		default:
       
  3904 			{
       
  3905 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  3906 			StopTest(aError, EFail);
       
  3907 			}
       
  3908 		}
       
  3909 	}
       
  3910 
       
  3911 void RA3FDevSoundToneConfigWhilePlayingTest::DoTimerCallback()
       
  3912 	{
       
  3913 	iTimer->Cancel();
       
  3914 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  3915 	TMMFCapabilities capabilitiesGet;
       
  3916 	TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
       
  3917 	TBuf<KMaxChannelsStringLength> stringChannelsGet;
       
  3918 	TBuf<KMaxSampleRateStringLength> stringSampleRateExpected;
       
  3919 	TBuf<KMaxChannelsStringLength> stringChannelsExpected;
       
  3920 	INFO_PRINTF1(_L("Calling CMMFDevSound::Config while playing"));
       
  3921 	capabilitiesGet=iMMFDevSound->Config();
       
  3922 	SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
       
  3923 	ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
       
  3924 	SampleRateFromTIntToTMMFSampleRate (iExCapRate, iExSampleRate);
       
  3925 	SampleRateFromTUintToString (iExSampleRate, stringSampleRateExpected);
       
  3926 	ChannelsFromTUintToString (iExCapChannels, stringChannelsExpected);
       
  3927 	if (stringSampleRateExpected.Compare(stringSampleRateGet) == 0)
       
  3928 		{
       
  3929 		INFO_PRINTF2(_L("Sample rate value match default as expected with %S"), &stringSampleRateGet);
       
  3930 		if (stringChannelsExpected.Compare(stringChannelsGet) == 0)
       
  3931 			{
       
  3932 			INFO_PRINTF2(_L("Channel mode value match default as expected with %S"), &stringChannelsGet);
       
  3933 			StopTest();
       
  3934 			}
       
  3935 		else
       
  3936 			{
       
  3937 			INFO_PRINTF2(_L("Channel mode value failed with %S"), &stringChannelsGet);
       
  3938 			ERR_PRINTF2(_L("Expected channel mode %S"), &stringChannelsExpected);
       
  3939 			StopTest(KErrNone, EFail);
       
  3940 			}
       
  3941 		}
       
  3942 	else
       
  3943 		{
       
  3944 		ERR_PRINTF2(_L("Sample rate value failed with %S"), &stringSampleRateGet);
       
  3945 		ERR_PRINTF2(_L("Expected sample rate %S"), &stringSampleRateExpected);
       
  3946 		StopTest(KErrNone, EFail);
       
  3947 		}
       
  3948 	}
       
  3949 
       
  3950 void RA3FDevSoundToneConfigWhilePlayingTest::ToneFinished(TInt aError)
       
  3951 	{
       
  3952 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  3953 	if (aError == KErrUnderflow)
       
  3954 		{
       
  3955 		iEndTime.HomeTime();
       
  3956 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  3957 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  3958 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  3959 			{
       
  3960 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  3961 			StopTest();
       
  3962 			}
       
  3963 		else
       
  3964 			{
       
  3965 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  3966 			StopTest(KErrNone, EFail);
       
  3967 			}
       
  3968 		}
       
  3969 	else
       
  3970 		{
       
  3971 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  3972 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  3973 		StopTest(aError, EFail);
       
  3974 		}
       
  3975 	}
       
  3976 
       
  3977 /*
       
  3978  *========================================================================================================
       
  3979  * MM-A3F-DEVSOUND-CHRTZ-TONE-0030
       
  3980  */
       
  3981 RA3FDevSoundToneMaxVolumeWhilePlayingTest::RA3FDevSoundToneMaxVolumeWhilePlayingTest(const TDesC& aTestName)
       
  3982 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  3983 		iFrequencyTone1(0), iExVolume(0)
       
  3984 	{
       
  3985 	}
       
  3986 
       
  3987 RA3FDevSoundToneMaxVolumeWhilePlayingTest* RA3FDevSoundToneMaxVolumeWhilePlayingTest::NewL(const TDesC& aTestName)
       
  3988 	{
       
  3989 	RA3FDevSoundToneMaxVolumeWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneMaxVolumeWhilePlayingTest(aTestName);
       
  3990 	return self;
       
  3991 	}
       
  3992 
       
  3993 void RA3FDevSoundToneMaxVolumeWhilePlayingTest::DoKickoffTestL()
       
  3994 	{
       
  3995 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  3996 		{
       
  3997 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  3998 		StopTest(KErrNotFound);
       
  3999 		return;
       
  4000 		}
       
  4001 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4002 		{
       
  4003 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4004 		StopTest(KErrNotFound);
       
  4005 		return;
       
  4006 		}
       
  4007 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4008 		{
       
  4009 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4010 		StopTest(KErrNotFound);
       
  4011 		return;
       
  4012 		}
       
  4013 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4014 	}
       
  4015 
       
  4016 void RA3FDevSoundToneMaxVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4017 	{
       
  4018 	switch (iDevSoundState)
       
  4019 		{
       
  4020 		case EStateCreated:
       
  4021 			{
       
  4022 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneMaxVolumeWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  4023 			if (aDevSoundEvent == EEventInitialize)
       
  4024 				{
       
  4025 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4026 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4027 				if (err != KErrNone)
       
  4028 					{
       
  4029 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4030 					StopTest(err);
       
  4031 					break;
       
  4032 					}
       
  4033 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4034 				iDevSoundState = EStateInitializing;
       
  4035 				}
       
  4036 			else
       
  4037 				{
       
  4038 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4039 				StopTest(aError, EFail);
       
  4040 				}
       
  4041 			break;
       
  4042 			}
       
  4043 		case EStateInitializing:
       
  4044 			{
       
  4045 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4046 				{
       
  4047 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  4048 				iStartTime.HomeTime();
       
  4049 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4050 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4051 				if (err != KErrNone)
       
  4052 					{
       
  4053 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"),  err);
       
  4054 					StopTest(err);
       
  4055 					break;
       
  4056 					}
       
  4057 				StartTimer(KMicroSecsTwoSec);
       
  4058 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4059 				iDevSoundState = EStatePlaying;
       
  4060 				}
       
  4061 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4062 				{
       
  4063 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4064 				StopTest(aError);
       
  4065 				}
       
  4066 			else
       
  4067 				{
       
  4068 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4069 				StopTest(aError, EFail);
       
  4070 				}
       
  4071 			break;
       
  4072 			}
       
  4073 		default:
       
  4074 			{
       
  4075 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4076 			StopTest(aError, EFail);
       
  4077 			}
       
  4078 		}
       
  4079 	}
       
  4080 
       
  4081 void RA3FDevSoundToneMaxVolumeWhilePlayingTest::DoTimerCallback()
       
  4082 	{
       
  4083 	iTimer->Cancel();
       
  4084 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4085 	INFO_PRINTF1(_L("Calling CMMFDevSound::MaxVolume"));
       
  4086 	TInt maxVolumeGet = iMMFDevSound->MaxVolume();
       
  4087 	if (maxVolumeGet == iExVolume)
       
  4088 		{
       
  4089 		INFO_PRINTF2(_L("The max device supported volume is %d."), maxVolumeGet);
       
  4090 		}
       
  4091 	else
       
  4092 		{
       
  4093 		INFO_PRINTF2(_L("The max device supported volume failed with %d."), maxVolumeGet);
       
  4094 		ERR_PRINTF2(_L("Expected value = %d."), iExVolume);
       
  4095 		StopTest(KErrNone, EFail);
       
  4096 		}
       
  4097 	}
       
  4098 
       
  4099 void RA3FDevSoundToneMaxVolumeWhilePlayingTest::ToneFinished(TInt aError)
       
  4100 	{
       
  4101 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4102 	if (aError == KErrUnderflow)
       
  4103 		{
       
  4104 		iEndTime.HomeTime();
       
  4105 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  4106 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  4107 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  4108 			{
       
  4109 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  4110 			StopTest();
       
  4111 			}
       
  4112 		else
       
  4113 			{
       
  4114 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  4115 			StopTest(KErrNone, EFail);
       
  4116 			}
       
  4117 		}
       
  4118 	else
       
  4119 		{
       
  4120 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  4121 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  4122 		StopTest(aError, EFail);
       
  4123 		}
       
  4124 	}
       
  4125 
       
  4126 /*
       
  4127  *========================================================================================================
       
  4128  * MM-A3F-DEVSOUND-CHRTZ-TONE-0031
       
  4129  */
       
  4130 RA3FDevSoundToneVolumeWhilePlayingTest::RA3FDevSoundToneVolumeWhilePlayingTest(const TDesC& aTestName)
       
  4131 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  4132 		iFrequencyTone1(0), iExVolume(0)
       
  4133 	{
       
  4134 	}
       
  4135 
       
  4136 RA3FDevSoundToneVolumeWhilePlayingTest* RA3FDevSoundToneVolumeWhilePlayingTest::NewL(const TDesC& aTestName)
       
  4137 	{
       
  4138 	RA3FDevSoundToneVolumeWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneVolumeWhilePlayingTest(aTestName);
       
  4139 	return self;
       
  4140 	}
       
  4141 
       
  4142 void RA3FDevSoundToneVolumeWhilePlayingTest::DoKickoffTestL()
       
  4143 	{
       
  4144 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  4145 		{
       
  4146 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  4147 		StopTest(KErrNotFound);
       
  4148 		return;
       
  4149 		}
       
  4150 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4151 		{
       
  4152 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4153 		StopTest(KErrNotFound);
       
  4154 		return;
       
  4155 		}
       
  4156 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4157 		{
       
  4158 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4159 		StopTest(KErrNotFound);
       
  4160 		return;
       
  4161 		}
       
  4162 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4163 	}
       
  4164 
       
  4165 void RA3FDevSoundToneVolumeWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4166 	{
       
  4167 	switch (iDevSoundState)
       
  4168 		{
       
  4169 		case EStateCreated:
       
  4170 			{
       
  4171 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneVolumeWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  4172 			if (aDevSoundEvent == EEventInitialize)
       
  4173 				{
       
  4174 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4175 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4176 				if (err != KErrNone)
       
  4177 					{
       
  4178 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4179 					StopTest(err);
       
  4180 					break;
       
  4181 					}
       
  4182 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4183 				iDevSoundState = EStateInitializing;
       
  4184 				}
       
  4185 			else
       
  4186 				{
       
  4187 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4188 				StopTest(aError, EFail);
       
  4189 				}
       
  4190 			break;
       
  4191 			}
       
  4192 		case EStateInitializing:
       
  4193 			{
       
  4194 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4195 				{
       
  4196 				iStartTime.HomeTime();
       
  4197 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4198 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4199 				if (err != KErrNone)
       
  4200 					{
       
  4201 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  4202 					StopTest(err);
       
  4203 					break;
       
  4204 					}
       
  4205 				StartTimer(KMicroSecsTwoSec);
       
  4206 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4207 				iDevSoundState = EStatePlaying;
       
  4208 				}
       
  4209 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4210 				{
       
  4211 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4212 				StopTest(aError);
       
  4213 				}
       
  4214 			else
       
  4215 				{
       
  4216 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4217 				StopTest(aError, EFail);
       
  4218 				}
       
  4219 			break;
       
  4220 			}
       
  4221 		default:
       
  4222 			{
       
  4223 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4224 			StopTest(aError, EFail);
       
  4225 			}
       
  4226 		}
       
  4227 	}
       
  4228 
       
  4229 void RA3FDevSoundToneVolumeWhilePlayingTest::DoTimerCallback()
       
  4230 	{
       
  4231 	iTimer->Cancel();
       
  4232 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4233 	INFO_PRINTF1(_L("Calling CMMFDevSound::Volume"));
       
  4234 	TInt maxVolumeGet = iMMFDevSound->Volume();
       
  4235 	if (maxVolumeGet == iExVolume)
       
  4236 		{
       
  4237 		INFO_PRINTF2(_L("The device default supported volume value is %d."), maxVolumeGet);
       
  4238 		}
       
  4239 	else
       
  4240 		{
       
  4241 		INFO_PRINTF2(_L("The device default supported volume value failed with %d."), maxVolumeGet);
       
  4242 		ERR_PRINTF2(_L("Expected value = %d."), iExVolume);
       
  4243 		StopTest(KErrNone, EFail);
       
  4244 		}
       
  4245 	}
       
  4246 
       
  4247 void RA3FDevSoundToneVolumeWhilePlayingTest::ToneFinished(TInt aError)
       
  4248 	{
       
  4249 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4250 	if (aError == KErrUnderflow)
       
  4251 		{
       
  4252 		iEndTime.HomeTime();
       
  4253 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  4254 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  4255 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  4256 			{
       
  4257 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  4258 			StopTest();
       
  4259 			}
       
  4260 		else
       
  4261 			{
       
  4262 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  4263 			StopTest(KErrNone, EFail);
       
  4264 			}
       
  4265 		}
       
  4266 	else
       
  4267 		{
       
  4268 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  4269 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  4270 		StopTest(aError, EFail);
       
  4271 		}
       
  4272 	}
       
  4273 
       
  4274 /*
       
  4275  *========================================================================================================
       
  4276  * MM-A3F-DEVSOUND-CHRTZ-TONE-0032
       
  4277  */
       
  4278 RA3FDevSoundToneQueryCapsWhilePausePlayingTest::RA3FDevSoundToneQueryCapsWhilePausePlayingTest(const TDesC& aTestName)
       
  4279 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  4280 		iFrequencyTone1(0), iExCapRate(0), iExCapChannels(0),
       
  4281 		iTimeToEnterPauseElapsed(EFalse)
       
  4282 	{
       
  4283 	}
       
  4284 
       
  4285 RA3FDevSoundToneQueryCapsWhilePausePlayingTest* RA3FDevSoundToneQueryCapsWhilePausePlayingTest::NewL(const TDesC& aTestName)
       
  4286 	{
       
  4287 	RA3FDevSoundToneQueryCapsWhilePausePlayingTest * self = new(ELeave)RA3FDevSoundToneQueryCapsWhilePausePlayingTest(aTestName);
       
  4288 	return self;
       
  4289 	}
       
  4290 
       
  4291 void RA3FDevSoundToneQueryCapsWhilePausePlayingTest::DoKickoffTestL()
       
  4292 	{
       
  4293 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4294 		{
       
  4295 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4296 		StopTest(KErrNotFound);
       
  4297 		return;
       
  4298 		}
       
  4299 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4300 		{
       
  4301 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4302 		StopTest(KErrNotFound);
       
  4303 		return;
       
  4304 		}
       
  4305 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  4306 		{
       
  4307 		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
       
  4308 		StopTest(KErrNotFound);
       
  4309 		return;
       
  4310 		}
       
  4311 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  4312 		{
       
  4313 		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
       
  4314 		StopTest(KErrNotFound);
       
  4315 		return;
       
  4316 		}
       
  4317 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4318 	}
       
  4319 
       
  4320 void RA3FDevSoundToneQueryCapsWhilePausePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4321 	{
       
  4322 	switch (iDevSoundState)
       
  4323 		{
       
  4324 		case EStateCreated:
       
  4325 			{
       
  4326 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneQueryCapsWhilePausePlayingTest"), EFsmIncorrectErrorPassed));
       
  4327 			if (aDevSoundEvent == EEventInitialize)
       
  4328 				{
       
  4329 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4330 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4331 				if (err != KErrNone)
       
  4332 					{
       
  4333 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4334 					StopTest(err);
       
  4335 					break;
       
  4336 					}
       
  4337 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4338 				iDevSoundState = EStateInitializing;
       
  4339 				}
       
  4340 			else
       
  4341 				{
       
  4342 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4343 				StopTest(aError, EFail);
       
  4344 				}
       
  4345 			break;
       
  4346 			}
       
  4347 		case EStateInitializing:
       
  4348 			{
       
  4349 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4350 				{
       
  4351 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  4352 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4353 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4354 				if (err != KErrNone)
       
  4355 					{
       
  4356 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  4357 					StopTest(err);
       
  4358 					break;
       
  4359 					}
       
  4360 				StartTimer(KMicroSecsTwoSec);
       
  4361 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4362 				iDevSoundState = EStatePlaying;
       
  4363 				}
       
  4364 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4365 				{
       
  4366 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4367 				StopTest(aError);
       
  4368 				}
       
  4369 			else
       
  4370 				{
       
  4371 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4372 				StopTest(aError, EFail);
       
  4373 				}
       
  4374 			break;
       
  4375 			}
       
  4376 		case EStatePlaying:
       
  4377 			{
       
  4378 			if(aDevSoundEvent == EEventTimerComplete)
       
  4379 				{
       
  4380 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  4381 				iMMFDevSound->Pause();
       
  4382 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  4383 				iDevSoundState = EStatePause;
       
  4384 				}
       
  4385 			else
       
  4386 				{
       
  4387 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4388 				StopTest(aError, EFail);
       
  4389 				}
       
  4390 			break;
       
  4391 			}
       
  4392 		case EStatePause:
       
  4393 			{
       
  4394 			if(aDevSoundEvent == EEventTimerComplete)
       
  4395 				{
       
  4396 				TMMFCapabilities capabilities;
       
  4397 				INFO_PRINTF1(_L("Calling CMMFDevSound::Capabilities"));
       
  4398 				capabilities = iMMFDevSound->Capabilities();
       
  4399 				PrintSupportedCapabilities(capabilities.iRate, capabilities.iChannels);
       
  4400 				if(capabilities.iRate == iExCapRate)
       
  4401 					{
       
  4402 					INFO_PRINTF2(_L("The total of possible sample rate values is 0x%08x"), capabilities.iRate);
       
  4403 					if(capabilities.iChannels == iExCapChannels)
       
  4404 						{
       
  4405 						INFO_PRINTF2(_L("The total of possible channel values is 0x%08x"),capabilities.iChannels );
       
  4406 						StopTest();
       
  4407 						}
       
  4408 					else
       
  4409 						{
       
  4410 						ERR_PRINTF2(_L("The total of possible channel values failed with 0x%08x"), capabilities.iChannels );
       
  4411 						ERR_PRINTF2(_L("Expected value = %d"), iExCapChannels);
       
  4412 						StopTest(aError, EFail);
       
  4413 						}
       
  4414 					}
       
  4415 				else
       
  4416 					{
       
  4417 					ERR_PRINTF2(_L("The total of possible sample rate values failed with 0x%08x"), capabilities.iRate);
       
  4418 					ERR_PRINTF2(_L("Expected value = %d"), iExCapRate);
       
  4419 					StopTest(aError, EFail);
       
  4420 					}
       
  4421 				}
       
  4422 			else
       
  4423 				{
       
  4424 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4425 				StopTest(aError, EFail);
       
  4426 				}
       
  4427 			break;
       
  4428 			}
       
  4429 		default:
       
  4430 			{
       
  4431 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4432 			StopTest(aError, EFail);
       
  4433 			}
       
  4434 		}
       
  4435 	}
       
  4436 
       
  4437 void RA3FDevSoundToneQueryCapsWhilePausePlayingTest::DoTimerCallback()
       
  4438 	{
       
  4439 	INFO_PRINTF1(_L("TimerEvent called"));
       
  4440 	if(!iTimeToEnterPauseElapsed)
       
  4441 		{
       
  4442 		iTimeToEnterPauseElapsed = ETrue;
       
  4443 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4444 		Fsm(EEventTimerComplete, KErrNone);
       
  4445 		iTimeToEnterPauseElapsed = ETrue;
       
  4446 		}
       
  4447 	else
       
  4448 		{
       
  4449 		iTimer->Cancel();
       
  4450 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4451 		Fsm(EEventTimerComplete, KErrNone);
       
  4452 		}
       
  4453 	}
       
  4454 
       
  4455 void RA3FDevSoundToneQueryCapsWhilePausePlayingTest::ToneFinished(TInt aError)
       
  4456 	{
       
  4457 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4458 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused then stopped"));
       
  4459 	StopTest(aError, EFail);
       
  4460 	}
       
  4461 
       
  4462 
       
  4463 /*
       
  4464  *========================================================================================================
       
  4465  * MM-A3F-DEVSOUND-CHRTZ-TONE-0033
       
  4466  */
       
  4467 RA3FDevSoundToneConfigWhilePausePlayingTest::RA3FDevSoundToneConfigWhilePausePlayingTest(const TDesC& aTestName)
       
  4468 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  4469 		iFrequencyTone1(0), iTimeToEnterPauseElapsed(EFalse),
       
  4470 		iExCapRate(0), iExCapChannels(0)
       
  4471 	{
       
  4472 	}
       
  4473 
       
  4474 RA3FDevSoundToneConfigWhilePausePlayingTest* RA3FDevSoundToneConfigWhilePausePlayingTest::NewL(const TDesC& aTestName)
       
  4475 	{
       
  4476 	RA3FDevSoundToneConfigWhilePausePlayingTest * self = new(ELeave)RA3FDevSoundToneConfigWhilePausePlayingTest(aTestName);
       
  4477 	return self;
       
  4478 	}
       
  4479 
       
  4480 void RA3FDevSoundToneConfigWhilePausePlayingTest::DoKickoffTestL()
       
  4481 	{
       
  4482 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4483 		{
       
  4484 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4485 		StopTest(KErrNotFound);
       
  4486 		return;
       
  4487 		}
       
  4488 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4489 		{
       
  4490 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4491 		StopTest(KErrNotFound);
       
  4492 		return;
       
  4493 		}
       
  4494 	if (!GetIntFromConfig(iTestStepName, KExCapRate, iExCapRate))
       
  4495 			{
       
  4496 			ERR_PRINTF2(KMsgErrorGetParameter, &KExCapRate);
       
  4497 			StopTest(KErrNotFound);
       
  4498 			return;
       
  4499 			}
       
  4500 	if (!GetIntFromConfig(iTestStepName, KExCapChannels, iExCapChannels))
       
  4501 		{
       
  4502 		ERR_PRINTF2(KMsgErrorGetParameter, &KExCapChannels);
       
  4503 		StopTest(KErrNotFound);
       
  4504 		return;
       
  4505 		}
       
  4506 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4507 	}
       
  4508 
       
  4509 void RA3FDevSoundToneConfigWhilePausePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4510 	{
       
  4511 	switch (iDevSoundState)
       
  4512 		{
       
  4513 		case EStateCreated:
       
  4514 			{
       
  4515 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneConfigWhilePausePlayingTest"), EFsmIncorrectErrorPassed));
       
  4516 			if (aDevSoundEvent == EEventInitialize)
       
  4517 				{
       
  4518 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4519 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4520 				if (err != KErrNone)
       
  4521 					{
       
  4522 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4523 					StopTest(err);
       
  4524 					break;
       
  4525 					}
       
  4526 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4527 				iDevSoundState = EStateInitializing;
       
  4528 				}
       
  4529 			else
       
  4530 				{
       
  4531 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4532 				StopTest(aError, EFail);
       
  4533 				}
       
  4534 			break;
       
  4535 			}
       
  4536 		case EStateInitializing:
       
  4537 			{
       
  4538 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4539 				{
       
  4540 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  4541 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4542 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4543 				if (err != KErrNone)
       
  4544 					{
       
  4545 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  4546 					StopTest(err);
       
  4547 					break;
       
  4548 					}
       
  4549 				StartTimer(KMicroSecsTwoSec);
       
  4550 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4551 				iDevSoundState = EStatePlaying;
       
  4552 				}
       
  4553 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4554 				{
       
  4555 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4556 				StopTest(aError);
       
  4557 				}
       
  4558 			else
       
  4559 				{
       
  4560 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4561 				StopTest(aError, EFail);
       
  4562 				}
       
  4563 			break;
       
  4564 			}
       
  4565 		case EStatePlaying:
       
  4566 			{
       
  4567 			if(aDevSoundEvent == EEventTimerComplete)
       
  4568 				{
       
  4569 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  4570 				iMMFDevSound->Pause();
       
  4571 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  4572 				iDevSoundState = EStatePause;
       
  4573 				}
       
  4574 			else
       
  4575 				{
       
  4576 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4577 				StopTest(aError, EFail);
       
  4578 				}
       
  4579 			break;
       
  4580 			}
       
  4581 		case EStatePause:
       
  4582 			{
       
  4583 			if(aDevSoundEvent == EEventTimerComplete)
       
  4584 				{
       
  4585 				TMMFCapabilities capabilitiesGet;
       
  4586 				TBuf<KMaxSampleRateStringLength> stringSampleRateGet;
       
  4587 				TBuf<KMaxChannelsStringLength> stringChannelsGet;
       
  4588 				TBuf<KMaxSampleRateStringLength> stringSampleRateExpected;
       
  4589 				TBuf<KMaxChannelsStringLength> stringChannelsExpected;
       
  4590 				INFO_PRINTF1(_L("Calling CMMFDevSound::Config while playing"));
       
  4591 				capabilitiesGet=iMMFDevSound->Config();
       
  4592 				SampleRateFromTUintToString (capabilitiesGet.iRate, stringSampleRateGet);
       
  4593 				ChannelsFromTUintToString (capabilitiesGet.iChannels, stringChannelsGet);
       
  4594 				SampleRateFromTIntToTMMFSampleRate (iExCapRate, iExSampleRate);
       
  4595 				SampleRateFromTUintToString (iExSampleRate, stringSampleRateExpected);
       
  4596 				ChannelsFromTUintToString (iExCapChannels, stringChannelsExpected);
       
  4597 				if (stringSampleRateExpected.Compare(stringSampleRateGet) == 0)
       
  4598 					{
       
  4599 					INFO_PRINTF2(_L("Sample rate value match default as expected with %S"), &stringSampleRateGet);
       
  4600 					if (stringChannelsExpected.Compare(stringChannelsGet) == 0)
       
  4601 						{
       
  4602 						INFO_PRINTF2(_L("Channel mode value match default as expected with %S"), &stringChannelsGet);
       
  4603 						StopTest();
       
  4604 						}
       
  4605 					else
       
  4606 						{
       
  4607 						INFO_PRINTF2(_L("Channel mode value failed with %S"), &stringChannelsGet);
       
  4608 						ERR_PRINTF2(_L("Expected channel mode %S"), &stringChannelsExpected);
       
  4609 						StopTest(aError, EFail);
       
  4610 						}
       
  4611 					}
       
  4612 				else
       
  4613 					{
       
  4614 					ERR_PRINTF2(_L("Sample rate value failed with %S"), &stringSampleRateGet);
       
  4615 					ERR_PRINTF2(_L("Expected sample rate %S"), &stringSampleRateExpected);
       
  4616 					StopTest(aError, EFail);
       
  4617 					}
       
  4618 				}
       
  4619 			else
       
  4620 				{
       
  4621 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4622 				StopTest(aError, EFail);
       
  4623 				}
       
  4624 			break;
       
  4625 			}
       
  4626 		default:
       
  4627 			{
       
  4628 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4629 			StopTest(aError, EFail);
       
  4630 			}
       
  4631 		}
       
  4632 	}
       
  4633 
       
  4634 void RA3FDevSoundToneConfigWhilePausePlayingTest::DoTimerCallback()
       
  4635 	{
       
  4636 	INFO_PRINTF1(_L("TimerEvent called"));
       
  4637 	if(!iTimeToEnterPauseElapsed)
       
  4638 		{
       
  4639 		iTimeToEnterPauseElapsed = ETrue;
       
  4640 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4641 		Fsm(EEventTimerComplete, KErrNone);
       
  4642 		iTimeToEnterPauseElapsed = ETrue;
       
  4643 		}
       
  4644 	else
       
  4645 		{
       
  4646 		iTimer->Cancel();
       
  4647 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4648 		Fsm(EEventTimerComplete, KErrNone);
       
  4649 		}
       
  4650 	}
       
  4651 
       
  4652 void RA3FDevSoundToneConfigWhilePausePlayingTest::ToneFinished(TInt aError)
       
  4653 	{
       
  4654 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4655 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused then stopped"));
       
  4656 	StopTest(aError, EFail);
       
  4657 	}
       
  4658 
       
  4659 
       
  4660 /*
       
  4661  *========================================================================================================
       
  4662  * MM-A3F-DEVSOUND-CHRTZ-TONE-0034
       
  4663  */
       
  4664 RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::RA3FDevSoundToneMaxVolumeWhilePausePlayingTest(const TDesC& aTestName)
       
  4665 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  4666 		iFrequencyTone1(0), iExVolume(0),
       
  4667 		iTimeToEnterPauseElapsed(EFalse)
       
  4668 	{
       
  4669 	}
       
  4670 
       
  4671 RA3FDevSoundToneMaxVolumeWhilePausePlayingTest* RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::NewL(const TDesC& aTestName)
       
  4672 	{
       
  4673 	RA3FDevSoundToneMaxVolumeWhilePausePlayingTest * self = new(ELeave)RA3FDevSoundToneMaxVolumeWhilePausePlayingTest(aTestName);
       
  4674 	return self;
       
  4675 	}
       
  4676 
       
  4677 void RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::DoKickoffTestL()
       
  4678 	{
       
  4679 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4680 		{
       
  4681 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4682 		StopTest(KErrNotFound);
       
  4683 		return;
       
  4684 		}
       
  4685 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4686 		{
       
  4687 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4688 		StopTest(KErrNotFound);
       
  4689 		return;
       
  4690 		}
       
  4691 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  4692 		{
       
  4693 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  4694 		StopTest(KErrNotFound);
       
  4695 		return;
       
  4696 		}
       
  4697 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4698 	}
       
  4699 
       
  4700 void RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4701 	{
       
  4702 	switch (iDevSoundState)
       
  4703 		{
       
  4704 		case EStateCreated:
       
  4705 			{
       
  4706 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneMaxVolumeWhilePausePlayingTest"), EFsmIncorrectErrorPassed));
       
  4707 			if (aDevSoundEvent == EEventInitialize)
       
  4708 				{
       
  4709 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4710 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4711 				if (err != KErrNone)
       
  4712 					{
       
  4713 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4714 					StopTest(err);
       
  4715 					break;
       
  4716 					}
       
  4717 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4718 				iDevSoundState = EStateInitializing;
       
  4719 				}
       
  4720 			else
       
  4721 				{
       
  4722 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4723 				StopTest(aError, EFail);
       
  4724 				}
       
  4725 			break;
       
  4726 			}
       
  4727 		case EStateInitializing:
       
  4728 			{
       
  4729 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4730 				{
       
  4731 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  4732 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4733 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4734 				if (err != KErrNone)
       
  4735 					{
       
  4736 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  4737 					StopTest(err);
       
  4738 					break;
       
  4739 					}
       
  4740 				StartTimer(KMicroSecsTwoSec);
       
  4741 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4742 				iDevSoundState = EStatePlaying;
       
  4743 				}
       
  4744 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4745 				{
       
  4746 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4747 				StopTest(aError);
       
  4748 				}
       
  4749 			else
       
  4750 				{
       
  4751 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4752 				StopTest(aError, EFail);
       
  4753 				}
       
  4754 			break;
       
  4755 			}
       
  4756 		case EStatePlaying:
       
  4757 			{
       
  4758 			if(aDevSoundEvent == EEventTimerComplete)
       
  4759 				{
       
  4760 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  4761 				iMMFDevSound->Pause();
       
  4762 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  4763 				iDevSoundState = EStatePause;
       
  4764 				}
       
  4765 			else
       
  4766 				{
       
  4767 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4768 				StopTest(aError, EFail);
       
  4769 				}
       
  4770 			break;
       
  4771 			}
       
  4772 		case EStatePause:
       
  4773 			{
       
  4774 			if(aDevSoundEvent == EEventTimerComplete)
       
  4775 				{
       
  4776 				INFO_PRINTF1(_L("Calling CMMFDevSound::MaxVolume"));
       
  4777 				TInt maxVolumeGet = iMMFDevSound->MaxVolume();
       
  4778 				if (maxVolumeGet == iExVolume)
       
  4779 					{
       
  4780 					INFO_PRINTF2(_L("The max device supported volume is %d."), maxVolumeGet);
       
  4781 					StopTest();
       
  4782 					}
       
  4783 				else
       
  4784 					{
       
  4785 					INFO_PRINTF2(_L("The max device supported volume failed with %d."), maxVolumeGet);
       
  4786 					ERR_PRINTF2(_L("Expected value = %d."), iExVolume);
       
  4787 					StopTest(aError, EFail);
       
  4788 					}
       
  4789 				}
       
  4790 			else
       
  4791 				{
       
  4792 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4793 				StopTest(aError, EFail);
       
  4794 				}
       
  4795 			break;
       
  4796 			}
       
  4797 		default:
       
  4798 			{
       
  4799 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4800 			StopTest(aError, EFail);
       
  4801 			}
       
  4802 		}
       
  4803 	}
       
  4804 
       
  4805 void RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::DoTimerCallback()
       
  4806 	{
       
  4807 	INFO_PRINTF1(_L("TimerEvent called"));
       
  4808 	if(!iTimeToEnterPauseElapsed)
       
  4809 		{
       
  4810 		iTimeToEnterPauseElapsed = ETrue;
       
  4811 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4812 		Fsm(EEventTimerComplete, KErrNone);
       
  4813 		iTimeToEnterPauseElapsed = ETrue;
       
  4814 		}
       
  4815 	else
       
  4816 		{
       
  4817 		iTimer->Cancel();
       
  4818 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4819 		Fsm(EEventTimerComplete, KErrNone);
       
  4820 		}
       
  4821 	}
       
  4822 
       
  4823 void RA3FDevSoundToneMaxVolumeWhilePausePlayingTest::ToneFinished(TInt aError)
       
  4824 	{
       
  4825 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4826 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused then stopped"));
       
  4827 	StopTest(aError, EFail);
       
  4828 	}
       
  4829 
       
  4830 /*
       
  4831  *========================================================================================================
       
  4832  * MM-A3F-DEVSOUND-CHRTZ-TONE-0035
       
  4833  */
       
  4834 RA3FDevSoundToneVolumeWhilePausePlayingTest::RA3FDevSoundToneVolumeWhilePausePlayingTest(const TDesC& aTestName)
       
  4835 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  4836 		iFrequencyTone1(0), iExVolume(0),
       
  4837 		iTimeToEnterPauseElapsed(EFalse)
       
  4838 	{
       
  4839 	}
       
  4840 
       
  4841 RA3FDevSoundToneVolumeWhilePausePlayingTest* RA3FDevSoundToneVolumeWhilePausePlayingTest::NewL(const TDesC& aTestName)
       
  4842 	{
       
  4843 	RA3FDevSoundToneVolumeWhilePausePlayingTest * self = new(ELeave)RA3FDevSoundToneVolumeWhilePausePlayingTest(aTestName);
       
  4844 	return self;
       
  4845 	}
       
  4846 
       
  4847 void RA3FDevSoundToneVolumeWhilePausePlayingTest::DoKickoffTestL()
       
  4848 	{
       
  4849 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  4850 		{
       
  4851 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  4852 		StopTest(KErrNotFound);
       
  4853 		return;
       
  4854 		}
       
  4855 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  4856 		{
       
  4857 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  4858 		StopTest(KErrNotFound);
       
  4859 		return;
       
  4860 		}
       
  4861 	if (!GetIntFromConfig(iTestStepName, KExVolume, iExVolume)) 
       
  4862 		{
       
  4863 		ERR_PRINTF2(KMsgErrorGetParameter, &KExVolume);
       
  4864 		StopTest(KErrNotFound);
       
  4865 		return;
       
  4866 		}
       
  4867 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  4868 	}
       
  4869 
       
  4870 void RA3FDevSoundToneVolumeWhilePausePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  4871 	{
       
  4872 	switch (iDevSoundState)
       
  4873 		{
       
  4874 		case EStateCreated:
       
  4875 			{
       
  4876 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneVolumeWhilePausePlayingTest"), EFsmIncorrectErrorPassed));
       
  4877 			if (aDevSoundEvent == EEventInitialize)
       
  4878 				{
       
  4879 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  4880 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  4881 				if (err != KErrNone)
       
  4882 					{
       
  4883 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  4884 					StopTest(err);
       
  4885 					break;
       
  4886 					}
       
  4887 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  4888 				iDevSoundState = EStateInitializing;
       
  4889 				}
       
  4890 			else
       
  4891 				{
       
  4892 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  4893 				StopTest(aError, EFail);
       
  4894 				}
       
  4895 			break;
       
  4896 			}
       
  4897 		case EStateInitializing:
       
  4898 			{
       
  4899 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  4900 				{
       
  4901 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  4902 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  4903 				if (err != KErrNone)
       
  4904 					{
       
  4905 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  4906 					StopTest(err);
       
  4907 					break;
       
  4908 					}
       
  4909 				StartTimer(KMicroSecsTwoSec);
       
  4910 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  4911 				iDevSoundState = EStatePlaying;
       
  4912 				}
       
  4913 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  4914 				{
       
  4915 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  4916 				StopTest(aError);
       
  4917 				}
       
  4918 			else
       
  4919 				{
       
  4920 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4921 				StopTest(aError, EFail);
       
  4922 				}
       
  4923 			break;
       
  4924 			}
       
  4925 		case EStatePlaying:
       
  4926 			{
       
  4927 			if(aDevSoundEvent == EEventTimerComplete)
       
  4928 				{
       
  4929 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  4930 				iMMFDevSound->Pause();
       
  4931 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  4932 				iDevSoundState = EStatePause;
       
  4933 				}
       
  4934 			else
       
  4935 				{
       
  4936 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4937 				StopTest(aError, EFail);
       
  4938 				}
       
  4939 			break;
       
  4940 			}
       
  4941 		case EStatePause:
       
  4942 			{
       
  4943 			if(aDevSoundEvent == EEventTimerComplete)
       
  4944 				{
       
  4945 				INFO_PRINTF1(_L("Calling CMMFDevSound::Volume"));
       
  4946 				TInt maxVolumeGet = iMMFDevSound->Volume();
       
  4947 				if (maxVolumeGet == iExVolume)
       
  4948 					{
       
  4949 					INFO_PRINTF2(_L("The device default supported volume value is %d."), maxVolumeGet);
       
  4950 					StopTest();
       
  4951 					}
       
  4952 				else
       
  4953 					{
       
  4954 					INFO_PRINTF2(_L("The device default supported volume value failed with %d."), maxVolumeGet);
       
  4955 					ERR_PRINTF2(_L("Expected value = %d."), iExVolume);
       
  4956 					StopTest(aError, EFail);
       
  4957 					}
       
  4958 				}
       
  4959 			else
       
  4960 				{
       
  4961 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  4962 				StopTest(aError, EFail);
       
  4963 				}
       
  4964 			break;
       
  4965 			}
       
  4966 		default:
       
  4967 			{
       
  4968 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  4969 			StopTest(aError, EFail);
       
  4970 			}
       
  4971 		}
       
  4972 	}
       
  4973 
       
  4974 void RA3FDevSoundToneVolumeWhilePausePlayingTest::DoTimerCallback()
       
  4975 	{
       
  4976 	INFO_PRINTF1(_L("TimerEvent called"));
       
  4977 	if(!iTimeToEnterPauseElapsed)
       
  4978 		{
       
  4979 		iTimeToEnterPauseElapsed = ETrue;
       
  4980 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4981 		Fsm(EEventTimerComplete, KErrNone);
       
  4982 		iTimeToEnterPauseElapsed = ETrue;
       
  4983 		}
       
  4984 	else
       
  4985 		{
       
  4986 		iTimer->Cancel();
       
  4987 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  4988 		Fsm(EEventTimerComplete, KErrNone);
       
  4989 		}
       
  4990 	}
       
  4991 
       
  4992 void RA3FDevSoundToneVolumeWhilePausePlayingTest::ToneFinished(TInt aError)
       
  4993 	{
       
  4994 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  4995 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused then stopped"));
       
  4996 	StopTest(aError, EFail);
       
  4997 	}
       
  4998 
       
  4999 /*
       
  5000  *========================================================================================================
       
  5001  * MM-A3F-DEVSOUND-CHRTZ-TONE-0036
       
  5002  */
       
  5003 RA3FDevSoundTonePlayToneOnceTest::RA3FDevSoundTonePlayToneOnceTest(const TDesC& aTestName)
       
  5004 	:	RA3FDevSoundTestBase(aTestName), 
       
  5005 		iDuration(0), iFrequencyTone1(0)
       
  5006 	{
       
  5007 	}
       
  5008 
       
  5009 RA3FDevSoundTonePlayToneOnceTest* RA3FDevSoundTonePlayToneOnceTest::NewL(const TDesC& aTestName)
       
  5010 	{
       
  5011 	RA3FDevSoundTonePlayToneOnceTest * self = new(ELeave)RA3FDevSoundTonePlayToneOnceTest(aTestName);
       
  5012 	return self;
       
  5013 	}
       
  5014 
       
  5015 void RA3FDevSoundTonePlayToneOnceTest::DoKickoffTestL()
       
  5016 	{
       
  5017 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5018 		{
       
  5019 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5020 		StopTest(KErrNotFound);
       
  5021 		return;
       
  5022 		}
       
  5023 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  5024 		{
       
  5025 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  5026 		StopTest(KErrNotFound);
       
  5027 		return;
       
  5028 		}
       
  5029 	}
       
  5030 
       
  5031 void RA3FDevSoundTonePlayToneOnceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5032 	{
       
  5033 	switch (iDevSoundState)
       
  5034 		{
       
  5035 		case EStateCreated:
       
  5036 			{
       
  5037 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneOnceTest"), EFsmIncorrectErrorPassed));
       
  5038 			if (aDevSoundEvent == EEventInitialize)
       
  5039 				{
       
  5040 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5041 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5042 				if (err != KErrNone)
       
  5043 					{
       
  5044 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5045 					StopTest(err);
       
  5046 					break;
       
  5047 					}
       
  5048 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5049 				iDevSoundState = EStateInitializing;
       
  5050 				}
       
  5051 			else
       
  5052 				{
       
  5053 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5054 				StopTest(aError, EFail);
       
  5055 				}
       
  5056 			break;
       
  5057 			}
       
  5058 		case EStateInitializing:
       
  5059 			{
       
  5060 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5061 				{
       
  5062 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5063 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz  during %d secs "), iFrequencyTone1, iDuration);
       
  5064 				iStartTime.HomeTime();
       
  5065 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  5066 				if (err != KErrNone)
       
  5067 					{
       
  5068 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL failed with error : %d!"), err);
       
  5069 					StopTest(err);
       
  5070 					}
       
  5071 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5072 				iDevSoundState = EStatePlaying;
       
  5073 				}
       
  5074 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5075 				{
       
  5076 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5077 				StopTest(aError);
       
  5078 				}
       
  5079 			else
       
  5080 				{
       
  5081 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5082 				StopTest(aError, EFail);
       
  5083 				}
       
  5084 			break;
       
  5085 			}
       
  5086 		default:
       
  5087 			{
       
  5088 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5089 			StopTest(aError, EFail);
       
  5090 			}
       
  5091 		}
       
  5092 	}
       
  5093 
       
  5094 void RA3FDevSoundTonePlayToneOnceTest::ToneFinished(TInt aError)
       
  5095 	{
       
  5096 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5097 	if (aError == KErrUnderflow)
       
  5098 		{
       
  5099 		iEndTime.HomeTime();
       
  5100 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  5101 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  5102 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  5103 			{
       
  5104 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  5105 			StopTest();
       
  5106 			}
       
  5107 		else
       
  5108 			{
       
  5109 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  5110 			StopTest(KErrNone, EFail);
       
  5111 			}
       
  5112 		}
       
  5113 	else
       
  5114 		{
       
  5115 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  5116 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  5117 		StopTest(aError, EFail);
       
  5118 		}
       
  5119 	}
       
  5120 
       
  5121 /*
       
  5122  *========================================================================================================
       
  5123  * MM-A3F-DEVSOUND-CHRTZ-TONE-0037
       
  5124  */
       
  5125 RA3FDevSoundTonePlayDualToneTest::RA3FDevSoundTonePlayDualToneTest(const TDesC& aTestName)
       
  5126 	:	RA3FDevSoundTestBase(aTestName), 
       
  5127 		iDuration(0), iFrequencyTone1(0),
       
  5128 		iFrequencyTone2(0)
       
  5129 	{
       
  5130 	}
       
  5131 RA3FDevSoundTonePlayDualToneTest* RA3FDevSoundTonePlayDualToneTest::NewL(const TDesC& aTestName)
       
  5132 	{
       
  5133 	RA3FDevSoundTonePlayDualToneTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneTest(aTestName);
       
  5134 	return self;
       
  5135 	}
       
  5136 void RA3FDevSoundTonePlayDualToneTest::DoKickoffTestL()
       
  5137 	{
       
  5138 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5139 		{
       
  5140 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5141 		StopTest(KErrNotFound);
       
  5142 		return;
       
  5143 		}
       
  5144 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  5145 		{
       
  5146 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  5147 		StopTest(KErrNotFound);
       
  5148 		return;
       
  5149 		}
       
  5150 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  5151 		{
       
  5152 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  5153 		StopTest(KErrNotFound);
       
  5154 		return;
       
  5155 		}
       
  5156 	}
       
  5157 
       
  5158 void RA3FDevSoundTonePlayDualToneTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5159 	{
       
  5160 	switch (iDevSoundState)
       
  5161 		{
       
  5162 		case EStateCreated:
       
  5163 			{
       
  5164 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneTest"), EFsmIncorrectErrorPassed));
       
  5165 			if (aDevSoundEvent == EEventInitialize)
       
  5166 				{
       
  5167 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5168 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5169 				if (err != KErrNone)
       
  5170 					{
       
  5171 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5172 					StopTest(err);
       
  5173 					break;
       
  5174 					}
       
  5175 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5176 				iDevSoundState = EStateInitializing;
       
  5177 				}
       
  5178 			else
       
  5179 				{
       
  5180 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5181 				StopTest(aError, EFail);
       
  5182 				}
       
  5183 			break;
       
  5184 			}
       
  5185 		case EStateInitializing:
       
  5186 			{
       
  5187 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5188 				{
       
  5189 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5190 				iStartTime.HomeTime();
       
  5191 				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  5192 				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  5193 				if (err != KErrNone)
       
  5194 					{
       
  5195 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error : %d!"),  err);
       
  5196 					StopTest(err);
       
  5197 					break;
       
  5198 					}
       
  5199 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5200 				iDevSoundState = EStatePlaying;
       
  5201 				}
       
  5202 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5203 				{
       
  5204 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5205 				StopTest(aError);	
       
  5206 				}
       
  5207 			else
       
  5208 				{
       
  5209 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5210 				StopTest(aError, EFail);
       
  5211 				}
       
  5212 			break;
       
  5213 			}
       
  5214 		default:
       
  5215 			{
       
  5216 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5217 			StopTest(aError, EFail);
       
  5218 			}
       
  5219 		}
       
  5220 	}
       
  5221 
       
  5222 void RA3FDevSoundTonePlayDualToneTest::ToneFinished(TInt aError)
       
  5223 	{
       
  5224 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5225 	if (aError == KErrUnderflow)
       
  5226 		{
       
  5227 		iEndTime.HomeTime();
       
  5228 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  5229 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  5230 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  5231 			{
       
  5232 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  5233 			StopTest();
       
  5234 			}
       
  5235 		else
       
  5236 			{
       
  5237 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  5238 			StopTest(KErrNone, EFail);
       
  5239 			}
       
  5240 		}
       
  5241 	else
       
  5242 		{
       
  5243 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  5244 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  5245 		StopTest(aError, EFail);
       
  5246 		}
       
  5247 	}
       
  5248 
       
  5249 /*
       
  5250  *========================================================================================================
       
  5251  * MM-A3F-DEVSOUND-CHRTZ-TONE-0038
       
  5252  */
       
  5253 RA3FDevSoundTonePlayDTMFToneTest::RA3FDevSoundTonePlayDTMFToneTest(const TDesC& aTestName)
       
  5254 	:	RA3FDevSoundTestBase(aTestName),iDTMFString(KNullDesC),
       
  5255 		iDTMFPauses(0), iDTMFTones(0)
       
  5256 		
       
  5257 	{
       
  5258 	}
       
  5259 
       
  5260 RA3FDevSoundTonePlayDTMFToneTest* RA3FDevSoundTonePlayDTMFToneTest::NewL(const TDesC& aTestName)
       
  5261 	{
       
  5262 	RA3FDevSoundTonePlayDTMFToneTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFToneTest(aTestName);
       
  5263 	return self;
       
  5264 	}
       
  5265 
       
  5266 void RA3FDevSoundTonePlayDTMFToneTest::DoKickoffTestL()
       
  5267 	{
       
  5268 	TPtrC DTMF;
       
  5269 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  5270 		{
       
  5271 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  5272 		StopTest(KErrNotFound);
       
  5273 		return;
       
  5274 		}
       
  5275 	iDTMFString.Copy(DTMF);
       
  5276 	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
       
  5277 		{
       
  5278 		if (iDTMFString[i] == ',')
       
  5279 			{
       
  5280 			iDTMFPauses++;
       
  5281 			}
       
  5282 		else
       
  5283 			{
       
  5284 			iDTMFTones++;
       
  5285 			}
       
  5286 		}
       
  5287 	}
       
  5288 
       
  5289 void RA3FDevSoundTonePlayDTMFToneTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5290 	{
       
  5291 	switch (iDevSoundState)
       
  5292 		{
       
  5293 		case EStateCreated:
       
  5294 			{
       
  5295 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFToneTest"), EFsmIncorrectErrorPassed));
       
  5296 			if (aDevSoundEvent == EEventInitialize)
       
  5297 				{
       
  5298 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5299 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5300 				if (err != KErrNone)
       
  5301 					{
       
  5302 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  5303 					StopTest(err);
       
  5304 					break;
       
  5305 					}
       
  5306 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5307 				iDevSoundState = EStateInitializing;
       
  5308 				}
       
  5309 			else
       
  5310 				{
       
  5311 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5312 				StopTest(aError,  EFail);
       
  5313 				}
       
  5314 			break;
       
  5315 			}
       
  5316 		case EStateInitializing:
       
  5317 			{
       
  5318 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5319 				{
       
  5320 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5321 				iStartTime.HomeTime();
       
  5322 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  5323 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  5324 				if (err != KErrNone)
       
  5325 					{
       
  5326 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
       
  5327 					StopTest(err);
       
  5328 					break;
       
  5329 					}
       
  5330 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5331 				iDevSoundState = EStatePlaying;
       
  5332 				}
       
  5333 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5334 				{
       
  5335 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5336 				StopTest(aError);
       
  5337 				}
       
  5338 			else
       
  5339 				{
       
  5340 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5341 				StopTest(aError, EFail);
       
  5342 				}
       
  5343 			break;
       
  5344 			}
       
  5345 		default:
       
  5346 			{
       
  5347 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5348 			StopTest(aError, EFail);
       
  5349 			}
       
  5350 		}
       
  5351 	}
       
  5352 
       
  5353 void RA3FDevSoundTonePlayDTMFToneTest::ToneFinished(TInt aError)
       
  5354 	{
       
  5355 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5356 	if (aError == KErrUnderflow)
       
  5357 		{
       
  5358 		iEndTime.HomeTime();
       
  5359 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  5360 		TInt defaultToneOn = 250000;
       
  5361 		TInt defaultToneOff = 50000;
       
  5362 		TInt defaultPauseLength = 250000;
       
  5363 		TInt totalExpectedReproductionTime = defaultToneOn*iDTMFTones + defaultToneOff * iDTMFTones + iDTMFPauses * defaultPauseLength;
       
  5364 		if (iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  5365 			{
       
  5366 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  5367 			StopTest();
       
  5368 			}
       
  5369 		else
       
  5370 			{
       
  5371 			ERR_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL failed with %Ld"), iPlayToneTime.Int64());
       
  5372 			ERR_PRINTF2(_L("Expected time %d"), totalExpectedReproductionTime);
       
  5373 			StopTest(KErrNone, EFail);
       
  5374 			}
       
  5375 		}
       
  5376 	else
       
  5377 		{
       
  5378 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  5379 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  5380 		StopTest(aError, EFail);
       
  5381 		}
       
  5382 	}
       
  5383 
       
  5384 /*
       
  5385  *========================================================================================================
       
  5386  * MM-A3F-DEVSOUND-CHRTZ-TONE-0039
       
  5387  */
       
  5388 RA3FDevSoundTonePlayToneSequenceTest::RA3FDevSoundTonePlayToneSequenceTest(const TDesC& aTestName)
       
  5389 	:	RA3FDevSoundTestBase(aTestName)
       
  5390 	{
       
  5391 	}
       
  5392 
       
  5393 RA3FDevSoundTonePlayToneSequenceTest* RA3FDevSoundTonePlayToneSequenceTest::NewL(const TDesC& aTestName)
       
  5394 	{
       
  5395 	RA3FDevSoundTonePlayToneSequenceTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceTest(aTestName);
       
  5396 	return self;
       
  5397 	}
       
  5398 
       
  5399 void RA3FDevSoundTonePlayToneSequenceTest::DoKickoffTestL()
       
  5400 	{
       
  5401 	}
       
  5402 
       
  5403 void RA3FDevSoundTonePlayToneSequenceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5404 	{
       
  5405 	switch(iDevSoundState)
       
  5406 		{
       
  5407 		case EStateCreated:
       
  5408 			{
       
  5409 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceTest"), EFsmIncorrectErrorPassed));
       
  5410 			if (aDevSoundEvent == EEventInitialize)
       
  5411 				{
       
  5412 				INFO_PRINTF1(_L("Calling MMFDevSound::InitializeL"));
       
  5413 				TRAPD(err, iMMFDevSound->InitializeL(*this,  EMMFStateTonePlaying));
       
  5414 				if (err != KErrNone)
       
  5415 					{
       
  5416 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5417 					StopTest(err);
       
  5418 					break;
       
  5419 					}
       
  5420 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5421 				iDevSoundState = EStateInitializing;
       
  5422 				}
       
  5423 			else
       
  5424 				{
       
  5425 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5426 				StopTest(aError, EFail);
       
  5427 				}
       
  5428 			break;
       
  5429 			}
       
  5430 		case EStateInitializing:
       
  5431 			{
       
  5432 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5433 				{
       
  5434 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5435 				TUint8* tablePointer = const_cast<TUint8*>(&(KFixedSequenceTestSequenceDataX[0])); 
       
  5436 				TPtrC8 KFixedSequenceData(tablePointer, sizeof(KFixedSequenceTestSequenceDataX));
       
  5437 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  5438 				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  5439 				if (err != KErrNone)
       
  5440 					{
       
  5441 					ERR_PRINTF2(_L("Play tone sequence failed with error = %d!"), err);
       
  5442 					StopTest(err);
       
  5443 					break;
       
  5444 					}
       
  5445 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5446 				iDevSoundState = EStatePlaying;
       
  5447 				}
       
  5448 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5449 				{
       
  5450 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5451 				StopTest(aError);
       
  5452 				}
       
  5453 			else
       
  5454 				{
       
  5455 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5456 				StopTest(aError, EFail);
       
  5457 				}
       
  5458 			break;
       
  5459 			}
       
  5460 		default:
       
  5461 			{
       
  5462 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5463 			StopTest(aError, EFail);
       
  5464 			}
       
  5465 		}
       
  5466 	}
       
  5467 
       
  5468 /*
       
  5469  *========================================================================================================
       
  5470  * MM-A3F-DEVSOUND-CHRTZ-TONE-0040
       
  5471  */
       
  5472 RA3FDevSoundToneNewToneRequestWhilePlayingTest::RA3FDevSoundToneNewToneRequestWhilePlayingTest(const TDesC& aTestName)
       
  5473 	:	RA3FDevSoundTestBase(aTestName), 
       
  5474 		iDuration(0), iFrequencyTone1(0)
       
  5475 	{
       
  5476 	}
       
  5477 
       
  5478 RA3FDevSoundToneNewToneRequestWhilePlayingTest* RA3FDevSoundToneNewToneRequestWhilePlayingTest::NewL(const TDesC& aTestName)
       
  5479 	{
       
  5480 	RA3FDevSoundToneNewToneRequestWhilePlayingTest * self = new(ELeave)RA3FDevSoundToneNewToneRequestWhilePlayingTest(aTestName);
       
  5481 	return self;
       
  5482 	}
       
  5483 
       
  5484 void RA3FDevSoundToneNewToneRequestWhilePlayingTest::DoKickoffTestL()
       
  5485 	{
       
  5486 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5487 		{
       
  5488 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5489 		StopTest(KErrNotFound);
       
  5490 		return;
       
  5491 		}
       
  5492 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  5493 		{
       
  5494 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  5495 		StopTest(KErrNotFound);
       
  5496 		return;
       
  5497 		}
       
  5498 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  5499 	}
       
  5500 
       
  5501 void RA3FDevSoundToneNewToneRequestWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5502 	{
       
  5503 	switch (iDevSoundState)
       
  5504 		{
       
  5505 		case EStateCreated:
       
  5506 			{
       
  5507 			if (aDevSoundEvent == EEventInitialize)
       
  5508 				{
       
  5509 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneNewToneRequestWhilePlayingTest"), EFsmIncorrectErrorPassed));
       
  5510 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5511 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5512 				if (err != KErrNone)
       
  5513 					{
       
  5514 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5515 					StopTest(err);
       
  5516 					break;
       
  5517 					}
       
  5518 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5519 				iDevSoundState = EStateInitializing;
       
  5520 				}
       
  5521 			else
       
  5522 				{
       
  5523 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5524 				StopTest(aError, EFail);
       
  5525 				}
       
  5526 			break;
       
  5527 			}
       
  5528 		case EStateInitializing:
       
  5529 			{
       
  5530 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5531 				{
       
  5532 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5533 				iStartTime.HomeTime();
       
  5534 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  5535 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  5536 				if (err != KErrNone)
       
  5537 					{
       
  5538 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  5539 					StopTest(err);
       
  5540 					break;
       
  5541 					}
       
  5542 				StartTimer(KMicroSecsTwoSec);
       
  5543 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5544 				iDevSoundState = EStatePlaying;
       
  5545 				}
       
  5546 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5547 				{
       
  5548 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5549 				StopTest(aError);	
       
  5550 				}
       
  5551 			else
       
  5552 				{
       
  5553 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5554 				StopTest(aError, EFail);
       
  5555 				}
       
  5556 			break;
       
  5557 			}
       
  5558 		case EStatePlaying:
       
  5559 			{
       
  5560 			if(aDevSoundEvent == EEventTimerComplete)
       
  5561 				{
       
  5562 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  5563 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  5564 				if (err == KErrNone)
       
  5565 					{
       
  5566 					INFO_PRINTF2(_L("CMMFDevSound::PlayToneL left with the expected error = %d"), err);
       
  5567 					}
       
  5568 				else
       
  5569 					{
       
  5570 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d"), err);
       
  5571 					ERR_PRINTF2(_L("Expected error value = %d!"), KErrNotReady);
       
  5572 					StopTest(err);
       
  5573 					break;
       
  5574 					}
       
  5575 				}
       
  5576 			break;
       
  5577 			}
       
  5578 		default:
       
  5579 			{
       
  5580 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5581 			StopTest(aError, EFail);
       
  5582 			}
       
  5583 		}
       
  5584 	}
       
  5585 
       
  5586 void RA3FDevSoundToneNewToneRequestWhilePlayingTest::DoTimerCallback()
       
  5587 	{
       
  5588 	INFO_PRINTF1(_L("TimerEvent called"));
       
  5589 	iTimer->Cancel();
       
  5590 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  5591 	Fsm(EEventTimerComplete, KErrNone);
       
  5592 	}
       
  5593 
       
  5594 void RA3FDevSoundToneNewToneRequestWhilePlayingTest::ToneFinished(TInt aError)
       
  5595 	{
       
  5596 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5597 	if (aError == KErrUnderflow)
       
  5598 		{
       
  5599 		iEndTime.HomeTime();
       
  5600 		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
       
  5601 		TInt totalExpectedReproductionTime = iDuration * KMicroSecsInOneSec;
       
  5602 		if(iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
       
  5603 			{
       
  5604 			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
       
  5605 			StopTest();
       
  5606 			}
       
  5607 		else
       
  5608 			{
       
  5609 			ERR_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
       
  5610 			StopTest(KErrNone, EFail);
       
  5611 			}
       
  5612 		}
       
  5613 	else
       
  5614 		{
       
  5615 		ERR_PRINTF2(_L("DevSound called ToneFinished with error = %d"), aError);
       
  5616 		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
       
  5617 		StopTest(aError, EFail);
       
  5618 		}
       
  5619 	}
       
  5620 
       
  5621 /*
       
  5622  *========================================================================================================
       
  5623  * MM-A3F-DEVSOUND-CHRTZ-TONE-0041
       
  5624  */
       
  5625 RA3FDevSoundTonePreemptionTest::RA3FDevSoundTonePreemptionTest(const TDesC& aTestName)
       
  5626 	:	RA3FDevSoundTestBase(aTestName), 
       
  5627 		iDuration(0), iFrequencyTone1(0)
       
  5628 	{
       
  5629 	}
       
  5630 
       
  5631 RA3FDevSoundTonePreemptionTest* RA3FDevSoundTonePreemptionTest::NewL(const TDesC& aTestName)
       
  5632 	{
       
  5633 	RA3FDevSoundTonePreemptionTest * self = new(ELeave)RA3FDevSoundTonePreemptionTest(aTestName);
       
  5634 	return self;
       
  5635 	}
       
  5636 
       
  5637 void RA3FDevSoundTonePreemptionTest::DoKickoffTestL()
       
  5638 	{
       
  5639 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5640 		{
       
  5641 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5642 		StopTest(KErrNotFound);
       
  5643 		return;
       
  5644 		}
       
  5645 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  5646 		{
       
  5647 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  5648 		StopTest(KErrNotFound);
       
  5649 		return;
       
  5650 		}
       
  5651 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  5652 	iDevsoundToneClient = CA3FDevSoundToneClient::NewL(*this);
       
  5653 	}
       
  5654 
       
  5655 void RA3FDevSoundTonePreemptionTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5656 	{
       
  5657 	switch (iDevSoundState)
       
  5658 		{
       
  5659 		case EStateCreated:
       
  5660 			{
       
  5661 			if (aDevSoundEvent == EEventInitialize)
       
  5662 				{
       
  5663 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePreemptionTest"), EFsmIncorrectErrorPassed));
       
  5664 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5665 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5666 				if (err != KErrNone)
       
  5667 					{
       
  5668 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5669 					StopTest(err);
       
  5670 					break;
       
  5671 					}
       
  5672 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5673 				iDevSoundState = EStateInitializing;
       
  5674 				}
       
  5675 			else
       
  5676 				{
       
  5677 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5678 				StopTest(aError, EFail);
       
  5679 				}
       
  5680 			break;
       
  5681 			}
       
  5682 		case EStateInitializing:
       
  5683 			{
       
  5684 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5685 				{
       
  5686 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5687 				TMMFPrioritySettings prioritySettings;
       
  5688 				prioritySettings.iPriority = KMinimumPriority;
       
  5689 				prioritySettings.iPref = EMdaPriorityPreferenceTime;
       
  5690 				prioritySettings.iState = EMMFStateIdle;
       
  5691 				iMMFDevSound->SetPrioritySettings(prioritySettings);
       
  5692 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  5693 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  5694 				if (err != KErrNone)
       
  5695 					{
       
  5696 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  5697 					StopTest(err);
       
  5698 					break;
       
  5699 					}
       
  5700 				StartTimer(KMicroSecsTwoSec);
       
  5701 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5702 				iDevSoundState = EStatePlaying;
       
  5703 				}
       
  5704 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5705 				{
       
  5706 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5707 				StopTest(aError);	
       
  5708 				}
       
  5709 			else
       
  5710 				{
       
  5711 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5712 				StopTest(aError, EFail);
       
  5713 				}
       
  5714 			break;
       
  5715 			}
       
  5716 		case EStatePlaying:
       
  5717 			{
       
  5718 			if(aDevSoundEvent == EEventTimerComplete)
       
  5719 				{
       
  5720 				INFO_PRINTF1(_L("Starting lower priority devsound client"));	
       
  5721 				iDevsoundToneClient->SetPriority(KMaximumPriority);
       
  5722 				TInt err = iDevsoundToneClient->InitTonePlay(iFrequencyTone1, iDuration*KMicroSecsInOneSec);
       
  5723 				if(err != KErrNone)
       
  5724 					{
       
  5725 					ERR_PRINTF1(_L("Initialization to play tone thru second devsound client failed"));
       
  5726 					StopTest(err);
       
  5727 					}
       
  5728 				}
       
  5729 			break;
       
  5730 			}
       
  5731 		default:
       
  5732 			{
       
  5733 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5734 			StopTest(aError, EFail);
       
  5735 			}
       
  5736 		}
       
  5737 	}
       
  5738 
       
  5739 void RA3FDevSoundTonePreemptionTest::DoTimerCallback()
       
  5740 	{
       
  5741 	INFO_PRINTF1(_L("TimerEvent called"));
       
  5742 	iTimer->Cancel();
       
  5743 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  5744 	Fsm(EEventTimerComplete, KErrNone);
       
  5745 	}
       
  5746 
       
  5747 void RA3FDevSoundTonePreemptionTest::ToneFinished(TInt aError)
       
  5748 	{
       
  5749 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5750 	if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
       
  5751 		{
       
  5752 		INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
       
  5753 		}
       
  5754 	else
       
  5755 		{
       
  5756 		ERR_PRINTF2(_L("First DevSound client called ToneFinished() and failed with error = %d "), aError);
       
  5757 		ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
       
  5758 		StopTest(aError, EFail);
       
  5759 		}
       
  5760 	}
       
  5761 
       
  5762 
       
  5763 void RA3FDevSoundTonePreemptionTest::ClientInitializeCompleteCallback(TInt aError)
       
  5764 	{
       
  5765 	INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
       
  5766 	if (aError != KErrNone)
       
  5767 		{
       
  5768 		ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
       
  5769 		StopTest(aError);
       
  5770 		}
       
  5771 	else
       
  5772 		{
       
  5773 		INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
       
  5774 		TInt err = iDevsoundToneClient->PlayTone();
       
  5775 		if (err != KErrNone)
       
  5776 			{
       
  5777 			ERR_PRINTF2(_L("Starting to play tones thru second devsound client left with error = %d"), err);
       
  5778 			StopTest(err);
       
  5779 			}
       
  5780 		}
       
  5781 	}
       
  5782 
       
  5783 void RA3FDevSoundTonePreemptionTest::ClientToneFinishedCallback(TInt aError)
       
  5784 	{
       
  5785 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5786 		if (aError == KErrUnderflow)
       
  5787 			{
       
  5788 			INFO_PRINTF2(_L("Second DevSound instance called ToneFinished with error = %d"), aError);
       
  5789 			StopTest(aError,EPass);
       
  5790 			}
       
  5791 		else
       
  5792 			{
       
  5793 			ERR_PRINTF2(_L("Second DevSound instance called ToneFinished with error = %d that was NOT expected"), aError);
       
  5794 			ERR_PRINTF2(_L("Expected error = %d"), aError);
       
  5795 			StopTest(aError);
       
  5796 			}
       
  5797 	}
       
  5798 
       
  5799 /*
       
  5800  *========================================================================================================
       
  5801  * MM-A3F-DEVSOUND-CHRTZ-TONE-0042
       
  5802  */
       
  5803 RA3FDevSoundToneRejectionTest::RA3FDevSoundToneRejectionTest(const TDesC& aTestName)
       
  5804 	:	RA3FDevSoundTestBase(aTestName), 
       
  5805 		iDuration(0), iFrequencyTone1(0)
       
  5806 	{
       
  5807 	}
       
  5808 
       
  5809 RA3FDevSoundToneRejectionTest* RA3FDevSoundToneRejectionTest::NewL(const TDesC& aTestName)
       
  5810 	{
       
  5811 	RA3FDevSoundToneRejectionTest * self = new(ELeave)RA3FDevSoundToneRejectionTest(aTestName);
       
  5812 	return self;
       
  5813 	}
       
  5814 
       
  5815 void RA3FDevSoundToneRejectionTest::DoKickoffTestL()
       
  5816 	{
       
  5817 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5818 		{
       
  5819 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5820 		StopTest(KErrNotFound);
       
  5821 		return;
       
  5822 		}
       
  5823 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  5824 		{
       
  5825 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  5826 		StopTest(KErrNotFound);
       
  5827 		return;
       
  5828 		}
       
  5829 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  5830 	iDevsoundToneClient = CA3FDevSoundToneClient::NewL(*this);
       
  5831 	}
       
  5832 
       
  5833 void RA3FDevSoundToneRejectionTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  5834 	{
       
  5835 	switch (iDevSoundState)
       
  5836 		{
       
  5837 		case EStateCreated:
       
  5838 			{
       
  5839 			if (aDevSoundEvent == EEventInitialize)
       
  5840 				{
       
  5841 				__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundToneRejectionTest"), EFsmIncorrectErrorPassed));
       
  5842 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  5843 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  5844 				if (err != KErrNone)
       
  5845 					{
       
  5846 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  5847 					StopTest(err);
       
  5848 					break;
       
  5849 					}
       
  5850 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  5851 				iDevSoundState = EStateInitializing;
       
  5852 				}
       
  5853 			else
       
  5854 				{
       
  5855 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  5856 				StopTest(aError, EFail);
       
  5857 				}
       
  5858 			break;
       
  5859 			}
       
  5860 		case EStateInitializing:
       
  5861 			{
       
  5862 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  5863 				{
       
  5864 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  5865 				TMMFPrioritySettings prioritySettings;
       
  5866 				prioritySettings.iPriority = KMinimumPriority;
       
  5867 				prioritySettings.iPref = EMdaPriorityPreferenceTime;
       
  5868 				prioritySettings.iState = EMMFStateIdle;
       
  5869 				iMMFDevSound->SetPrioritySettings(prioritySettings);
       
  5870 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  5871 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  5872 				if (err != KErrNone)
       
  5873 					{
       
  5874 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  5875 					StopTest(err);
       
  5876 					break;
       
  5877 					}
       
  5878 				StartTimer(KMicroSecsTwoSec);
       
  5879 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  5880 				iDevSoundState = EStatePlaying;
       
  5881 				}
       
  5882 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  5883 				{
       
  5884 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  5885 				StopTest(aError);
       
  5886 				}
       
  5887 			else
       
  5888 				{
       
  5889 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  5890 				StopTest(aError, EFail);
       
  5891 				}
       
  5892 			break;
       
  5893 			}
       
  5894 		case EStatePlaying:
       
  5895 			{
       
  5896 			if(aDevSoundEvent == EEventTimerComplete)
       
  5897 				{
       
  5898 				INFO_PRINTF1(_L("Starting lower priority devsound client"));
       
  5899 				iDevsoundToneClient->SetPriority(KMinimumPriority);
       
  5900 				TInt err = iDevsoundToneClient->InitTonePlay(iFrequencyTone1, iDuration*KMicroSecsInOneSec);
       
  5901 				if(err != KErrNone)
       
  5902 					{
       
  5903 					ERR_PRINTF1(_L("Initialization to play tone thru second devsound client failed"));
       
  5904 					StopTest(err);
       
  5905 					}
       
  5906 				}
       
  5907 			break;
       
  5908 			}
       
  5909 		default:
       
  5910 			{
       
  5911 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  5912 			StopTest(aError, EFail);
       
  5913 			}
       
  5914 		}
       
  5915 	}
       
  5916 
       
  5917 void RA3FDevSoundToneRejectionTest::DoTimerCallback()
       
  5918 	{
       
  5919 	INFO_PRINTF1(_L("TimerEvent called"));
       
  5920 	iTimer->Cancel();
       
  5921 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  5922 	Fsm(EEventTimerComplete, KErrNone);
       
  5923 	}
       
  5924 
       
  5925 void RA3FDevSoundToneRejectionTest::ToneFinished(TInt aError)
       
  5926 	{
       
  5927 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5928 	if (aError == KErrUnderflow)
       
  5929 		{
       
  5930 		INFO_PRINTF2(_L("First DevSound instance called ToneFinished with error = %d"), aError);
       
  5931 		StopTest(aError,EPass);
       
  5932 		}
       
  5933 	else
       
  5934 		{
       
  5935 		ERR_PRINTF2(_L("First DevSound instance called ToneFinished with error = %d that was NOT expected"), aError);
       
  5936 		ERR_PRINTF2(_L("Expected error = %d"), aError);
       
  5937 		StopTest(aError, EFail);
       
  5938 		}
       
  5939 	}
       
  5940 
       
  5941 
       
  5942 void RA3FDevSoundToneRejectionTest::ClientInitializeCompleteCallback(TInt aError)
       
  5943 	{
       
  5944 	INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
       
  5945 	if (aError != KErrNone)
       
  5946 		{
       
  5947 		ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
       
  5948 		StopTest(aError);
       
  5949 		}
       
  5950 	else
       
  5951 		{
       
  5952 		INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
       
  5953 		TInt err = iDevsoundToneClient->PlayTone();
       
  5954 		if (err != KErrNone)
       
  5955 			{
       
  5956 			ERR_PRINTF2(_L("Starting to play tones thru second devsound client left with error = %d"), err);
       
  5957 			StopTest(err);
       
  5958 			}
       
  5959 		}
       
  5960 	}
       
  5961 
       
  5962 void RA3FDevSoundToneRejectionTest::ClientToneFinishedCallback(TInt aError)
       
  5963 	{
       
  5964 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  5965 	if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
       
  5966 		{
       
  5967 		INFO_PRINTF1(_L("========== Rejection 2nd DevSound Instance=========="));
       
  5968 		}
       
  5969 	else
       
  5970 		{
       
  5971 		ERR_PRINTF2(_L("Second DevSound client called ToneFinished() and failed with error = %d "), aError);
       
  5972 		ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
       
  5973 		StopTest(aError, EFail);
       
  5974 		}
       
  5975 	}
       
  5976 
       
  5977 /*
       
  5978  *========================================================================================================
       
  5979  * MM-A3F-DEVSOUND-CHRTZ-TONE-0043
       
  5980  */
       
  5981 RA3FDevSoundTonePlayToneOnceAndStopTest::RA3FDevSoundTonePlayToneOnceAndStopTest(const TDesC& aTestName)
       
  5982 	:	RA3FDevSoundTestBase(aTestName), 
       
  5983 		iDuration(0), iFrequencyTone1(0),
       
  5984 		iToneStopped(EFalse)
       
  5985 	{
       
  5986 	}
       
  5987 
       
  5988 RA3FDevSoundTonePlayToneOnceAndStopTest* RA3FDevSoundTonePlayToneOnceAndStopTest::NewL(const TDesC& aTestName)
       
  5989 	{
       
  5990 	RA3FDevSoundTonePlayToneOnceAndStopTest * self = new(ELeave)RA3FDevSoundTonePlayToneOnceAndStopTest(aTestName);
       
  5991 	return self;
       
  5992 	}
       
  5993 
       
  5994 void RA3FDevSoundTonePlayToneOnceAndStopTest::DoKickoffTestL()
       
  5995 	{
       
  5996 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  5997 		{
       
  5998 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  5999 		StopTest(KErrNotFound);
       
  6000 		return;
       
  6001 		}
       
  6002 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  6003 		{
       
  6004 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  6005 		StopTest(KErrNotFound);
       
  6006 		return;
       
  6007 		}
       
  6008 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6009 	}
       
  6010 
       
  6011 void RA3FDevSoundTonePlayToneOnceAndStopTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6012 	{
       
  6013 	switch (iDevSoundState)
       
  6014 		{
       
  6015 		case EStateCreated:
       
  6016 			{
       
  6017 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneOnceAndStopTest"), EFsmIncorrectErrorPassed));
       
  6018 			if (aDevSoundEvent == EEventInitialize)
       
  6019 				{
       
  6020 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6021 				TRAPD(err, iMMFDevSound->InitializeL(*this,  EMMFStateTonePlaying));
       
  6022 				if (err != KErrNone)
       
  6023 					{
       
  6024 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6025 					StopTest(err);
       
  6026 					break;
       
  6027 					}
       
  6028 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6029 				iDevSoundState = EStateInitializing;
       
  6030 				}
       
  6031 			else
       
  6032 				{
       
  6033 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6034 				StopTest(aError, EFail);
       
  6035 				}
       
  6036 			break;
       
  6037 			}
       
  6038 		case EStateInitializing:
       
  6039 			{
       
  6040 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6041 				{
       
  6042 				if (!iToneStopped)
       
  6043 					{
       
  6044 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6045 					INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  6046 					TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  6047 					if (err != KErrNone)
       
  6048 						{
       
  6049 						ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error : %d!"), err);
       
  6050 						StopTest(err);
       
  6051 						break;
       
  6052 						}
       
  6053 					StartTimer(KMicroSecsTwoSec);
       
  6054 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6055 					iDevSoundState = EStatePlaying;
       
  6056 					}
       
  6057 				else
       
  6058 					{
       
  6059 					INFO_PRINTF1(_L("Calling CMMFDevSound::Stop succeeded"));
       
  6060 					StopTest(aError);
       
  6061 					}
       
  6062 				}
       
  6063 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6064 				{
       
  6065 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6066 				StopTest(aError);
       
  6067 				}
       
  6068 			else
       
  6069 				{
       
  6070 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6071 				StopTest(aError, EFail);
       
  6072 				}
       
  6073 			break;
       
  6074 			}
       
  6075 		case EStatePlaying:
       
  6076 			{
       
  6077 			if(aDevSoundEvent == EEventTimerComplete)
       
  6078 				{
       
  6079 				INFO_PRINTF1(_L("Calling CMMFDevSound::Stop"));
       
  6080 				iMMFDevSound->Stop();
       
  6081 				}
       
  6082 			else
       
  6083 				{
       
  6084 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6085 				StopTest(aError, EFail);
       
  6086 				}
       
  6087 			break;
       
  6088 			}
       
  6089 		default:
       
  6090 			{
       
  6091 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  6092 			StopTest(aError, EFail);
       
  6093 			}
       
  6094 		}
       
  6095 	
       
  6096 	}
       
  6097 
       
  6098 void RA3FDevSoundTonePlayToneOnceAndStopTest::DoTimerCallback()
       
  6099 	{
       
  6100 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6101 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6102 	if(!iToneStopped)
       
  6103 		{
       
  6104 		Fsm(EEventTimerComplete, KErrNone); 
       
  6105 		iToneStopped = ETrue;
       
  6106 		}
       
  6107 	else
       
  6108 		{
       
  6109 		iTimer->Cancel();
       
  6110 		INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6111 		TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6112 		if (err != KErrNone)
       
  6113 			{
       
  6114 			ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6115 			ERR_PRINTF2(_L("Expected error = %d"), KErrNone);
       
  6116 			StopTest(err);
       
  6117 			}
       
  6118 		INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6119 		iDevSoundState = EStateInitializing;
       
  6120 		}
       
  6121 	}
       
  6122 
       
  6123 void RA3FDevSoundTonePlayToneOnceAndStopTest::ToneFinished(TInt aError)
       
  6124 	{
       
  6125 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6126 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
       
  6127 	StopTest(aError, EFail);
       
  6128 	}
       
  6129 
       
  6130 
       
  6131 /*
       
  6132  *========================================================================================================
       
  6133  * MM-A3F-DEVSOUND-CHRTZ-TONE-0044
       
  6134  */
       
  6135 RA3FDevSoundTonePlayDualToneOnceAndStopTest::RA3FDevSoundTonePlayDualToneOnceAndStopTest(const TDesC& aTestName)
       
  6136 	:	RA3FDevSoundTestBase(aTestName), 
       
  6137 		iDuration(0), iFrequencyTone1(0),
       
  6138 		iFrequencyTone2(0), iToneStopped(EFalse)
       
  6139 	{
       
  6140 	}
       
  6141 
       
  6142 RA3FDevSoundTonePlayDualToneOnceAndStopTest* RA3FDevSoundTonePlayDualToneOnceAndStopTest::NewL(const TDesC& aTestName)
       
  6143 	{
       
  6144 	RA3FDevSoundTonePlayDualToneOnceAndStopTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneOnceAndStopTest(aTestName);
       
  6145 	return self;
       
  6146 	}
       
  6147 
       
  6148 void RA3FDevSoundTonePlayDualToneOnceAndStopTest::DoKickoffTestL()
       
  6149 	{
       
  6150 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  6151 		{
       
  6152 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  6153 		StopTest(KErrNotFound);
       
  6154 		return;
       
  6155 		}
       
  6156 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  6157 		{
       
  6158 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  6159 		StopTest(KErrNotFound);
       
  6160 		return;
       
  6161 		}
       
  6162 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  6163 		{
       
  6164 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  6165 		StopTest(KErrNotFound);
       
  6166 		return;
       
  6167 		}
       
  6168 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6169 	}
       
  6170 
       
  6171 void RA3FDevSoundTonePlayDualToneOnceAndStopTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6172 	{
       
  6173 	switch (iDevSoundState)
       
  6174 		{
       
  6175 		case EStateCreated:
       
  6176 			{
       
  6177 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneOnceAndStopTest"), EFsmIncorrectErrorPassed));
       
  6178 			if (aDevSoundEvent == EEventInitialize)
       
  6179 				{
       
  6180 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6181 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6182 				if (err != KErrNone)
       
  6183 					{
       
  6184 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6185 					StopTest(err);
       
  6186 					break;
       
  6187 					}
       
  6188 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6189 				iDevSoundState = EStateInitializing;
       
  6190 				}
       
  6191 			else
       
  6192 				{
       
  6193 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6194 				StopTest(aError, EFail);
       
  6195 				}
       
  6196 			break;
       
  6197 			}
       
  6198 		case EStateInitializing:
       
  6199 			{
       
  6200 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6201 				{
       
  6202 				if (!iToneStopped)
       
  6203 					{
       
  6204 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6205 					INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  6206 					TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  6207 					if (err != KErrNone)
       
  6208 						{
       
  6209 						ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error = %d!"),  err);
       
  6210 						StopTest(err);
       
  6211 						break;
       
  6212 						}
       
  6213 					StartTimer(KMicroSecsTwoSec);
       
  6214 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6215 					iDevSoundState = EStatePlaying;
       
  6216 					}
       
  6217 				else
       
  6218 					{
       
  6219 					INFO_PRINTF1(_L("Calling CMMFDevSound::Stop succeeded"));
       
  6220 					StopTest(aError);
       
  6221 					}
       
  6222 				}
       
  6223 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6224 				{
       
  6225 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6226 				StopTest(aError);	
       
  6227 				}
       
  6228 			else
       
  6229 				{
       
  6230 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6231 				StopTest(aError, EFail);
       
  6232 				}
       
  6233 			break;
       
  6234 			}
       
  6235 		case EStatePlaying:
       
  6236 			{
       
  6237 			if(aDevSoundEvent == EEventTimerComplete)
       
  6238 				{
       
  6239 				INFO_PRINTF1(_L("Calling CMMFDevSound::Stop"));
       
  6240 				iMMFDevSound->Stop();
       
  6241 				}
       
  6242 			else
       
  6243 				{
       
  6244 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6245 				StopTest(aError, EFail);
       
  6246 				}
       
  6247 			break;
       
  6248 			}
       
  6249 		default:
       
  6250 			{
       
  6251 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  6252 			StopTest(aError, EFail);
       
  6253 			}
       
  6254 		}
       
  6255 	}
       
  6256 
       
  6257 void RA3FDevSoundTonePlayDualToneOnceAndStopTest::DoTimerCallback()
       
  6258 	{
       
  6259 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6260 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6261 	if(!iToneStopped)
       
  6262 		{
       
  6263 		Fsm(EEventTimerComplete, KErrNone); 
       
  6264 		iToneStopped = ETrue;
       
  6265 		}
       
  6266 	else
       
  6267 		{
       
  6268 		iTimer->Cancel();
       
  6269 		INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6270 		TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6271 		if (err != KErrNone)
       
  6272 			{
       
  6273 			ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6274 			ERR_PRINTF2(_L("Expected error = %d"), KErrNone);
       
  6275 			StopTest(err);
       
  6276 			}
       
  6277 		INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6278 		iDevSoundState = EStateInitializing;
       
  6279 		}
       
  6280 	}
       
  6281 
       
  6282 void RA3FDevSoundTonePlayDualToneOnceAndStopTest::ToneFinished(TInt aError)
       
  6283 	{
       
  6284 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6285 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
       
  6286 	StopTest(aError, EFail);
       
  6287 	}
       
  6288 
       
  6289 /*
       
  6290  *========================================================================================================
       
  6291  * MM-A3F-DEVSOUND-CHRTZ-TONE-0045
       
  6292  */
       
  6293 RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::RA3FDevSoundTonePlayDTMFStringOnceAndStopTest(const TDesC& aTestName)
       
  6294 	:	RA3FDevSoundTestBase(aTestName),iDTMFString(KNullDesC),
       
  6295 		iToneStopped(EFalse)
       
  6296 	{
       
  6297 	}
       
  6298 
       
  6299 RA3FDevSoundTonePlayDTMFStringOnceAndStopTest* RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::NewL(const TDesC& aTestName)
       
  6300 	{
       
  6301 	RA3FDevSoundTonePlayDTMFStringOnceAndStopTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringOnceAndStopTest(aTestName);
       
  6302 	return self;
       
  6303 	}
       
  6304 
       
  6305 void RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::DoKickoffTestL()
       
  6306 	{
       
  6307 	TPtrC DTMF;
       
  6308 	if ( !GetStringFromConfig(iTestStepName, KDTMFString, DTMF) )
       
  6309 		{
       
  6310 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  6311 		StopTest(KErrNotFound);
       
  6312 		return;
       
  6313 		}
       
  6314 	iDTMFString.Copy(DTMF);
       
  6315 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6316 	}
       
  6317 
       
  6318 void RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6319 	{
       
  6320 	switch(iDevSoundState)
       
  6321 		{		
       
  6322 		case EStateCreated:
       
  6323 			{
       
  6324 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFStringOnceAndStopTest"), EFsmIncorrectErrorPassed));
       
  6325 			if (aDevSoundEvent == EEventInitialize)
       
  6326 				{
       
  6327 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6328 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6329 				if (err != KErrNone)
       
  6330 					{
       
  6331 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  6332 					StopTest(err);
       
  6333 					break;
       
  6334 					}
       
  6335 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6336 				iDevSoundState = EStateInitializing;
       
  6337 				}
       
  6338 			else
       
  6339 				{
       
  6340 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6341 				StopTest(aError, EFail);
       
  6342 				}
       
  6343 			break;
       
  6344 			}
       
  6345 		case EStateInitializing:
       
  6346 			{
       
  6347 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6348 				{
       
  6349 				if (!iToneStopped)
       
  6350 					{
       
  6351 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6352 					INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  6353 					TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  6354 					if (err != KErrNone)
       
  6355 						{
       
  6356 						ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
       
  6357 						StopTest(err);
       
  6358 						break;
       
  6359 						}
       
  6360 					StartTimer(KMicroSecsTwoSec);
       
  6361 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6362 					iDevSoundState = EStatePlaying;
       
  6363 					}
       
  6364 				else
       
  6365 					{
       
  6366 					INFO_PRINTF1(_L("Calling CMMFDevSound::Stop succeeded"));
       
  6367 					StopTest(aError);
       
  6368 					}
       
  6369 				}
       
  6370 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6371 				{
       
  6372 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6373 				StopTest(aError);
       
  6374 				}
       
  6375 			else
       
  6376 				{
       
  6377 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6378 				StopTest(aError, EFail);
       
  6379 				}
       
  6380 			break;
       
  6381 			}
       
  6382 		case EStatePlaying:
       
  6383 			{
       
  6384 			if(aDevSoundEvent == EEventTimerComplete)
       
  6385 				{
       
  6386 				INFO_PRINTF1(_L("Calling CMMFDevSound::Stop"));
       
  6387 				iMMFDevSound->Stop();
       
  6388 				}
       
  6389 			else
       
  6390 				{
       
  6391 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6392 				StopTest(aError, EFail);
       
  6393 				}
       
  6394 			break;
       
  6395 			}
       
  6396 		default:
       
  6397 			{
       
  6398 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  6399 			StopTest(aError, EFail);
       
  6400 			}
       
  6401 		}
       
  6402 	}
       
  6403 
       
  6404 void RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::DoTimerCallback()
       
  6405 	{
       
  6406 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6407 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6408 	if(!iToneStopped)
       
  6409 		{
       
  6410 		Fsm(EEventTimerComplete, KErrNone); 
       
  6411 		iToneStopped = ETrue;
       
  6412 		}
       
  6413 	else
       
  6414 		{
       
  6415 		iTimer->Cancel();
       
  6416 		INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6417 		TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6418 		if (err != KErrNone)
       
  6419 			{
       
  6420 			ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6421 			ERR_PRINTF2(_L("Expected error = %d"), KErrNone);
       
  6422 			StopTest(err);
       
  6423 			}
       
  6424 		INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6425 		iDevSoundState = EStateInitializing;
       
  6426 		}
       
  6427 	}
       
  6428 
       
  6429 void RA3FDevSoundTonePlayDTMFStringOnceAndStopTest::ToneFinished(TInt aError)
       
  6430 	{
       
  6431 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6432 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
       
  6433 	StopTest(aError, EFail);
       
  6434 	}
       
  6435 /*
       
  6436  *========================================================================================================
       
  6437  * MM-A3F-DEVSOUND-CHRTZ-TONE-0046
       
  6438  */
       
  6439 RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::RA3FDevSoundTonePlayToneSequenceOnceAndStopTest(const TDesC& aTestName)
       
  6440 	:	RA3FDevSoundTestBase(aTestName), iToneStopped(EFalse)
       
  6441 	{
       
  6442 	}
       
  6443 
       
  6444 RA3FDevSoundTonePlayToneSequenceOnceAndStopTest* RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::NewL(const TDesC& aTestName)
       
  6445 	{
       
  6446 	RA3FDevSoundTonePlayToneSequenceOnceAndStopTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceOnceAndStopTest(aTestName);
       
  6447 	return self;
       
  6448 	}
       
  6449 
       
  6450 void RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::DoKickoffTestL()
       
  6451 	{
       
  6452 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6453 	}
       
  6454 
       
  6455 void RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6456 	{
       
  6457 	switch (iDevSoundState)
       
  6458 		{
       
  6459 		case EStateCreated:
       
  6460 			{
       
  6461 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceOnceAndStopTest"), EFsmIncorrectErrorPassed));
       
  6462 			if (aDevSoundEvent == EEventInitialize)
       
  6463 				{
       
  6464 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6465 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6466 				if (err != KErrNone)
       
  6467 					{
       
  6468 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6469 					StopTest(err);
       
  6470 					break;
       
  6471 					}
       
  6472 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6473 				iDevSoundState = EStateInitializing;
       
  6474 				}
       
  6475 			else
       
  6476 				{
       
  6477 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6478 				StopTest(aError, EFail);
       
  6479 				}
       
  6480 			break;
       
  6481 			}
       
  6482 		case EStateInitializing:
       
  6483 			{
       
  6484 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6485 				{
       
  6486 				if (!iToneStopped)
       
  6487 					{
       
  6488 					iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6489 					TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0])); 
       
  6490 					TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceDataX));
       
  6491 					INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  6492 					TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  6493 					if (err != KErrNone)
       
  6494 						{
       
  6495 						ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with error = %d!"), err);
       
  6496 						StopTest(err);
       
  6497 						break;
       
  6498 						}
       
  6499 					StartTimer(KMicroSecsTwoSec);
       
  6500 					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6501 					iDevSoundState = EStatePlaying;
       
  6502 					}
       
  6503 				else
       
  6504 					{
       
  6505 					INFO_PRINTF1(_L("Calling CMMFDevSound::Stop succeeded"));
       
  6506 					StopTest(aError);
       
  6507 					}
       
  6508 				
       
  6509 				}
       
  6510 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6511 				{
       
  6512 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6513 				StopTest(aError);	
       
  6514 				}
       
  6515 			else
       
  6516 				{
       
  6517 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6518 				StopTest(aError, EFail);
       
  6519 				}
       
  6520 			break;
       
  6521 			}
       
  6522 		case EStatePlaying:
       
  6523 			{
       
  6524 			if(aDevSoundEvent == EEventTimerComplete)
       
  6525 				{
       
  6526 				INFO_PRINTF1(_L("Calling CMMFDevSound::Stop"));
       
  6527 				iMMFDevSound->Stop();
       
  6528 				}
       
  6529 			else
       
  6530 				{
       
  6531 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6532 				StopTest(aError, EFail);
       
  6533 				}
       
  6534 			break;
       
  6535 			}
       
  6536 		default:
       
  6537 			{
       
  6538 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"),  iDevSoundState);
       
  6539 			StopTest(aError, EFail);
       
  6540 			}
       
  6541 		}
       
  6542 	}
       
  6543 
       
  6544 void RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::DoTimerCallback()
       
  6545 	{
       
  6546 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6547 	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6548 	if(!iToneStopped)
       
  6549 		{
       
  6550 		Fsm(EEventTimerComplete, KErrNone); 
       
  6551 		iToneStopped = ETrue;
       
  6552 		}
       
  6553 	else
       
  6554 		{
       
  6555 		iTimer->Cancel();
       
  6556 		INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6557 		TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6558 		if (err != KErrNone)
       
  6559 			{
       
  6560 			ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6561 			ERR_PRINTF2(_L("Expected error = %d"), KErrNone);
       
  6562 			StopTest(err);
       
  6563 			}
       
  6564 		INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6565 		iDevSoundState = EStateInitializing;
       
  6566 		}
       
  6567 	}
       
  6568 
       
  6569 void RA3FDevSoundTonePlayToneSequenceOnceAndStopTest::ToneFinished(TInt aError)
       
  6570 	{
       
  6571 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6572 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
       
  6573 	StopTest(aError, EFail);
       
  6574 	}
       
  6575 
       
  6576 /*
       
  6577  *========================================================================================================
       
  6578  * MM-A3F-DEVSOUND-CHRTZ-TONE-0047
       
  6579  */
       
  6580 RA3FDevSoundTonePlayToneOncePauseTest::RA3FDevSoundTonePlayToneOncePauseTest(const TDesC& aTestName)
       
  6581 	:	RA3FDevSoundTestBase(aTestName),iDuration(0),
       
  6582 		iFrequencyTone1(0), iPaused(EFalse),
       
  6583 		iSamplesPlayedPaused(0)
       
  6584 	{
       
  6585 	}
       
  6586 
       
  6587 RA3FDevSoundTonePlayToneOncePauseTest* RA3FDevSoundTonePlayToneOncePauseTest::NewL(const TDesC& aTestName)
       
  6588 	{
       
  6589 	RA3FDevSoundTonePlayToneOncePauseTest * self = new(ELeave)RA3FDevSoundTonePlayToneOncePauseTest(aTestName);
       
  6590 	return self;
       
  6591 	}
       
  6592 
       
  6593 void RA3FDevSoundTonePlayToneOncePauseTest::DoKickoffTestL()
       
  6594 	{
       
  6595 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  6596 		{
       
  6597 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  6598 		StopTest(KErrNotFound);
       
  6599 		return;
       
  6600 		}
       
  6601 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  6602 		{
       
  6603 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  6604 		StopTest(KErrNotFound);
       
  6605 		return;
       
  6606 		}
       
  6607 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6608 	}
       
  6609 
       
  6610 void RA3FDevSoundTonePlayToneOncePauseTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  6611 	{
       
  6612 	switch (iDevSoundState)
       
  6613 		{
       
  6614 		case EStateCreated:
       
  6615 			{
       
  6616 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneOncePauseTest"), EFsmIncorrectErrorPassed));
       
  6617 			if (aDevSoundEvent == EEventInitialize)
       
  6618 				{
       
  6619 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6620 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6621 				if (err != KErrNone)
       
  6622 					{
       
  6623 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  6624 					StopTest(err);
       
  6625 					break;
       
  6626 					}
       
  6627 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6628 				iDevSoundState = EStateInitializing;
       
  6629 				}
       
  6630 			else
       
  6631 				{
       
  6632 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6633 				StopTest(aError, EFail);
       
  6634 				}
       
  6635 			break;
       
  6636 			}
       
  6637 		case EStateInitializing:
       
  6638 			{
       
  6639 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6640 				{
       
  6641 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6642 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
       
  6643 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  6644 				if (err != KErrNone)
       
  6645 					{
       
  6646 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d!"),  err);
       
  6647 					StopTest(err);
       
  6648 					break;
       
  6649 					}
       
  6650 				StartTimer(KMicroSecsTwoSec);
       
  6651 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6652 				iDevSoundState = EStatePlaying;
       
  6653 				}
       
  6654 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6655 				{
       
  6656 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6657 				StopTest(aError);
       
  6658 				}
       
  6659 			else
       
  6660 				{
       
  6661 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"),  aDevSoundEvent);
       
  6662 				StopTest(aError, EFail);
       
  6663 				}
       
  6664 			break;
       
  6665 			}
       
  6666 		case EStatePlaying:
       
  6667 			{
       
  6668 			if(aDevSoundEvent == EEventTimerComplete)
       
  6669 				{
       
  6670 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  6671 				iMMFDevSound->Pause();
       
  6672 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  6673 				iDevSoundState = EStatePause;
       
  6674 				INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
       
  6675 				iSamplesPlayedPaused = iMMFDevSound->SamplesPlayed();
       
  6676 				INFO_PRINTF2(_L("The number of samples played is %d"), iSamplesPlayedPaused);
       
  6677 				}
       
  6678 			else
       
  6679 				{
       
  6680 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6681 				StopTest(aError, EFail);
       
  6682 				}
       
  6683 			break;
       
  6684 			}
       
  6685 		case EStatePause:
       
  6686 			{
       
  6687 			if (aDevSoundEvent == EEventTimerComplete)
       
  6688 				{
       
  6689 				TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
       
  6690 				if(iSamplesPlayedPaused == samplesPlayed)
       
  6691 					{
       
  6692 					INFO_PRINTF2(_L("After waiting a couple of seconds, the samples played are still being the same %d"), iSamplesPlayedPaused);
       
  6693 					StopTest();
       
  6694 					}
       
  6695 				else
       
  6696 					{
       
  6697 					ERR_PRINTF2(_L("After waiting a couple of seconds, the samples played are not the same %d"), samplesPlayed);
       
  6698 					ERR_PRINTF2(_L("Expected samples played = %d"), iSamplesPlayedPaused);
       
  6699 					StopTest(aError,EFail);
       
  6700 					}
       
  6701 				}
       
  6702 			else
       
  6703 				{
       
  6704 				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6705 				StopTest(aError, EFail);
       
  6706 				}
       
  6707 			break;
       
  6708 			}
       
  6709 		default:
       
  6710 			{
       
  6711 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  6712 			StopTest(aError, EFail);
       
  6713 			}
       
  6714 		}
       
  6715 	}
       
  6716 
       
  6717 void RA3FDevSoundTonePlayToneOncePauseTest::DoTimerCallback()
       
  6718 	{
       
  6719 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6720 	if (!iPaused)
       
  6721 		{
       
  6722 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6723 		Fsm(EEventTimerComplete, KErrNone);
       
  6724 		iPaused = ETrue;
       
  6725 		}
       
  6726 	else
       
  6727 		{
       
  6728 		iTimer->Cancel();
       
  6729 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6730 		Fsm(EEventTimerComplete, KErrNone);
       
  6731 		}
       
  6732 	}
       
  6733 
       
  6734 void RA3FDevSoundTonePlayToneOncePauseTest::ToneFinished(TInt aError)
       
  6735 	{
       
  6736 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6737 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused"));
       
  6738 	StopTest(aError, EFail);
       
  6739 	}
       
  6740 
       
  6741 /*
       
  6742  *========================================================================================================
       
  6743  * MM-A3F-DEVSOUND-CHRTZ-TONE-0048
       
  6744  */
       
  6745 RA3FDevSoundTonePlayDualToneOncePauseTest::RA3FDevSoundTonePlayDualToneOncePauseTest(const TDesC& aTestName)
       
  6746 	:	RA3FDevSoundTestBase(aTestName), 
       
  6747 		iDuration(0),iFrequencyTone1(0),
       
  6748 		iFrequencyTone2(0), iPaused(EFalse),
       
  6749 		iSamplesPlayedPaused(0)
       
  6750 	{
       
  6751 	}
       
  6752 
       
  6753 RA3FDevSoundTonePlayDualToneOncePauseTest* RA3FDevSoundTonePlayDualToneOncePauseTest::NewL(const TDesC& aTestName)
       
  6754 	{
       
  6755 	RA3FDevSoundTonePlayDualToneOncePauseTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneOncePauseTest(aTestName);
       
  6756 	return self;
       
  6757 	}
       
  6758 
       
  6759 void RA3FDevSoundTonePlayDualToneOncePauseTest::DoKickoffTestL()
       
  6760 	{
       
  6761 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  6762 		{
       
  6763 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  6764 		StopTest(KErrNotFound);
       
  6765 		return;
       
  6766 		}
       
  6767 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  6768 		{
       
  6769 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  6770 		StopTest(KErrNotFound);
       
  6771 		return;
       
  6772 		}
       
  6773 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  6774 		{
       
  6775 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  6776 		StopTest(KErrNotFound);
       
  6777 		return;
       
  6778 		}
       
  6779 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6780 	}
       
  6781 
       
  6782 void RA3FDevSoundTonePlayDualToneOncePauseTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6783 	{
       
  6784 	switch (iDevSoundState)
       
  6785 		{
       
  6786 		case EStateCreated:
       
  6787 			{
       
  6788 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneOncePauseTest"), EFsmIncorrectErrorPassed));
       
  6789 			if (aDevSoundEvent == EEventInitialize)
       
  6790 				{
       
  6791 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6792 				TRAPD(err, iMMFDevSound->InitializeL(*this,  EMMFStateTonePlaying));
       
  6793 				if (err != KErrNone)
       
  6794 					{
       
  6795 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  6796 					StopTest(err);
       
  6797 					break;
       
  6798 					}
       
  6799 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6800 				iDevSoundState = EStateInitializing;
       
  6801 				}
       
  6802 			else
       
  6803 				{
       
  6804 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6805 				StopTest(aError, EFail);
       
  6806 				}
       
  6807 			break;
       
  6808 			}
       
  6809 		case EStateInitializing:
       
  6810 			{
       
  6811 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6812 				{
       
  6813 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6814 				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  6815 				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  6816 				if (err != KErrNone)
       
  6817 					{
       
  6818 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error : %d!"),  err);
       
  6819 					StopTest(err);
       
  6820 					break;
       
  6821 					}
       
  6822 				StartTimer(KMicroSecsTwoSec);
       
  6823 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6824 				iDevSoundState = EStatePlaying;
       
  6825 				}
       
  6826 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  6827 				{
       
  6828 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  6829 				StopTest(aError);
       
  6830 				}
       
  6831 			else
       
  6832 				{
       
  6833 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6834 				StopTest(aError, EFail);
       
  6835 				}
       
  6836 			break;
       
  6837 			}
       
  6838 		case EStatePlaying:
       
  6839 			{
       
  6840 			if(aDevSoundEvent == EEventTimerComplete)
       
  6841 				{
       
  6842 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  6843 				iMMFDevSound->Pause();
       
  6844 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  6845 				iDevSoundState = EStatePause;
       
  6846 				INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
       
  6847 				iSamplesPlayedPaused = iMMFDevSound->SamplesPlayed();
       
  6848 				INFO_PRINTF2(_L("The number of samples played is %d"), iSamplesPlayedPaused);
       
  6849 				StopTest();
       
  6850 				}
       
  6851 			else
       
  6852 				{
       
  6853 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6854 				StopTest(aError, EFail);
       
  6855 				}
       
  6856 			break;
       
  6857 			}
       
  6858 		case EStatePause:
       
  6859 			{
       
  6860 			if (aDevSoundEvent == EEventTimerComplete)
       
  6861 				{
       
  6862 				TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
       
  6863 				if(iSamplesPlayedPaused == samplesPlayed)
       
  6864 					{
       
  6865 					INFO_PRINTF2(_L("After waiting a couple of seconds, the samples played are still being the same %d"), iSamplesPlayedPaused);
       
  6866 					StopTest();
       
  6867 					}
       
  6868 				else
       
  6869 					{
       
  6870 					ERR_PRINTF2(_L("After waiting a couple of seconds, the samples played are not the same %d"), samplesPlayed);
       
  6871 					ERR_PRINTF2(_L("Expected samples played = %d"), iSamplesPlayedPaused);
       
  6872 					StopTest(aError,EFail);
       
  6873 					}
       
  6874 				}
       
  6875 			else
       
  6876 				{
       
  6877 				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  6878 				StopTest(aError, EFail);
       
  6879 				}
       
  6880 			break;
       
  6881 			}
       
  6882 		default:
       
  6883 			{
       
  6884 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  6885 			StopTest(aError, EFail);
       
  6886 			}
       
  6887 		}
       
  6888 	}
       
  6889 
       
  6890 void RA3FDevSoundTonePlayDualToneOncePauseTest::DoTimerCallback()
       
  6891 	{
       
  6892 	INFO_PRINTF1(_L("TimerEvent called"));
       
  6893 	if (!iPaused)
       
  6894 		{
       
  6895 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6896 		Fsm(EEventTimerComplete, KErrNone);
       
  6897 		iPaused = ETrue;
       
  6898 		}
       
  6899 	else
       
  6900 		{
       
  6901 		iTimer->Cancel();
       
  6902 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  6903 		Fsm(EEventTimerComplete, KErrNone);
       
  6904 		}
       
  6905 	}
       
  6906 
       
  6907 void RA3FDevSoundTonePlayDualToneOncePauseTest::ToneFinished(TInt aError)
       
  6908 	{
       
  6909 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  6910 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused"));
       
  6911 	StopTest(aError, EFail);
       
  6912 	}
       
  6913 
       
  6914 /*
       
  6915  *========================================================================================================
       
  6916  * MM-A3F-DEVSOUND-CHRTZ-TONE-0049
       
  6917  */
       
  6918 RA3FDevSoundTonePlayDTMFStringOncePauseTest::RA3FDevSoundTonePlayDTMFStringOncePauseTest(const TDesC& aTestName)
       
  6919 	:	RA3FDevSoundTestBase(aTestName), 
       
  6920 		iDTMFString(KNullDesC),iPaused(EFalse),
       
  6921 		iSamplesPlayedPaused(0),iDTMFPauses(0),
       
  6922 		iDTMFTones(0)
       
  6923 	{
       
  6924 	}
       
  6925 
       
  6926 RA3FDevSoundTonePlayDTMFStringOncePauseTest* RA3FDevSoundTonePlayDTMFStringOncePauseTest::NewL(const TDesC& aTestName)
       
  6927 	{
       
  6928 	RA3FDevSoundTonePlayDTMFStringOncePauseTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringOncePauseTest(aTestName);
       
  6929 	return self;
       
  6930 	}
       
  6931 
       
  6932 void RA3FDevSoundTonePlayDTMFStringOncePauseTest::DoKickoffTestL()
       
  6933 	{
       
  6934 	TPtrC DTMF;
       
  6935 	if ( !GetStringFromConfig(iTestStepName, KDTMFString, DTMF) )
       
  6936 		{
       
  6937 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  6938 		StopTest(KErrNotFound);
       
  6939 		return;
       
  6940 		}
       
  6941 	iDTMFString.Copy(DTMF);
       
  6942 	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
       
  6943 		{
       
  6944 		if (iDTMFString[i] == ',')
       
  6945 			{
       
  6946 			iDTMFPauses++;
       
  6947 			}
       
  6948 		else
       
  6949 			{
       
  6950 			iDTMFTones++;
       
  6951 			}
       
  6952 		}
       
  6953 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  6954 	}
       
  6955 
       
  6956 void RA3FDevSoundTonePlayDTMFStringOncePauseTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  6957 	{
       
  6958 	switch (iDevSoundState)
       
  6959 		{		
       
  6960 		case EStateCreated:
       
  6961 			{
       
  6962 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFStringOncePauseTest"), EFsmIncorrectErrorPassed));
       
  6963 			if (aDevSoundEvent == EEventInitialize)
       
  6964 				{
       
  6965 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  6966 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  6967 				if (err != KErrNone)
       
  6968 					{
       
  6969 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  6970 					StopTest(err);
       
  6971 					break;
       
  6972 					}
       
  6973 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  6974 				iDevSoundState = EStateInitializing;
       
  6975 				}
       
  6976 			else
       
  6977 				{
       
  6978 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  6979 				StopTest(aError, EFail);
       
  6980 				}
       
  6981 			break;
       
  6982 			}
       
  6983 		case EStateInitializing:
       
  6984 			{
       
  6985 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  6986 				{
       
  6987 				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
       
  6988 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"),  &iDTMFString);
       
  6989 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  6990 				if (err != KErrNone)
       
  6991 					{
       
  6992 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"),  err);
       
  6993 					StopTest(err);
       
  6994 					}
       
  6995 				StartTimer(KMicroSecsTwoSec);
       
  6996 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  6997 				iDevSoundState = EStatePlaying;
       
  6998 				}
       
  6999 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7000 				{
       
  7001 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7002 				StopTest(aError);
       
  7003 				}
       
  7004 			else
       
  7005 				{
       
  7006 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7007 				StopTest(aError, EFail);
       
  7008 				}
       
  7009 			break;
       
  7010 			}
       
  7011 		case EStatePlaying:
       
  7012 			{
       
  7013 			if(aDevSoundEvent == EEventTimerComplete)
       
  7014 				{
       
  7015 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  7016 				iMMFDevSound->Pause();
       
  7017 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  7018 				iDevSoundState = EStatePause;
       
  7019 				INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
       
  7020 				iSamplesPlayedPaused = iMMFDevSound->SamplesPlayed();
       
  7021 				INFO_PRINTF2(_L("The number of samples played is %d"), iSamplesPlayedPaused);
       
  7022 				}
       
  7023 			else
       
  7024 				{
       
  7025 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7026 				StopTest(aError, EFail);
       
  7027 				}
       
  7028 			break;
       
  7029 			}
       
  7030 		case EStatePause:
       
  7031 			{
       
  7032 			if (aDevSoundEvent == EEventTimerComplete)
       
  7033 				{
       
  7034 				TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
       
  7035 				if(iSamplesPlayedPaused == samplesPlayed)
       
  7036 					{
       
  7037 					INFO_PRINTF2(_L("After waiting a couple of seconds, the samples played are still being the same %d"), iSamplesPlayedPaused);
       
  7038 					StopTest();
       
  7039 					}
       
  7040 				else
       
  7041 					{
       
  7042 					ERR_PRINTF2(_L("After waiting a couple of seconds, the samples played are not the same %d"), samplesPlayed);
       
  7043 					ERR_PRINTF2(_L("Expected samples played = %d"), iSamplesPlayedPaused);
       
  7044 					StopTest(aError,EFail);
       
  7045 					}
       
  7046 				}
       
  7047 			else
       
  7048 				{
       
  7049 				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7050 				StopTest(aError, EFail);
       
  7051 				}
       
  7052 			break;
       
  7053 			}
       
  7054 		default:
       
  7055 			{
       
  7056 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7057 			StopTest(aError, EFail);
       
  7058 			}
       
  7059 		}
       
  7060 	}
       
  7061 
       
  7062 void RA3FDevSoundTonePlayDTMFStringOncePauseTest::DoTimerCallback()
       
  7063 	{
       
  7064 	INFO_PRINTF1(_L("TimerEvent called"));
       
  7065 	if (!iPaused)
       
  7066 		{
       
  7067 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  7068 		Fsm(EEventTimerComplete, KErrNone);
       
  7069 		iPaused = ETrue;
       
  7070 		}
       
  7071 	else
       
  7072 		{
       
  7073 		iTimer->Cancel();
       
  7074 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  7075 		Fsm(EEventTimerComplete, KErrNone);
       
  7076 		}
       
  7077 	}
       
  7078 
       
  7079 void RA3FDevSoundTonePlayDTMFStringOncePauseTest::ToneFinished(TInt aError)
       
  7080 	{
       
  7081 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  7082 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused"));
       
  7083 	StopTest(aError, EFail);
       
  7084 	}
       
  7085 
       
  7086 /*
       
  7087  *========================================================================================================
       
  7088  * MM-A3F-DEVSOUND-CHRTZ-TONE-0050
       
  7089  */
       
  7090 RA3FDevSoundTonePlayToneSequenceOncePauseTest::RA3FDevSoundTonePlayToneSequenceOncePauseTest(const TDesC& aTestName)
       
  7091 	:	RA3FDevSoundTestBase(aTestName), iPaused(EFalse),
       
  7092 		iSamplesPlayedPaused(0)
       
  7093 	{
       
  7094 	}
       
  7095 
       
  7096 RA3FDevSoundTonePlayToneSequenceOncePauseTest* RA3FDevSoundTonePlayToneSequenceOncePauseTest::NewL(const TDesC& aTestName)
       
  7097 	{
       
  7098 	RA3FDevSoundTonePlayToneSequenceOncePauseTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceOncePauseTest(aTestName);
       
  7099 	return self;
       
  7100 	}
       
  7101 
       
  7102 void RA3FDevSoundTonePlayToneSequenceOncePauseTest::DoKickoffTestL()
       
  7103 	{
       
  7104 	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
       
  7105 	}
       
  7106 
       
  7107 void RA3FDevSoundTonePlayToneSequenceOncePauseTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7108 	{
       
  7109 	switch(iDevSoundState)
       
  7110 		{
       
  7111 		case EStateCreated:
       
  7112 			{
       
  7113 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceOncePauseTest"), EFsmIncorrectErrorPassed));
       
  7114 			if (aDevSoundEvent == EEventInitialize)
       
  7115 				{
       
  7116 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
       
  7117 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  7118 				if (err != KErrNone)
       
  7119 					{
       
  7120 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7121 					StopTest(err);
       
  7122 					break;
       
  7123 					}
       
  7124 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7125 				iDevSoundState = EStateInitializing;
       
  7126 				}
       
  7127 			else
       
  7128 				{
       
  7129 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7130 				StopTest(aError, EFail);
       
  7131 				}
       
  7132 			break;
       
  7133 			}
       
  7134 		case EStateInitializing:
       
  7135 			{
       
  7136 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7137 				{
       
  7138 				TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] ) ); 
       
  7139 				TPtrC8 KFixedSequenceData(tablePointer, sizeof(KFixedSequenceTestSequenceDataX));
       
  7140 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  7141 				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  7142 				if (err != KErrNone)
       
  7143 					{
       
  7144 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left  with error : %d!"),  err);
       
  7145 					StopTest(err);
       
  7146 					break;
       
  7147 					}
       
  7148 				StartTimer(KMicroSecsTwoSec);
       
  7149 				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
       
  7150 				iDevSoundState = EStatePlaying;
       
  7151 				}
       
  7152 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7153 				{
       
  7154 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7155 				StopTest(aError);	
       
  7156 				}
       
  7157 			else
       
  7158 				{
       
  7159 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7160 				StopTest(aError, EFail);
       
  7161 				}
       
  7162 			break;
       
  7163 			}
       
  7164 		case EStatePlaying:
       
  7165 			{
       
  7166 			if(aDevSoundEvent == EEventTimerComplete)
       
  7167 				{
       
  7168 				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
       
  7169 				iMMFDevSound->Pause();
       
  7170 				INFO_PRINTF1(_L("DevSound State: EStatePause"));
       
  7171 				iDevSoundState = EStatePause;
       
  7172 				INFO_PRINTF1(_L("Calling CMMFDevSound::SamplesPlayed"));
       
  7173 				iSamplesPlayedPaused = iMMFDevSound->SamplesPlayed();
       
  7174 				INFO_PRINTF2(_L("The number of samples played is %d"), iSamplesPlayedPaused);
       
  7175 				}
       
  7176 			else
       
  7177 				{
       
  7178 				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7179 				StopTest(aError, EFail);
       
  7180 				}
       
  7181 			break;
       
  7182 			}
       
  7183 		case EStatePause:
       
  7184 			{
       
  7185 			if (aDevSoundEvent == EEventTimerComplete)
       
  7186 				{
       
  7187 				TInt samplesPlayed = iMMFDevSound->SamplesPlayed();
       
  7188 				if(iSamplesPlayedPaused == samplesPlayed)
       
  7189 					{
       
  7190 					INFO_PRINTF2(_L("After waiting a couple of seconds, the samples played are still being the same %d"), iSamplesPlayedPaused);
       
  7191 					StopTest();
       
  7192 					}
       
  7193 				else
       
  7194 					{
       
  7195 					ERR_PRINTF2(_L("After waiting a couple of seconds, the samples played are not the same %d"), samplesPlayed);
       
  7196 					ERR_PRINTF2(_L("Expected samples played = %d"), iSamplesPlayedPaused);
       
  7197 					StopTest(aError,EFail);
       
  7198 					}
       
  7199 				}
       
  7200 			else
       
  7201 				{
       
  7202 				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7203 				StopTest(aError, EFail);
       
  7204 				}
       
  7205 			break;
       
  7206 			}
       
  7207 		default:
       
  7208 			{
       
  7209 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7210 			StopTest(aError, EFail);
       
  7211 			}
       
  7212 		}
       
  7213 	}
       
  7214 
       
  7215 void RA3FDevSoundTonePlayToneSequenceOncePauseTest::DoTimerCallback()
       
  7216 	{
       
  7217 	INFO_PRINTF1(_L("TimerEvent called"));
       
  7218 	if (!iPaused)
       
  7219 		{
       
  7220 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  7221 		Fsm(EEventTimerComplete, KErrNone);
       
  7222 		iPaused = ETrue;
       
  7223 		}
       
  7224 	else
       
  7225 		{
       
  7226 		iTimer->Cancel();
       
  7227 		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
       
  7228 		Fsm(EEventTimerComplete, KErrNone);
       
  7229 		}
       
  7230 	}
       
  7231 
       
  7232 void RA3FDevSoundTonePlayToneSequenceOncePauseTest::ToneFinished(TInt aError)
       
  7233 	{
       
  7234 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  7235 	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to be paused"));
       
  7236 	StopTest(aError, EFail);
       
  7237 	}
       
  7238 
       
  7239 /*
       
  7240  *========================================================================================================
       
  7241  * MM-A3F-DEVSOUND-CHRTZ-TONE-0051
       
  7242  */
       
  7243 RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest::RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest(const TDesC& aTestName)
       
  7244 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  7245 		iFrequencyTone1(0)
       
  7246 	{
       
  7247 	}
       
  7248 
       
  7249 RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest* RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest::NewL(const TDesC& aTestName)
       
  7250 	{
       
  7251 	RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest * self = new(ELeave)RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest(aTestName);
       
  7252 	return self;
       
  7253 	}
       
  7254 
       
  7255 void RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest::DoKickoffTestL()
       
  7256 	{
       
  7257 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  7258 		{
       
  7259 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  7260 		StopTest(KErrNotFound);
       
  7261 		return;
       
  7262 		}
       
  7263 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  7264 		{
       
  7265 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  7266 		StopTest(KErrNotFound);
       
  7267 		return;
       
  7268 		}
       
  7269 	}
       
  7270 
       
  7271 void RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7272 	{
       
  7273 	switch (iDevSoundState)
       
  7274 		{
       
  7275 		case EStateCreated:
       
  7276 			{
       
  7277 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneOnceInitializedToPlayAudioTest"), EFsmIncorrectErrorPassed));
       
  7278 			if (aDevSoundEvent == EEventInitialize)
       
  7279 				{
       
  7280 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL for playing audio files"));
       
  7281 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStatePlaying));
       
  7282 				if (err != KErrNone)
       
  7283 					{
       
  7284 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7285 					StopTest(err);
       
  7286 					break;
       
  7287 					}
       
  7288 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7289 				iDevSoundState = EStateInitializing;
       
  7290 				}
       
  7291 			else
       
  7292 				{
       
  7293 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7294 				StopTest(aError,  EFail);
       
  7295 				}
       
  7296 			break;
       
  7297 			}
       
  7298 		case EStateInitializing:
       
  7299 			{
       
  7300 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7301 				{
       
  7302 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs"), iFrequencyTone1, iDuration);
       
  7303 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  7304 				if (err	== KErrNotSupported)
       
  7305 					{
       
  7306 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with KErrNotSupported %d which is the expected error"), err);
       
  7307 					StopTest();
       
  7308 					}
       
  7309 				else
       
  7310 					{
       
  7311 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d"), err);
       
  7312 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7313 					StopTest(err, EFail);
       
  7314 					}
       
  7315 				}
       
  7316 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7317 				{
       
  7318 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7319 				StopTest(aError);
       
  7320 				}
       
  7321 			else
       
  7322 				{
       
  7323 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7324 				StopTest(aError, EFail);
       
  7325 				}
       
  7326 			break;
       
  7327 			}
       
  7328 		default:
       
  7329 			{
       
  7330 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7331 			StopTest(aError, EFail);
       
  7332 			}
       
  7333 		}
       
  7334 	}
       
  7335 
       
  7336 /*
       
  7337  *========================================================================================================
       
  7338  * MM-A3F-DEVSOUND-CHRTZ-TONE-0052
       
  7339  */
       
  7340 RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest::RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest(const TDesC& aTestName)
       
  7341 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  7342 		iFrequencyTone1(0), iFrequencyTone2(0)
       
  7343 	{
       
  7344 	}
       
  7345 
       
  7346 RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest* RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest::NewL(const TDesC& aTestName)
       
  7347 	{
       
  7348 	RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest(aTestName);
       
  7349 	return self;
       
  7350 	}
       
  7351 
       
  7352 void RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest::DoKickoffTestL()
       
  7353 	{
       
  7354 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  7355 		{
       
  7356 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  7357 		StopTest(KErrNotFound);
       
  7358 		return;
       
  7359 		}
       
  7360 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  7361 		{
       
  7362 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  7363 		StopTest(KErrNotFound);
       
  7364 		return;
       
  7365 		}
       
  7366 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  7367 		{
       
  7368 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  7369 		StopTest(KErrNotFound);
       
  7370 		return;
       
  7371 		}
       
  7372 	}
       
  7373 
       
  7374 void RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7375 	{
       
  7376 	switch(iDevSoundState)
       
  7377 		{		
       
  7378 		case EStateCreated:
       
  7379 			{
       
  7380 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneOnceInitializedToPlayAudioTest"), EFsmIncorrectErrorPassed));
       
  7381 			if (aDevSoundEvent == EEventInitialize)
       
  7382 				{
       
  7383 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL for playing audio files"));
       
  7384 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStatePlaying));
       
  7385 				if (err != KErrNone)
       
  7386 					{
       
  7387 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7388 					StopTest(err);
       
  7389 					break;
       
  7390 					}
       
  7391 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7392 				iDevSoundState = EStateInitializing;
       
  7393 				}
       
  7394 			else
       
  7395 				{
       
  7396 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7397 				StopTest(aError, EFail);
       
  7398 				}
       
  7399 			break;
       
  7400 			}
       
  7401 		case EStateInitializing:
       
  7402 			{
       
  7403 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7404 				{
       
  7405 				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  7406 				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  7407 				if (err	== KErrNotSupported)
       
  7408 					{
       
  7409 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with KErrNotSupported %d which is the expected error"), err);
       
  7410 					StopTest(err, EPass);
       
  7411 					}
       
  7412 				else
       
  7413 					{
       
  7414 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error = %d"), err);
       
  7415 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7416 					StopTest(err, EFail);
       
  7417 					}
       
  7418 				}
       
  7419 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7420 				{
       
  7421 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7422 				StopTest(aError);
       
  7423 				}
       
  7424 			else
       
  7425 				{
       
  7426 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7427 				StopTest(aError, EFail);
       
  7428 				}
       
  7429 			break;
       
  7430 			}
       
  7431 		default:
       
  7432 			{
       
  7433 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7434 			StopTest(aError, EFail);
       
  7435 			}
       
  7436 		}
       
  7437 	}
       
  7438 
       
  7439 /*
       
  7440  *========================================================================================================
       
  7441  * MM-A3F-DEVSOUND-CHRTZ-TONE-0053
       
  7442  */
       
  7443 RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest::RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest(const TDesC& aTestName)
       
  7444 	:	RA3FDevSoundTestBase(aTestName), iDTMFString(KNullDesC)
       
  7445 	{
       
  7446 	}
       
  7447 
       
  7448 RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest* RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest::NewL(const TDesC& aTestName)
       
  7449 	{
       
  7450 	RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest(aTestName);
       
  7451 	return self;
       
  7452 	}
       
  7453 
       
  7454 void RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest::DoKickoffTestL()
       
  7455 	{
       
  7456 	TPtrC DTMF;
       
  7457 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  7458 		{
       
  7459 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  7460 		StopTest(KErrNotFound);
       
  7461 		return;
       
  7462 		}
       
  7463 	iDTMFString.Copy(DTMF);
       
  7464 	}
       
  7465 
       
  7466 void RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7467 	{
       
  7468 	switch(iDevSoundState)
       
  7469 	{		
       
  7470 		case EStateCreated:
       
  7471 			{
       
  7472 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFStringOnceInitializedToPlayAudioTest"), EFsmIncorrectErrorPassed));
       
  7473 			if (aDevSoundEvent == EEventInitialize)
       
  7474 				{
       
  7475 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL for playing audio files"));
       
  7476 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStatePlaying));
       
  7477 				if (err != KErrNone)
       
  7478 					{
       
  7479 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7480 					StopTest(err);
       
  7481 					break;
       
  7482 					}
       
  7483 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7484 				iDevSoundState = EStateInitializing;
       
  7485 				}
       
  7486 			else
       
  7487 				{
       
  7488 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7489 				StopTest(aError, EFail);
       
  7490 				}
       
  7491 			break;
       
  7492 			}
       
  7493 		case EStateInitializing:
       
  7494 			{
       
  7495 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7496 				{
       
  7497 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S "), &iDTMFString);
       
  7498 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  7499 				if (err	== KErrNotSupported)
       
  7500 					{
       
  7501 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with KErrNotSupported %d which is the expected error"), err);
       
  7502 					StopTest();
       
  7503 					}
       
  7504 				else
       
  7505 					{
       
  7506 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
       
  7507 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7508 					StopTest(err, EFail);
       
  7509 					}
       
  7510 				}
       
  7511 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7512 				{
       
  7513 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7514 				StopTest(aError);
       
  7515 				}
       
  7516 			else
       
  7517 				{
       
  7518 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7519 				StopTest(aError, EFail);
       
  7520 				}
       
  7521 			break;
       
  7522 			}
       
  7523 		default:
       
  7524 			{
       
  7525 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7526 			StopTest(aError, EFail);
       
  7527 			}
       
  7528 		}
       
  7529 	}
       
  7530 
       
  7531 /*
       
  7532  *========================================================================================================
       
  7533  * MM-A3F-DEVSOUND-CHRTZ-TONE-0054
       
  7534  */
       
  7535 RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest::RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest(const TDesC& aTestName)
       
  7536 	:	RA3FDevSoundTestBase(aTestName)
       
  7537 	{
       
  7538 	}
       
  7539 
       
  7540 RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest* RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest::NewL(const TDesC& aTestName)
       
  7541 	{
       
  7542 	RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest(aTestName);
       
  7543 	return self;
       
  7544 	}
       
  7545 void RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest::DoKickoffTestL()
       
  7546 	{
       
  7547 	}
       
  7548 
       
  7549 void RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  7550 	{
       
  7551 	switch(iDevSoundState)
       
  7552 		{
       
  7553 		case EStateCreated:
       
  7554 			{
       
  7555 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceOnceInitializedToPlayAudioTest"), EFsmIncorrectErrorPassed));
       
  7556 			if (aDevSoundEvent == EEventInitialize)
       
  7557 				{
       
  7558 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL for playing audio files"));
       
  7559 				TRAPD(err, iMMFDevSound->InitializeL(*this,  EMMFStatePlaying));
       
  7560 				if (err != KErrNone)
       
  7561 					{
       
  7562 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7563 					StopTest(err);
       
  7564 					break;
       
  7565 					}
       
  7566 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7567 				iDevSoundState = EStateInitializing;
       
  7568 				}
       
  7569 			else
       
  7570 				{
       
  7571 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7572 				StopTest(aError, EFail);
       
  7573 				}
       
  7574 			break;
       
  7575 			}
       
  7576 		case EStateInitializing:
       
  7577 			{
       
  7578 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7579 				{
       
  7580 				TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] ) ); 
       
  7581 				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceDataX));
       
  7582 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  7583 				TRAPD(err,  iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  7584 				if (err == KErrNotSupported)
       
  7585 					{
       
  7586 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with KErrNotSupported %d which is the expected error"), err);
       
  7587 					StopTest(err, EPass);
       
  7588 					}
       
  7589 				else
       
  7590 					{
       
  7591 					ERR_PRINTF2(_L("Play  dual tone failed with error = %d"),  err);
       
  7592 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7593 					StopTest(err, EFail);
       
  7594 					}
       
  7595 				}	
       
  7596 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7597 				{
       
  7598 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7599 				StopTest(aError);
       
  7600 				}
       
  7601 			else
       
  7602 				{
       
  7603 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7604 				StopTest(aError, EFail);
       
  7605 				}
       
  7606 			break;
       
  7607 			}
       
  7608 		default:
       
  7609 			{
       
  7610 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7611 			StopTest(aError, EFail);
       
  7612 			}
       
  7613 		}
       
  7614 	}
       
  7615 
       
  7616 /*
       
  7617  *========================================================================================================
       
  7618  * MM-A3F-DEVSOUND-CHRTZ-TONE-0055
       
  7619  */
       
  7620 RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest::RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest(const TDesC& aTestName)
       
  7621 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  7622 		iFrequencyTone1(0)
       
  7623 	{
       
  7624 	}
       
  7625 
       
  7626 RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest* RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest::NewL(const TDesC& aTestName)
       
  7627 	{
       
  7628 	RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest * self = new(ELeave)RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest(aTestName);
       
  7629 	return self;
       
  7630 	}
       
  7631 
       
  7632 void RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest::DoKickoffTestL()
       
  7633 	{
       
  7634 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  7635 		{
       
  7636 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  7637 		StopTest(KErrNotFound);
       
  7638 		return;
       
  7639 		}
       
  7640 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  7641 		{
       
  7642 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  7643 		StopTest(KErrNotFound);
       
  7644 		return;
       
  7645 		}
       
  7646 	}
       
  7647 
       
  7648 void RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7649 	{
       
  7650 	switch (iDevSoundState)
       
  7651 		{
       
  7652 		case EStateCreated:
       
  7653 			{
       
  7654 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneOnceInitializedToRecordAudioTest"), EFsmIncorrectErrorPassed));
       
  7655 			if (aDevSoundEvent == EEventInitialize)
       
  7656 				{
       
  7657 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL for recording audio files"));
       
  7658 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
       
  7659 				if (err != KErrNone)
       
  7660 					{
       
  7661 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7662 					StopTest(err);
       
  7663 					break;
       
  7664 					}
       
  7665 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7666 				iDevSoundState = EStateInitializing;
       
  7667 				}
       
  7668 			else
       
  7669 				{
       
  7670 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7671 				StopTest(aError,  EFail);
       
  7672 				}
       
  7673 			break;
       
  7674 			}
       
  7675 		case EStateInitializing:
       
  7676 			{
       
  7677 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7678 				{
       
  7679 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs"), iFrequencyTone1, iDuration);
       
  7680 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  7681 				if (err	== KErrNotSupported)
       
  7682 					{
       
  7683 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with KErrNotSupported %d which is the expected error"), err);
       
  7684 					StopTest();
       
  7685 					}
       
  7686 				else
       
  7687 					{
       
  7688 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d"), err);
       
  7689 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7690 					StopTest(err, EFail);
       
  7691 					}
       
  7692 				}
       
  7693 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7694 				{
       
  7695 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7696 				StopTest(aError);
       
  7697 				}
       
  7698 			else
       
  7699 				{
       
  7700 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7701 				StopTest(aError, EFail);
       
  7702 				}
       
  7703 			break;
       
  7704 			}
       
  7705 		default:
       
  7706 			{
       
  7707 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7708 			StopTest(aError, EFail);
       
  7709 			}
       
  7710 		}
       
  7711 	}
       
  7712 
       
  7713 /*
       
  7714  *========================================================================================================
       
  7715  * MM-A3F-DEVSOUND-CHRTZ-TONE-0056
       
  7716  */
       
  7717 RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest::RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest(const TDesC& aTestName)
       
  7718 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  7719 		iFrequencyTone1(0), iFrequencyTone2(0)
       
  7720 	{
       
  7721 	}
       
  7722 
       
  7723 RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest* RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest::NewL(const TDesC& aTestName)
       
  7724 	{
       
  7725 	RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest(aTestName);
       
  7726 	return self;
       
  7727 	}
       
  7728 
       
  7729 void RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest::DoKickoffTestL()
       
  7730 	{
       
  7731 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  7732 		{
       
  7733 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  7734 		StopTest(KErrNotFound);
       
  7735 		return;
       
  7736 		}
       
  7737 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  7738 		{
       
  7739 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  7740 		StopTest(KErrNotFound);
       
  7741 		return;
       
  7742 		}
       
  7743 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  7744 		{
       
  7745 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  7746 		StopTest(KErrNotFound);
       
  7747 		return;
       
  7748 		}
       
  7749 	}
       
  7750 
       
  7751 void RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7752 	{
       
  7753 	switch(iDevSoundState)
       
  7754 		{		
       
  7755 		case EStateCreated:
       
  7756 			{
       
  7757 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneOnceInitializedToRecordAudioTest"), EFsmIncorrectErrorPassed));
       
  7758 			if (aDevSoundEvent == EEventInitialize)
       
  7759 				{
       
  7760 				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL for recording audio files"));
       
  7761 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
       
  7762 				if (err != KErrNone)
       
  7763 					{
       
  7764 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7765 					StopTest(err);
       
  7766 					break;
       
  7767 					}
       
  7768 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7769 				iDevSoundState = EStateInitializing;
       
  7770 				}
       
  7771 			else
       
  7772 				{
       
  7773 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7774 				StopTest(aError, EFail);
       
  7775 				}
       
  7776 			break;
       
  7777 			}
       
  7778 		case EStateInitializing:
       
  7779 			{
       
  7780 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7781 				{
       
  7782 				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  7783 				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  7784 				if (err	== KErrNotSupported)
       
  7785 					{
       
  7786 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with KErrNotSupported %d which is the expected error"), err);
       
  7787 					StopTest(err, EPass);
       
  7788 					}
       
  7789 				else
       
  7790 					{
       
  7791 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error = %d"), err);
       
  7792 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7793 					StopTest(err, EFail);
       
  7794 					}
       
  7795 				}
       
  7796 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7797 				{
       
  7798 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7799 				StopTest(aError);
       
  7800 				}
       
  7801 			else
       
  7802 				{
       
  7803 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7804 				StopTest(aError, EFail);
       
  7805 				}
       
  7806 			break;
       
  7807 			}
       
  7808 		default:
       
  7809 			{
       
  7810 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7811 			StopTest(aError, EFail);
       
  7812 			}
       
  7813 		}
       
  7814 	}
       
  7815 
       
  7816 /*
       
  7817  *========================================================================================================
       
  7818  * MM-A3F-DEVSOUND-CHRTZ-TONE-0057
       
  7819  */
       
  7820 RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest::RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest(const TDesC& aTestName)
       
  7821 	:	RA3FDevSoundTestBase(aTestName), iDTMFString(KNullDesC)
       
  7822 	{
       
  7823 	}
       
  7824 
       
  7825 RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest* RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest::NewL(const TDesC& aTestName)
       
  7826 	{
       
  7827 	RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest(aTestName);
       
  7828 	return self;
       
  7829 	}
       
  7830 
       
  7831 void RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest::DoKickoffTestL()
       
  7832 	{
       
  7833 	TPtrC DTMF;
       
  7834 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  7835 		{
       
  7836 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  7837 		StopTest(KErrNotFound);
       
  7838 		return;
       
  7839 		}
       
  7840 	iDTMFString.Copy(DTMF);
       
  7841 	}
       
  7842 
       
  7843 void RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  7844 	{
       
  7845 	switch(iDevSoundState)
       
  7846 	{		
       
  7847 		case EStateCreated:
       
  7848 			{
       
  7849 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFStringOnceInitializedToRecordAudioTest"), EFsmIncorrectErrorPassed));
       
  7850 			if (aDevSoundEvent == EEventInitialize)
       
  7851 				{
       
  7852 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL for recording audio files"));
       
  7853 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
       
  7854 				if (err != KErrNone)
       
  7855 					{
       
  7856 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7857 					StopTest(err);
       
  7858 					break;
       
  7859 					}
       
  7860 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7861 				iDevSoundState = EStateInitializing;
       
  7862 				}
       
  7863 			else
       
  7864 				{
       
  7865 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7866 				StopTest(aError, EFail);
       
  7867 				}
       
  7868 			break;
       
  7869 			}
       
  7870 		case EStateInitializing:
       
  7871 			{
       
  7872 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7873 				{
       
  7874 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S "), &iDTMFString);
       
  7875 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  7876 				if (err	== KErrNotSupported)
       
  7877 					{
       
  7878 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with KErrNotSupported %d which is the expected error"), err);
       
  7879 					StopTest();
       
  7880 					}
       
  7881 				else
       
  7882 					{
       
  7883 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
       
  7884 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7885 					StopTest(err, EFail);
       
  7886 					}
       
  7887 				}
       
  7888 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7889 				{
       
  7890 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7891 				StopTest(aError);
       
  7892 				}
       
  7893 			else
       
  7894 				{
       
  7895 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7896 				StopTest(aError, EFail);
       
  7897 				}
       
  7898 			break;
       
  7899 			}
       
  7900 		default:
       
  7901 			{
       
  7902 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7903 			StopTest(aError, EFail);
       
  7904 			}
       
  7905 		}
       
  7906 	}
       
  7907 
       
  7908 /*
       
  7909  *========================================================================================================
       
  7910  * MM-A3F-DEVSOUND-CHRTZ-TONE-0058
       
  7911  */
       
  7912 RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest::RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest(const TDesC& aTestName)
       
  7913 	:	RA3FDevSoundTestBase(aTestName)
       
  7914 	{
       
  7915 	}
       
  7916 
       
  7917 RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest* RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest::NewL(const TDesC& aTestName)
       
  7918 	{
       
  7919 	RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest(aTestName);
       
  7920 	return self;
       
  7921 	}
       
  7922 void RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest::DoKickoffTestL()
       
  7923 	{
       
  7924 	}
       
  7925 
       
  7926 void RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  7927 	{
       
  7928 	switch(iDevSoundState)
       
  7929 		{
       
  7930 		case EStateCreated:
       
  7931 			{
       
  7932 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceOnceInitializedToRecordAudioTest"), EFsmIncorrectErrorPassed));
       
  7933 			if (aDevSoundEvent == EEventInitialize)
       
  7934 				{
       
  7935 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL for playing audio files"));
       
  7936 				TRAPD(err, iMMFDevSound->InitializeL(*this,  EMMFStateRecording));
       
  7937 				if (err != KErrNone)
       
  7938 					{
       
  7939 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
       
  7940 					StopTest(err);
       
  7941 					break;
       
  7942 					}
       
  7943 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  7944 				iDevSoundState = EStateInitializing;
       
  7945 				}
       
  7946 			else
       
  7947 				{
       
  7948 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  7949 				StopTest(aError, EFail);
       
  7950 				}
       
  7951 			break;
       
  7952 			}
       
  7953 		case EStateInitializing:
       
  7954 			{
       
  7955 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  7956 				{
       
  7957 				TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] ) ); 
       
  7958 				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceDataX));
       
  7959 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  7960 				TRAPD(err,  iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  7961 				if (err == KErrNotSupported)
       
  7962 					{
       
  7963 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with KErrNotSupported %d which is the expected error"), err);
       
  7964 					StopTest(err, EPass);
       
  7965 					}
       
  7966 				else
       
  7967 					{
       
  7968 					ERR_PRINTF2(_L("Play  dual tone failed with error = %d"),  err);
       
  7969 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotSupported);
       
  7970 					StopTest(err, EFail);
       
  7971 					}
       
  7972 				}	
       
  7973 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  7974 				{
       
  7975 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  7976 				StopTest(aError);
       
  7977 				}
       
  7978 			else
       
  7979 				{
       
  7980 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  7981 				StopTest(aError, EFail);
       
  7982 				}
       
  7983 			break;
       
  7984 			}
       
  7985 		default:
       
  7986 			{
       
  7987 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  7988 			StopTest(aError, EFail);
       
  7989 			}
       
  7990 		}
       
  7991 	}
       
  7992 
       
  7993 /*
       
  7994  *========================================================================================================
       
  7995  * MM-A3F-DEVSOUND-CHRTZ-TONE-0059
       
  7996  */
       
  7997 RA3FDevSoundTonePlayToneWithoutCallingInitializeTest::RA3FDevSoundTonePlayToneWithoutCallingInitializeTest(const TDesC& aTestName)
       
  7998 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  7999 		iFrequencyTone1(0)
       
  8000 	{
       
  8001 	}
       
  8002 
       
  8003 RA3FDevSoundTonePlayToneWithoutCallingInitializeTest* RA3FDevSoundTonePlayToneWithoutCallingInitializeTest::NewL(const TDesC& aTestName)
       
  8004 	{
       
  8005 	RA3FDevSoundTonePlayToneWithoutCallingInitializeTest * self = new(ELeave)RA3FDevSoundTonePlayToneWithoutCallingInitializeTest(aTestName);
       
  8006 	return self;
       
  8007 	}
       
  8008 
       
  8009 void RA3FDevSoundTonePlayToneWithoutCallingInitializeTest::DoKickoffTestL()
       
  8010 	{
       
  8011 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  8012 		{
       
  8013 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  8014 		StopTest(KErrNotFound);
       
  8015 		return;
       
  8016 		}
       
  8017 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  8018 		{
       
  8019 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  8020 		StopTest(KErrNotFound);
       
  8021 		return;
       
  8022 		}
       
  8023 	}
       
  8024 
       
  8025 void RA3FDevSoundTonePlayToneWithoutCallingInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  8026 	{
       
  8027 	switch (iDevSoundState)
       
  8028 		{
       
  8029 		case EStateCreated:
       
  8030 			{
       
  8031 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneWithoutCallingInitializeTest"), EFsmIncorrectErrorPassed));
       
  8032 			if (aDevSoundEvent == EEventInitialize)
       
  8033 				{
       
  8034 				INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs"), iFrequencyTone1, iDuration);
       
  8035 				TRAPD(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
       
  8036 				if (err	== KErrNotReady)
       
  8037 					{
       
  8038 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with KErrNotReady %d which is the expected error"), err);
       
  8039 					StopTest();
       
  8040 					}
       
  8041 				else
       
  8042 					{
       
  8043 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d"), err);
       
  8044 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
       
  8045 					StopTest(err, EFail);
       
  8046 					}
       
  8047 				}
       
  8048 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  8049 				{
       
  8050 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  8051 				StopTest(aError);	
       
  8052 				}
       
  8053 			else
       
  8054 				{
       
  8055 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  8056 				StopTest(aError, EFail);
       
  8057 				}
       
  8058 			break;
       
  8059 			}
       
  8060 		default:
       
  8061 			{
       
  8062 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"),  iDevSoundState);
       
  8063 			StopTest(aError, EFail);
       
  8064 			}
       
  8065 		}
       
  8066 	}
       
  8067 
       
  8068 /*
       
  8069  *========================================================================================================
       
  8070  * MM-A3F-DEVSOUND-CHRTZ-TONE-0060
       
  8071  */
       
  8072 RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest::RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest(const TDesC& aTestName)
       
  8073 	:	RA3FDevSoundTestBase(aTestName), iDuration(0),
       
  8074 		iFrequencyTone1(0), iFrequencyTone2(0)
       
  8075 	{
       
  8076 	}
       
  8077 
       
  8078 RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest* RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest::NewL(const TDesC& aTestName)
       
  8079 	{
       
  8080 	RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest * self = new(ELeave)RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest(aTestName);
       
  8081 	return self;
       
  8082 	}
       
  8083 
       
  8084 void RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest::DoKickoffTestL()
       
  8085 	{
       
  8086 	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
       
  8087 		{
       
  8088 		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
       
  8089 		StopTest(KErrNotFound);
       
  8090 		return;
       
  8091 		}
       
  8092 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
       
  8093 		{
       
  8094 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
       
  8095 		StopTest(KErrNotFound);
       
  8096 		return;
       
  8097 		}
       
  8098 	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
       
  8099 		{
       
  8100 		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
       
  8101 		StopTest(KErrNotFound);
       
  8102 		return;
       
  8103 		}
       
  8104 	}
       
  8105 
       
  8106 void RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  8107 	{
       
  8108 	switch (iDevSoundState)
       
  8109 		{
       
  8110 		case EStateCreated:
       
  8111 			{
       
  8112 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDualToneWithoutCallingInitializeTest"), EFsmIncorrectErrorPassed));
       
  8113 			if (aDevSoundEvent == EEventInitialize)
       
  8114 				{
       
  8115 				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
       
  8116 				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
       
  8117 				if (err == KErrNotReady)
       
  8118 					{
       
  8119 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with KErrNotReady %d which is the expected error"), err);
       
  8120 					StopTest();
       
  8121 					}
       
  8122 				else
       
  8123 					{
       
  8124 					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error = %d"), err);
       
  8125 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
       
  8126 					StopTest(err, EFail);
       
  8127 					}
       
  8128 				}
       
  8129 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  8130 				{
       
  8131 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  8132 				StopTest(aError);	
       
  8133 				}
       
  8134 			else
       
  8135 				{
       
  8136 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  8137 				StopTest(aError, EFail);
       
  8138 				}
       
  8139 			break;
       
  8140 			}
       
  8141 		default:
       
  8142 			{
       
  8143 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  8144 			StopTest(aError, EFail);
       
  8145 			}
       
  8146 		}
       
  8147 	}
       
  8148 
       
  8149 /*
       
  8150  *========================================================================================================
       
  8151  * MM-A3F-DEVSOUND-CHRTZ-TONE-0061
       
  8152  */
       
  8153 RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest::RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest(const TDesC& aTestName)
       
  8154 	:	RA3FDevSoundTestBase(aTestName), iDTMFString(KNullDesC)
       
  8155 	{
       
  8156 	}
       
  8157 
       
  8158 RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest* RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest::NewL(const TDesC& aTestName)
       
  8159 	{
       
  8160 	RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest(aTestName);
       
  8161 	return self;
       
  8162 	}
       
  8163 
       
  8164 void RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest::DoKickoffTestL()
       
  8165 	{
       
  8166 	TPtrC DTMF;
       
  8167 	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
       
  8168 		{
       
  8169 		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
       
  8170 		StopTest(KErrNotFound);
       
  8171 		return;
       
  8172 		}
       
  8173 	iDTMFString.Copy(DTMF);
       
  8174 	}
       
  8175 
       
  8176 void RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  8177 	{
       
  8178 	switch (iDevSoundState)
       
  8179 		{
       
  8180 		case EStateCreated:
       
  8181 			{
       
  8182 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest"), EFsmIncorrectErrorPassed));
       
  8183 			if (aDevSoundEvent == EEventInitialize)
       
  8184 				{
       
  8185 				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
       
  8186 				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
       
  8187 				if (err == KErrNotReady)
       
  8188 					{
       
  8189 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with KErrNotReady %d which is the expected error"), err);
       
  8190 					StopTest();
       
  8191 					}
       
  8192 				else
       
  8193 					{
       
  8194 					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
       
  8195 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
       
  8196 					StopTest(err, EFail);
       
  8197 					}
       
  8198 				}
       
  8199 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  8200 				{
       
  8201 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  8202 				StopTest(aError);	
       
  8203 				}
       
  8204 			else
       
  8205 				{
       
  8206 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  8207 				StopTest(aError, EFail);
       
  8208 				}
       
  8209 			break;
       
  8210 			}
       
  8211 		default:
       
  8212 			{
       
  8213 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  8214 			StopTest(aError, EFail);
       
  8215 			}
       
  8216 		}
       
  8217 	}
       
  8218 
       
  8219 /*
       
  8220  *========================================================================================================
       
  8221  * MM-A3F-DEVSOUND-CHRTZ-TONE-0062
       
  8222  */
       
  8223 RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest::RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest(const TDesC& aTestName)
       
  8224 	:	RA3FDevSoundTestBase(aTestName)
       
  8225 	{
       
  8226 	}
       
  8227 
       
  8228 RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest* RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest::NewL(const TDesC& aTestName)
       
  8229 	{
       
  8230 	RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest(aTestName);
       
  8231 	return self;
       
  8232 	}
       
  8233 
       
  8234 void RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest::DoKickoffTestL()
       
  8235 	{
       
  8236 	}
       
  8237 
       
  8238 void RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
       
  8239 	{
       
  8240 	switch (iDevSoundState)
       
  8241 		{
       
  8242 		case EStateCreated:
       
  8243 			{
       
  8244 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest"), EFsmIncorrectErrorPassed));
       
  8245 			if (aDevSoundEvent == EEventInitialize)
       
  8246 				{
       
  8247 				TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] ) ); 
       
  8248 				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceDataX));
       
  8249 				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
       
  8250 				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
       
  8251 				if (err == KErrNotReady)
       
  8252 					{
       
  8253 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with KErrNotReady %d which is the expected error"), err);
       
  8254 					StopTest();
       
  8255 					}
       
  8256 				else
       
  8257 					{
       
  8258 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with error = %d"), err);
       
  8259 					ERR_PRINTF2(_L("Expected error = %d"), KErrNotReady);
       
  8260 					StopTest(err, EFail);
       
  8261 					}
       
  8262 				}
       
  8263 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  8264 				{
       
  8265 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  8266 				StopTest(aError);	
       
  8267 				}
       
  8268 			else
       
  8269 				{
       
  8270 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  8271 				StopTest(aError, EFail);
       
  8272 				}
       
  8273 			break;
       
  8274 			}
       
  8275 		default:
       
  8276 			{
       
  8277 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  8278 			StopTest(aError, EFail);
       
  8279 			}
       
  8280 		}
       
  8281 	}
       
  8282 
       
  8283 /*
       
  8284  *========================================================================================================
       
  8285  * MM-A3F-DEVSOUND-CHRTZ-TONE-0063
       
  8286  */
       
  8287 RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest(const TDesC& aTestName)
       
  8288 	:	RA3FDevSoundTestBase(aTestName), iInvalidToneSequence(KNullDesC8)
       
  8289 	{
       
  8290 	}
       
  8291 
       
  8292 RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest* RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::NewL(const TDesC& aTestName)
       
  8293 	{
       
  8294 	RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest * self = new(ELeave)RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest(aTestName);
       
  8295 	return self;
       
  8296 	}
       
  8297 
       
  8298 void RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::DoKickoffTestL()
       
  8299 	{
       
  8300 	TPtrC TS;
       
  8301 	if ( !GetStringFromConfig(iTestStepName, KInvalidToneSequence,  TS) )
       
  8302 		{
       
  8303 		ERR_PRINTF2(KMsgErrorGetParameter, &KInvalidToneSequence);
       
  8304 		StopTest(KErrNotFound);
       
  8305 		return;
       
  8306 		}
       
  8307 	iInvalidToneSequence.Copy(TS);
       
  8308 	}
       
  8309 
       
  8310 void RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
       
  8311 	{
       
  8312 	switch (iDevSoundState)
       
  8313 		{
       
  8314 		case EStateCreated:
       
  8315 			{
       
  8316 			__ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest"), EFsmIncorrectErrorPassed));
       
  8317 			if (aDevSoundEvent == EEventInitialize)
       
  8318 				{
       
  8319 				INFO_PRINTF1(_L("Calling iMMFDevSound::InitializeL"));
       
  8320 				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
       
  8321 				if (err != KErrNone)
       
  8322 					{
       
  8323 					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
       
  8324 					StopTest(err);
       
  8325 					break;
       
  8326 					}
       
  8327 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
       
  8328 				iDevSoundState = EStateInitializing;
       
  8329 				}
       
  8330 			else
       
  8331 				{
       
  8332 				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
       
  8333 				StopTest(aError, EFail);
       
  8334 				}
       
  8335 			break;
       
  8336 			}
       
  8337 		case EStateInitializing:
       
  8338 			{
       
  8339 			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
       
  8340 				{				
       
  8341 				INFO_PRINTF1(_L("Calling iMMFDevSound->PlayToneSequenceL with an invalid descriptor as argument"));
       
  8342 				TRAPD(err, iMMFDevSound->PlayToneSequenceL(iInvalidToneSequence));
       
  8343 				if (err != KErrNone)
       
  8344 					{
       
  8345 					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with error = %d and it should not leave"), err);
       
  8346 					StopTest(err, EFail);
       
  8347 					}
       
  8348 				}
       
  8349 			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
       
  8350 				{
       
  8351 				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
       
  8352 				StopTest(aError);	
       
  8353 				}
       
  8354 			else
       
  8355 				{
       
  8356 				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
       
  8357 				StopTest(aError, EFail);
       
  8358 				}
       
  8359 			break;
       
  8360 			}
       
  8361 		default:
       
  8362 			{
       
  8363 			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
       
  8364 			StopTest(aError, EFail);
       
  8365 			}
       
  8366 		}
       
  8367 	}
       
  8368 
       
  8369 void RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::ToneFinished(TInt aError)
       
  8370 	{
       
  8371 	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
       
  8372 	if (aError == KErrCorrupt)
       
  8373 		{
       
  8374 		INFO_PRINTF2(_L("ToneFinished called with KErrCorrupt %d which is the expected error"), aError);
       
  8375 		StopTest();
       
  8376 		}
       
  8377 	else
       
  8378 		{
       
  8379 		ERR_PRINTF3(_L("ToneFinished called with error = %d, when the expected error is = %d"), aError, KErrCorrupt);
       
  8380 		StopTest(aError, EFail);
       
  8381 		}
       
  8382 	}
       
  8383