os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/ACLNT/testoutputstreamtruepause.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
sl@0
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// Part of the TSI_MMFACLNT suite that tests CR1566 (TruePause) on AudioOutputStream
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
/**
sl@0
    19
 @file TestOutputStreamTruePause.cpp
sl@0
    20
*/
sl@0
    21
sl@0
    22
#include "testoutputstreamtruepause.h"
sl@0
    23
sl@0
    24
/*
sl@0
    25
 *
sl@0
    26
 * RMdaOutputStreamTestBase - Test step constructor
sl@0
    27
 *
sl@0
    28
 */
sl@0
    29
RMdaOutputStreamTestBase::RMdaOutputStreamTestBase(const TDesC& aTestName, const TDesC& aSectName)
sl@0
    30
	:	iAudioOutputStreamState(EStateAOSInitial), 
sl@0
    31
		iAudioOutputStream(NULL),
sl@0
    32
		iTimer(NULL),
sl@0
    33
		iWait(EFalse),
sl@0
    34
		iConfig(EFalse),
sl@0
    35
		iInvalidConfig(EFalse),
sl@0
    36
		iGetBytes(EFalse),
sl@0
    37
		iCount(0),
sl@0
    38
		iVolume(0),
sl@0
    39
		iBalance(0),
sl@0
    40
		iDuration(0),
sl@0
    41
		iPause(0),
sl@0
    42
		iBytes(0),
sl@0
    43
		iPosition(0),
sl@0
    44
		iFilename(KNullDesC)
sl@0
    45
	{
sl@0
    46
	iTestStepName = aTestName;
sl@0
    47
	iSectName = aSectName;
sl@0
    48
	}
sl@0
    49
sl@0
    50
/*
sl@0
    51
 *
sl@0
    52
 * ~RMdaOutputStreamTestBase - Test step destructor
sl@0
    53
 *
sl@0
    54
 */
sl@0
    55
RMdaOutputStreamTestBase::~RMdaOutputStreamTestBase()
sl@0
    56
	{
sl@0
    57
	if (iAudioOutputStream)
sl@0
    58
		{
sl@0
    59
		delete iAudioOutputStream;
sl@0
    60
		}
sl@0
    61
	if(iTimer)
sl@0
    62
		{
sl@0
    63
		delete iTimer;
sl@0
    64
		}
sl@0
    65
	iFile.Close();
sl@0
    66
	iFs.Close();
sl@0
    67
	iBuffer.Close();
sl@0
    68
	}
sl@0
    69
sl@0
    70
/*
sl@0
    71
 *
sl@0
    72
 * KickoffTestL - Starts the test
sl@0
    73
 *
sl@0
    74
 */
sl@0
    75
void RMdaOutputStreamTestBase::KickoffTestL()
sl@0
    76
	{
sl@0
    77
	User::LeaveIfError(iFs.Connect());
sl@0
    78
	INFO_PRINTF1(_L("__________  Creating AudioOutputStream object ___________"));
sl@0
    79
sl@0
    80
	TRAPD(err,  iAudioOutputStream = CMdaAudioOutputStream::NewL(*this));
sl@0
    81
	if (err != KErrNone)
sl@0
    82
		{
sl@0
    83
		ERR_PRINTF2(_L("Could not create Tone Utility object. Error = %d"), err);
sl@0
    84
		StopTest(err);
sl@0
    85
		return;
sl@0
    86
		}
sl@0
    87
	INFO_PRINTF1(_L("AudioOutputStream State: EStateCreated"));
sl@0
    88
	iAudioOutputStreamState = EStateAOSCreated;
sl@0
    89
	
sl@0
    90
	DoKickoffTestL();
sl@0
    91
	
sl@0
    92
	INFO_PRINTF1(_L("AudioOutputStream: EEventInitialize"));
sl@0
    93
	Fsm(EEventAOSInitialize, KErrNone);
sl@0
    94
	}
sl@0
    95
sl@0
    96
/*
sl@0
    97
 *
sl@0
    98
 * CloseTest
sl@0
    99
 *
sl@0
   100
 */
sl@0
   101
void RMdaOutputStreamTestBase::CloseTest()
sl@0
   102
	{
sl@0
   103
	INFO_PRINTF1(_L("Deleting AudioOutputStream object"));
sl@0
   104
	delete iAudioOutputStream;
sl@0
   105
	delete iTimer;
sl@0
   106
	}
sl@0
   107
sl@0
   108
/*
sl@0
   109
 *
sl@0
   110
 * StartTimer - Starts timer and timer callback
sl@0
   111
 *
sl@0
   112
 */
sl@0
   113
void RMdaOutputStreamTestBase::StartTimer(TTimeIntervalMicroSeconds32 aWaitTime)
sl@0
   114
	{
sl@0
   115
	TTimeIntervalMicroSeconds32 timeInterval;
sl@0
   116
	
sl@0
   117
	if(aWaitTime <= TTimeIntervalMicroSeconds32(0))
sl@0
   118
		{
sl@0
   119
		timeInterval = KOneSecond;
sl@0
   120
		}
sl@0
   121
	else
sl@0
   122
		{
sl@0
   123
		timeInterval = aWaitTime;
sl@0
   124
		}
sl@0
   125
	TCallBack callback (TimerCallback, this);
sl@0
   126
	iTimer->Start(timeInterval, timeInterval, callback);
sl@0
   127
	INFO_PRINTF1(_L("Timer has been started"));
sl@0
   128
	}
sl@0
   129
sl@0
   130
/*
sl@0
   131
 *
sl@0
   132
 * TimerCallback
sl@0
   133
 *
sl@0
   134
 */
sl@0
   135
TInt RMdaOutputStreamTestBase::TimerCallback(TAny* aPtr)
sl@0
   136
	{
sl@0
   137
	static_cast<RMdaOutputStreamTestBase*>(aPtr)->DoTimerCallback();
sl@0
   138
	return KErrNone;
sl@0
   139
	}
sl@0
   140
sl@0
   141
/*
sl@0
   142
 *
sl@0
   143
 * Fsm - Executes playing events of AudioToneUtility in sequence
sl@0
   144
 *
sl@0
   145
 */
sl@0
   146
void RMdaOutputStreamTestBase::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError)
sl@0
   147
	{
sl@0
   148
	TInt error = 0;
sl@0
   149
	TTimeIntervalMicroSeconds resumeposition;
sl@0
   150
	switch (iAudioOutputStreamState)
sl@0
   151
		{
sl@0
   152
		case EStateAOSCreated:
sl@0
   153
			{
sl@0
   154
			if (aMdaAudioOutputStreamEvent == EEventAOSInitialize)
sl@0
   155
				{
sl@0
   156
				TMdaAudioDataSettings settings;
sl@0
   157
				//Default settings
sl@0
   158
				settings.Query();
sl@0
   159
				settings.iChannels = TMdaAudioDataSettings::EChannelsMono;
sl@0
   160
				settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
sl@0
   161
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open"));
sl@0
   162
				iAudioOutputStream->Open(&settings);
sl@0
   163
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing"));
sl@0
   164
				iAudioOutputStreamState = EStateAOSInitializing;
sl@0
   165
				}
sl@0
   166
			else
sl@0
   167
				{
sl@0
   168
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   169
				StopTest(aError, EFail);
sl@0
   170
				}
sl@0
   171
			break;
sl@0
   172
			}
sl@0
   173
		case EStateAOSInitializing:
sl@0
   174
			{
sl@0
   175
			if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone)
sl@0
   176
				{
sl@0
   177
				INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2"));
sl@0
   178
				iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2);
sl@0
   179
				INFO_PRINTF1(_L("Starting playback"));
sl@0
   180
				iAudioOutputStream->WriteL(iBuffer);
sl@0
   181
				iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   182
				StartTimer(iPause*KOneSecond);
sl@0
   183
				}
sl@0
   184
			else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone)
sl@0
   185
				{
sl@0
   186
				ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError);
sl@0
   187
				StopTest(aError);	
sl@0
   188
				}
sl@0
   189
			else
sl@0
   190
				{
sl@0
   191
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   192
				StopTest(aError, EFail);
sl@0
   193
				}
sl@0
   194
			break;
sl@0
   195
			}
sl@0
   196
		case EStateAOSPlaying:
sl@0
   197
			{
sl@0
   198
			if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
   199
				{
sl@0
   200
				if(!iGetBytes)
sl@0
   201
					{
sl@0
   202
					INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause"));
sl@0
   203
					error = iAudioOutputStream->Pause();
sl@0
   204
					if(error == KErrNone)
sl@0
   205
						{
sl@0
   206
						INFO_PRINTF1(_L("Pause returned with KErrNone as expected"));
sl@0
   207
						}
sl@0
   208
					else
sl@0
   209
						{
sl@0
   210
						ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error);
sl@0
   211
						StopTest(error);
sl@0
   212
						}
sl@0
   213
					iPosition = iAudioOutputStream->Position();
sl@0
   214
					INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64());
sl@0
   215
					INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause"));
sl@0
   216
					iAudioOutputStreamState = EStateAOSPause;
sl@0
   217
					iWait = EFalse;
sl@0
   218
					}
sl@0
   219
				if(iGetBytes)
sl@0
   220
					{
sl@0
   221
					INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause"));
sl@0
   222
					error = iAudioOutputStream->Pause();
sl@0
   223
					if(error == KErrNone)
sl@0
   224
						{
sl@0
   225
						INFO_PRINTF1(_L("Pause returned with KErrNone as expected"));
sl@0
   226
						}
sl@0
   227
					else
sl@0
   228
						{
sl@0
   229
						ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error);
sl@0
   230
						StopTest(error);
sl@0
   231
						}					
sl@0
   232
					INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause"));
sl@0
   233
					iPosition = iAudioOutputStream->Position();
sl@0
   234
					INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64());
sl@0
   235
					INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause"));
sl@0
   236
					iAudioOutputStreamState = EStateAOSPause;
sl@0
   237
					iWait = EFalse;
sl@0
   238
					INFO_PRINTF1(_L("Calling GetBytes"));
sl@0
   239
					iBytes = iAudioOutputStream->GetBytes();
sl@0
   240
					}
sl@0
   241
				}
sl@0
   242
			else
sl@0
   243
				{
sl@0
   244
				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   245
				StopTest(aError, EFail);
sl@0
   246
				}
sl@0
   247
			break;
sl@0
   248
			}
sl@0
   249
		case EStateAOSPause:
sl@0
   250
			{
sl@0
   251
			if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
   252
				{
sl@0
   253
				if(!iWait && !iConfig && !iInvalidConfig && !iGetBytes)
sl@0
   254
					{
sl@0
   255
					if(iPosition == iAudioOutputStream->Position())
sl@0
   256
						{
sl@0
   257
						INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64());
sl@0
   258
						}
sl@0
   259
					else
sl@0
   260
						{
sl@0
   261
						ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64());
sl@0
   262
						StopTest(KErrGeneral);
sl@0
   263
						}
sl@0
   264
					INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume"));
sl@0
   265
					error = iAudioOutputStream->Resume();
sl@0
   266
					resumeposition = iAudioOutputStream->Position();
sl@0
   267
					if(error == KErrNone)
sl@0
   268
						{
sl@0
   269
						INFO_PRINTF1(_L("Resume returned with KErrNone as expected"));
sl@0
   270
						iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   271
						if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2)
sl@0
   272
							{
sl@0
   273
							INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64());
sl@0
   274
							}
sl@0
   275
						else
sl@0
   276
							{
sl@0
   277
							ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64());
sl@0
   278
							StopTest(KErrGeneral);
sl@0
   279
							}
sl@0
   280
						}
sl@0
   281
					else
sl@0
   282
						{
sl@0
   283
						ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error);
sl@0
   284
						StopTest(error);
sl@0
   285
						}
sl@0
   286
					}
sl@0
   287
				else if(!iWait && iConfig)
sl@0
   288
					{
sl@0
   289
					if(iPosition == iAudioOutputStream->Position())
sl@0
   290
						{
sl@0
   291
						INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64());
sl@0
   292
						}
sl@0
   293
					else
sl@0
   294
						{
sl@0
   295
						ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64());
sl@0
   296
						StopTest(KErrGeneral);
sl@0
   297
						}					
sl@0
   298
					INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause);
sl@0
   299
					INFO_PRINTF3(_L("Changing Volume and Balance while paused to Volume = %d and Balance = %d"),iVolume,iBalance);
sl@0
   300
					iAudioOutputStream->SetVolume(iVolume);
sl@0
   301
					iAudioOutputStream->SetBalanceL(iBalance);
sl@0
   302
					INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume"));
sl@0
   303
					error = iAudioOutputStream->Resume();
sl@0
   304
					resumeposition = iAudioOutputStream->Position();
sl@0
   305
					if(error == KErrNone)
sl@0
   306
						{
sl@0
   307
						INFO_PRINTF1(_L("Resume returned with KErrNone as expected"));
sl@0
   308
						iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   309
						if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2)
sl@0
   310
							{
sl@0
   311
							INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64());
sl@0
   312
							}
sl@0
   313
						else
sl@0
   314
							{
sl@0
   315
							ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64());
sl@0
   316
							StopTest(KErrGeneral);
sl@0
   317
							}
sl@0
   318
						}
sl@0
   319
					else
sl@0
   320
						{
sl@0
   321
						ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error);
sl@0
   322
						StopTest(error);
sl@0
   323
						}
sl@0
   324
					iConfig = EFalse;
sl@0
   325
					}
sl@0
   326
				else if(!iWait && iInvalidConfig)
sl@0
   327
					{
sl@0
   328
					if(iPosition == iAudioOutputStream->Position())
sl@0
   329
						{
sl@0
   330
						INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64());
sl@0
   331
						}
sl@0
   332
					else
sl@0
   333
						{
sl@0
   334
						ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64());
sl@0
   335
						StopTest(KErrGeneral);
sl@0
   336
						}					
sl@0
   337
					INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause);
sl@0
   338
					INFO_PRINTF1(_L("Changing AudioProperties while paused"));
sl@0
   339
					TRAPD(err,iAudioOutputStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate48000Hz, TMdaAudioDataSettings::EChannelsStereo));
sl@0
   340
					if(err == KErrNotReady)
sl@0
   341
						{
sl@0
   342
						INFO_PRINTF1(_L("SetAudioPropertiesL returned with KErrNotReady as expected"));
sl@0
   343
						INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume"));
sl@0
   344
						error = iAudioOutputStream->Resume();
sl@0
   345
						resumeposition = iAudioOutputStream->Position();
sl@0
   346
						if(error == KErrNone)
sl@0
   347
							{
sl@0
   348
							INFO_PRINTF1(_L("Resume returned with KErrNone as expected"));
sl@0
   349
							iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   350
							if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2)
sl@0
   351
								{
sl@0
   352
								INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64());
sl@0
   353
								}
sl@0
   354
							else
sl@0
   355
								{
sl@0
   356
								ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64());
sl@0
   357
								StopTest(KErrGeneral);
sl@0
   358
								}							
sl@0
   359
							}
sl@0
   360
						else
sl@0
   361
							{
sl@0
   362
							ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),err);
sl@0
   363
							StopTest(err);
sl@0
   364
							}
sl@0
   365
						iInvalidConfig = EFalse;
sl@0
   366
						}
sl@0
   367
					else
sl@0
   368
						{
sl@0
   369
						ERR_PRINTF2(_L("SetAudioPropertiesL did not return with KErrNotSupported as expected, returned with %d instead"), err);
sl@0
   370
						StopTest(KErrGeneral);
sl@0
   371
						}
sl@0
   372
					}
sl@0
   373
				else if(!iWait && iGetBytes)
sl@0
   374
					{
sl@0
   375
					if(iPosition == iAudioOutputStream->Position())
sl@0
   376
						{
sl@0
   377
						INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64());
sl@0
   378
						}
sl@0
   379
					else
sl@0
   380
						{
sl@0
   381
						ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64());
sl@0
   382
						StopTest(KErrGeneral);
sl@0
   383
						}					
sl@0
   384
					INFO_PRINTF2(_L("Playback paused for %d seconds"),iPause);
sl@0
   385
					INFO_PRINTF1(_L("Calling GetBytes to verify the value hasn't changed"));
sl@0
   386
					TInt myBytes = iAudioOutputStream->GetBytes();
sl@0
   387
					if(myBytes == iBytes)
sl@0
   388
						{
sl@0
   389
						INFO_PRINTF1(_L("GetBytes value did not change while in pause, this is expected."));
sl@0
   390
						INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume"));
sl@0
   391
						error = iAudioOutputStream->Resume();
sl@0
   392
						resumeposition = iAudioOutputStream->Position();
sl@0
   393
						if(error == KErrNone)
sl@0
   394
							{
sl@0
   395
							INFO_PRINTF1(_L("Resume returned with KErrNone as expected"));
sl@0
   396
							iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   397
							if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2)
sl@0
   398
								{
sl@0
   399
								INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64());
sl@0
   400
								}
sl@0
   401
							else
sl@0
   402
								{
sl@0
   403
								ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64());
sl@0
   404
								StopTest(KErrGeneral);
sl@0
   405
								}							
sl@0
   406
							}
sl@0
   407
						else
sl@0
   408
							{
sl@0
   409
							ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error);
sl@0
   410
							StopTest(error);
sl@0
   411
							}
sl@0
   412
						iGetBytes = EFalse;
sl@0
   413
						}
sl@0
   414
					else
sl@0
   415
						{
sl@0
   416
						ERR_PRINTF3(_L("GetBytes value changed while in pause, this is unexpected. Expected = %d Retrieved = %d"),iBytes,myBytes);
sl@0
   417
						StopTest(KErrGeneral);
sl@0
   418
						}
sl@0
   419
					}
sl@0
   420
				}
sl@0
   421
			else
sl@0
   422
				{
sl@0
   423
				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   424
				StopTest(aError, EFail);
sl@0
   425
				}
sl@0
   426
			break;
sl@0
   427
			}
sl@0
   428
		default:
sl@0
   429
			{
sl@0
   430
			ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState);
sl@0
   431
			StopTest(KErrGeneral);
sl@0
   432
			}
sl@0
   433
		}
sl@0
   434
	}
sl@0
   435
sl@0
   436
/*
sl@0
   437
 *
sl@0
   438
 * MaoscOpenComplete - From MMdaAudioOutputStreamObserver
sl@0
   439
 *
sl@0
   440
 */
sl@0
   441
void RMdaOutputStreamTestBase::MaoscOpenComplete(TInt aError)
sl@0
   442
	{
sl@0
   443
	INFO_PRINTF1(_L("========== AudioOutputStream MaoscOpenComplete() callback =========="));
sl@0
   444
	if(iAudioOutputStreamState == EStateAOSInitializing)
sl@0
   445
		{
sl@0
   446
		INFO_PRINTF1(_L("AudioOutputStream MaoscOpenComplete"));
sl@0
   447
		Fsm(EEventAOSOpenComplete, aError);
sl@0
   448
		}
sl@0
   449
	}
sl@0
   450
sl@0
   451
/*
sl@0
   452
 *
sl@0
   453
 * MaoscBufferCopied - From MMdaAudioOutputStreamObserver
sl@0
   454
 *
sl@0
   455
 */
sl@0
   456
void RMdaOutputStreamTestBase::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
sl@0
   457
	{
sl@0
   458
	INFO_PRINTF1(_L("========== AudioOutputStream MaoscBufferCopied() callback =========="));
sl@0
   459
	INFO_PRINTF1(_L("Reading file"));
sl@0
   460
	TInt err = iFile.Read(iBuffer);
sl@0
   461
	if (err != KErrNone)
sl@0
   462
		{
sl@0
   463
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
   464
		StopTest(err);
sl@0
   465
		}
sl@0
   466
	if (iBuffer != KNullDesC8 && iAudioOutputStreamState != EStateAOSStopped)
sl@0
   467
		{
sl@0
   468
		INFO_PRINTF1(_L("Writing to stream"));
sl@0
   469
		iAudioOutputStream->WriteL(iBuffer);
sl@0
   470
		}
sl@0
   471
	if(iAudioOutputStreamState == EStateAOSPlaying)
sl@0
   472
		{
sl@0
   473
		INFO_PRINTF1(_L("AudioOutputStream MaoscBufferCopied"));
sl@0
   474
		}
sl@0
   475
	else if(iAudioOutputStreamState == EStateAOSPause)
sl@0
   476
		{
sl@0
   477
		ERR_PRINTF1(_L("AudioOutputStream MaoscBufferCopied in Paused. This is unexpected"));
sl@0
   478
		StopTest(KErrGeneral);
sl@0
   479
		}		
sl@0
   480
	}
sl@0
   481
sl@0
   482
/*
sl@0
   483
 *
sl@0
   484
 * MaoscPlayComplete - From MMdaAudioOutputStreamObserver
sl@0
   485
 *
sl@0
   486
 */
sl@0
   487
void RMdaOutputStreamTestBase::MaoscPlayComplete(TInt aError)
sl@0
   488
	{
sl@0
   489
	INFO_PRINTF1(_L("========== AudioOutputStream MaoscPlayComplete() callback =========="));
sl@0
   490
	if (aError == KErrUnderflow)
sl@0
   491
		{
sl@0
   492
		INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError);
sl@0
   493
		StopTest(EPass);
sl@0
   494
		}
sl@0
   495
	else
sl@0
   496
		{
sl@0
   497
		ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError);
sl@0
   498
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
sl@0
   499
		StopTest(aError);
sl@0
   500
		}
sl@0
   501
	}
sl@0
   502
sl@0
   503
/*
sl@0
   504
 *========================================================================================================
sl@0
   505
 * MM-MMF-ACLNT-I-0175-HP
sl@0
   506
 *========================================================================================================
sl@0
   507
 */
sl@0
   508
RMdaOutputStreamPauseResumeBeforeWriteTest::RMdaOutputStreamPauseResumeBeforeWriteTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   509
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
   510
	{
sl@0
   511
	}
sl@0
   512
sl@0
   513
/*
sl@0
   514
 *
sl@0
   515
 * NewL
sl@0
   516
 *
sl@0
   517
 */
sl@0
   518
RMdaOutputStreamPauseResumeBeforeWriteTest* RMdaOutputStreamPauseResumeBeforeWriteTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   519
	{
sl@0
   520
	RMdaOutputStreamPauseResumeBeforeWriteTest * self = new(ELeave)RMdaOutputStreamPauseResumeBeforeWriteTest(aTestName,aSectName);
sl@0
   521
	return self;
sl@0
   522
	}
sl@0
   523
sl@0
   524
/*
sl@0
   525
 *
sl@0
   526
 * DoKickoffTestL
sl@0
   527
 *
sl@0
   528
 */
sl@0
   529
void RMdaOutputStreamPauseResumeBeforeWriteTest::DoKickoffTestL()
sl@0
   530
	{
sl@0
   531
	TPtrC filename;
sl@0
   532
	// Get the filename of the audio file to play
sl@0
   533
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
   534
		{
sl@0
   535
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
   536
		StopTest(KErrNotFound);
sl@0
   537
		return;
sl@0
   538
		}
sl@0
   539
	// open using RFile for playback
sl@0
   540
	iFilename.Copy(filename);
sl@0
   541
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
   542
	if (err != KErrNone)
sl@0
   543
		{
sl@0
   544
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
   545
		iFs.Close();
sl@0
   546
		StopTest(err);
sl@0
   547
		return;
sl@0
   548
		}
sl@0
   549
	// Get size of iFile
sl@0
   550
	TInt filesize = 0;
sl@0
   551
	err = iFile.Size(filesize);
sl@0
   552
	if (err != KErrNone)
sl@0
   553
		{
sl@0
   554
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
   555
		StopTest(err);
sl@0
   556
		return;
sl@0
   557
		}
sl@0
   558
	// Initialise iBuf
sl@0
   559
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
   560
	
sl@0
   561
	//Read first half of the file
sl@0
   562
	err = iFile.Read(iBuffer);
sl@0
   563
	if (err != KErrNone)
sl@0
   564
		{
sl@0
   565
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
   566
		StopTest(err);
sl@0
   567
		}	
sl@0
   568
			
sl@0
   569
	iWait = ETrue;
sl@0
   570
	iPause = KTimeout; //Set timeout to stop test if playback was paused
sl@0
   571
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
   572
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
   573
	}
sl@0
   574
sl@0
   575
/*
sl@0
   576
 *
sl@0
   577
 * Fsm - Executes playing events of AudioToneUtility in sequence
sl@0
   578
 *
sl@0
   579
 */
sl@0
   580
void RMdaOutputStreamPauseResumeBeforeWriteTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError)
sl@0
   581
	{
sl@0
   582
	TInt error = 0;
sl@0
   583
	TTimeIntervalMicroSeconds resumeposition;
sl@0
   584
	switch (iAudioOutputStreamState)
sl@0
   585
		{
sl@0
   586
		case EStateAOSCreated:
sl@0
   587
			{
sl@0
   588
			if (aMdaAudioOutputStreamEvent == EEventAOSInitialize)
sl@0
   589
				{
sl@0
   590
				TMdaAudioDataSettings settings;
sl@0
   591
				//Default settings
sl@0
   592
				settings.Query();
sl@0
   593
				settings.iChannels = TMdaAudioDataSettings::EChannelsMono;
sl@0
   594
				settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
sl@0
   595
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause before Open"));
sl@0
   596
				error = iAudioOutputStream->Pause();
sl@0
   597
				if(error == KErrNotReady)
sl@0
   598
					{
sl@0
   599
					INFO_PRINTF1(_L("Pause before open returned with KErrNotReady as expected"));
sl@0
   600
					}
sl@0
   601
				else
sl@0
   602
					{
sl@0
   603
					ERR_PRINTF2(_L("Pause before open returned with %d instead of KErrNotReady as expected"),error);
sl@0
   604
					StopTest(error);
sl@0
   605
					}
sl@0
   606
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open"));
sl@0
   607
				iAudioOutputStream->Open(&settings);
sl@0
   608
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing"));
sl@0
   609
				iAudioOutputStreamState = EStateAOSInitializing;
sl@0
   610
				}
sl@0
   611
			else
sl@0
   612
				{
sl@0
   613
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   614
				StopTest(aError, EFail);
sl@0
   615
				}
sl@0
   616
			break;
sl@0
   617
			}
sl@0
   618
		case EStateAOSInitializing:
sl@0
   619
			{
sl@0
   620
			if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone)
sl@0
   621
				{
sl@0
   622
				INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2"));
sl@0
   623
				iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2);
sl@0
   624
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause before first WriteL"));
sl@0
   625
				error = iAudioOutputStream->Pause();
sl@0
   626
				if(error == KErrNotReady)
sl@0
   627
					{
sl@0
   628
					INFO_PRINTF1(_L("Pause before first WriteL returned with KErrNotReady as expected"));
sl@0
   629
					}
sl@0
   630
				else
sl@0
   631
					{
sl@0
   632
					ERR_PRINTF2(_L("Pause before first WriteL returned with %d instead of KErrNotReady as expected"),error);
sl@0
   633
					StopTest(error);
sl@0
   634
					}
sl@0
   635
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume before first WriteL"));
sl@0
   636
				error = iAudioOutputStream->Resume();
sl@0
   637
				if(error == KErrNotReady)
sl@0
   638
					{
sl@0
   639
					INFO_PRINTF1(_L("Resume before first WriteL returned with KErrNotReady as expected"));
sl@0
   640
					}
sl@0
   641
				else
sl@0
   642
					{
sl@0
   643
					ERR_PRINTF2(_L("Resume before first WriteL returned with %d instead of KErrNotReady as expected"),error);
sl@0
   644
					StopTest(error);
sl@0
   645
					}						
sl@0
   646
				INFO_PRINTF1(_L("Starting playback"));
sl@0
   647
				iAudioOutputStream->WriteL(iBuffer);
sl@0
   648
				iAudioOutputStreamState = EStateAOSPlaying;
sl@0
   649
				StartTimer(iPause*KOneSecond);
sl@0
   650
				}
sl@0
   651
			else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone)
sl@0
   652
				{
sl@0
   653
				ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError);
sl@0
   654
				StopTest(aError);	
sl@0
   655
				}
sl@0
   656
			else
sl@0
   657
				{
sl@0
   658
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
   659
				StopTest(aError, EFail);
sl@0
   660
				}
sl@0
   661
			break;
sl@0
   662
			}
sl@0
   663
		default:
sl@0
   664
			{
sl@0
   665
			ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState);
sl@0
   666
			StopTest(KErrGeneral);
sl@0
   667
			}
sl@0
   668
		}
sl@0
   669
	}
sl@0
   670
sl@0
   671
/*
sl@0
   672
 *
sl@0
   673
 * DoTimerCallback
sl@0
   674
 *
sl@0
   675
 */
sl@0
   676
void RMdaOutputStreamPauseResumeBeforeWriteTest::DoTimerCallback()
sl@0
   677
	{
sl@0
   678
	INFO_PRINTF1(_L("Cancelling timer"));
sl@0
   679
	iTimer->Cancel();
sl@0
   680
	ERR_PRINTF1(_L("Playback was paused when it shouldn't"));
sl@0
   681
	StopTest(KErrGeneral);
sl@0
   682
	}
sl@0
   683
	
sl@0
   684
/*
sl@0
   685
 *========================================================================================================
sl@0
   686
 * MM-MMF-ACLNT-I-0176-HP
sl@0
   687
 *========================================================================================================
sl@0
   688
 */
sl@0
   689
RMdaOutputStreamResumeTest::RMdaOutputStreamResumeTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   690
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
   691
	{
sl@0
   692
	}
sl@0
   693
sl@0
   694
/*
sl@0
   695
 *
sl@0
   696
 * NewL
sl@0
   697
 *
sl@0
   698
 */
sl@0
   699
RMdaOutputStreamResumeTest* RMdaOutputStreamResumeTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   700
	{
sl@0
   701
	RMdaOutputStreamResumeTest * self = new(ELeave)RMdaOutputStreamResumeTest(aTestName,aSectName);
sl@0
   702
	return self;
sl@0
   703
	}
sl@0
   704
sl@0
   705
/*
sl@0
   706
 *
sl@0
   707
 * DoKickoffTestL
sl@0
   708
 *
sl@0
   709
 */
sl@0
   710
void RMdaOutputStreamResumeTest::DoKickoffTestL()
sl@0
   711
	{
sl@0
   712
	TPtrC filename;
sl@0
   713
	// Get the pause time
sl@0
   714
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
   715
		{
sl@0
   716
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
   717
		StopTest(KErrNotFound);
sl@0
   718
		return;
sl@0
   719
		}
sl@0
   720
	// Get the filename of the audio file to play
sl@0
   721
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
   722
		{
sl@0
   723
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
   724
		StopTest(KErrNotFound);
sl@0
   725
		return;
sl@0
   726
		}
sl@0
   727
	// open using RFile for playback
sl@0
   728
	iFilename.Copy(filename);
sl@0
   729
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
   730
	if (err != KErrNone)
sl@0
   731
		{
sl@0
   732
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
   733
		iFs.Close();
sl@0
   734
		StopTest(err);
sl@0
   735
		return;
sl@0
   736
		}
sl@0
   737
	// Get size of iFile
sl@0
   738
	TInt filesize = 0;
sl@0
   739
	err = iFile.Size(filesize);
sl@0
   740
	if (err != KErrNone)
sl@0
   741
		{
sl@0
   742
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
   743
		StopTest(err);
sl@0
   744
		return;
sl@0
   745
		}
sl@0
   746
	// Initialise iBuf
sl@0
   747
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
   748
	
sl@0
   749
	//Read first half of the file
sl@0
   750
	err = iFile.Read(iBuffer);
sl@0
   751
	if (err != KErrNone)
sl@0
   752
		{
sl@0
   753
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
   754
		StopTest(err);
sl@0
   755
		}	
sl@0
   756
			
sl@0
   757
	iWait = ETrue;
sl@0
   758
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
   759
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
   760
	}
sl@0
   761
sl@0
   762
/*
sl@0
   763
 *
sl@0
   764
 * DoTimerCallback
sl@0
   765
 *
sl@0
   766
 */
sl@0
   767
void RMdaOutputStreamResumeTest::DoTimerCallback()
sl@0
   768
	{
sl@0
   769
	if(!iWait)
sl@0
   770
		{
sl@0
   771
		INFO_PRINTF1(_L("Cancelling timer"));
sl@0
   772
		iTimer->Cancel();
sl@0
   773
		}
sl@0
   774
	else
sl@0
   775
		{
sl@0
   776
		INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete"));
sl@0
   777
		}
sl@0
   778
	Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
   779
	}
sl@0
   780
	
sl@0
   781
/*
sl@0
   782
 *========================================================================================================
sl@0
   783
 * MM-MMF-ACLNT-I-0177-HP
sl@0
   784
 *========================================================================================================
sl@0
   785
 */
sl@0
   786
RMdaOutputStreamResumeThriceTest::RMdaOutputStreamResumeThriceTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   787
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
   788
	{
sl@0
   789
	}
sl@0
   790
sl@0
   791
/*
sl@0
   792
 *
sl@0
   793
 * NewL
sl@0
   794
 *
sl@0
   795
 */
sl@0
   796
RMdaOutputStreamResumeThriceTest* RMdaOutputStreamResumeThriceTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   797
	{
sl@0
   798
	RMdaOutputStreamResumeThriceTest * self = new(ELeave)RMdaOutputStreamResumeThriceTest(aTestName,aSectName);
sl@0
   799
	return self;
sl@0
   800
	}
sl@0
   801
sl@0
   802
/*
sl@0
   803
 *
sl@0
   804
 * DoKickoffTestL
sl@0
   805
 *
sl@0
   806
 */
sl@0
   807
void RMdaOutputStreamResumeThriceTest::DoKickoffTestL()
sl@0
   808
	{
sl@0
   809
	TPtrC filename;
sl@0
   810
	// Get the pause time
sl@0
   811
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
   812
		{
sl@0
   813
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
   814
		StopTest(KErrNotFound);
sl@0
   815
		return;
sl@0
   816
		}	
sl@0
   817
	// Get the filename of the audio file to play
sl@0
   818
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
   819
		{
sl@0
   820
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
   821
		StopTest(KErrNotFound);
sl@0
   822
		return;
sl@0
   823
		}
sl@0
   824
	// open using RFile for playback
sl@0
   825
	iFilename.Copy(filename);
sl@0
   826
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
   827
	if (err != KErrNone)
sl@0
   828
		{
sl@0
   829
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
   830
		iFs.Close();
sl@0
   831
		StopTest(err);
sl@0
   832
		return;
sl@0
   833
		}
sl@0
   834
	// Get size of iFile
sl@0
   835
	TInt filesize = 0;
sl@0
   836
	err = iFile.Size(filesize);
sl@0
   837
	if (err != KErrNone)
sl@0
   838
		{
sl@0
   839
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
   840
		StopTest(err);
sl@0
   841
		return;
sl@0
   842
		}
sl@0
   843
	// Initialise iBuf
sl@0
   844
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
   845
	
sl@0
   846
	//Read first half of the file
sl@0
   847
	err = iFile.Read(iBuffer);
sl@0
   848
	if (err != KErrNone)
sl@0
   849
		{
sl@0
   850
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
   851
		StopTest(err);
sl@0
   852
		}	
sl@0
   853
			
sl@0
   854
	iWait = ETrue;
sl@0
   855
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
   856
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
   857
	}
sl@0
   858
sl@0
   859
/*
sl@0
   860
 *
sl@0
   861
 * DoTimerCallback
sl@0
   862
 *
sl@0
   863
 */
sl@0
   864
void RMdaOutputStreamResumeThriceTest::DoTimerCallback()
sl@0
   865
	{
sl@0
   866
	iCount++;
sl@0
   867
	if(!iWait && iCount == 2*KRepeatThrice) //Repeating Pause-Resume cycle three times. Timer should be called 6 times
sl@0
   868
		{
sl@0
   869
		iTimer->Cancel();
sl@0
   870
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
   871
		}
sl@0
   872
	else
sl@0
   873
		{
sl@0
   874
		INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete"));
sl@0
   875
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
   876
		}
sl@0
   877
	}
sl@0
   878
sl@0
   879
/*
sl@0
   880
 *========================================================================================================
sl@0
   881
 * MM-MMF-ACLNT-I-0178-HP
sl@0
   882
 *========================================================================================================
sl@0
   883
 */
sl@0
   884
RMdaOutputStreamConfigInPauseTest::RMdaOutputStreamConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   885
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
   886
	{
sl@0
   887
	}
sl@0
   888
sl@0
   889
/*
sl@0
   890
 *
sl@0
   891
 * NewL
sl@0
   892
 *
sl@0
   893
 */
sl@0
   894
RMdaOutputStreamConfigInPauseTest* RMdaOutputStreamConfigInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
   895
	{
sl@0
   896
	RMdaOutputStreamConfigInPauseTest * self = new(ELeave)RMdaOutputStreamConfigInPauseTest(aTestName,aSectName);
sl@0
   897
	return self;
sl@0
   898
	}
sl@0
   899
sl@0
   900
/*
sl@0
   901
 *
sl@0
   902
 * DoKickoffTestL
sl@0
   903
 *
sl@0
   904
 */
sl@0
   905
void RMdaOutputStreamConfigInPauseTest::DoKickoffTestL()
sl@0
   906
	{
sl@0
   907
	TPtrC filename;
sl@0
   908
	// Get the pause time
sl@0
   909
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
   910
		{
sl@0
   911
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
   912
		StopTest(KErrNotFound);
sl@0
   913
		return;
sl@0
   914
		}
sl@0
   915
	// Get the filename of the audio file to play
sl@0
   916
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
   917
		{
sl@0
   918
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
   919
		StopTest(KErrNotFound);
sl@0
   920
		return;
sl@0
   921
		}
sl@0
   922
	// Get the volume
sl@0
   923
	if (!GetIntFromConfig(iSectName, KVolume, iVolume))
sl@0
   924
		{
sl@0
   925
		ERR_PRINTF1(_L("Volume could not be retrieved from ini file"));
sl@0
   926
		StopTest(KErrNotFound);
sl@0
   927
		return;
sl@0
   928
		}
sl@0
   929
	// Get the balance
sl@0
   930
	if (!GetIntFromConfig(iSectName, KBalance, iBalance))
sl@0
   931
		{
sl@0
   932
		ERR_PRINTF1(_L("Balance could not be retrieved from ini file"));
sl@0
   933
		StopTest(KErrNotFound);
sl@0
   934
		return;
sl@0
   935
		}		
sl@0
   936
	// open using RFile for playback
sl@0
   937
	iFilename.Copy(filename);
sl@0
   938
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
   939
	if (err != KErrNone)
sl@0
   940
		{
sl@0
   941
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
   942
		iFs.Close();
sl@0
   943
		StopTest(err);
sl@0
   944
		return;
sl@0
   945
		}
sl@0
   946
	// Get size of iFile
sl@0
   947
	TInt filesize = 0;
sl@0
   948
	err = iFile.Size(filesize);
sl@0
   949
	if (err != KErrNone)
sl@0
   950
		{
sl@0
   951
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
   952
		StopTest(err);
sl@0
   953
		return;
sl@0
   954
		}
sl@0
   955
	// Initialise iBuf
sl@0
   956
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
   957
	
sl@0
   958
	//Read first half of the file
sl@0
   959
	err = iFile.Read(iBuffer);
sl@0
   960
	if (err != KErrNone)
sl@0
   961
		{
sl@0
   962
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
   963
		StopTest(err);
sl@0
   964
		}	
sl@0
   965
			
sl@0
   966
	iWait = ETrue;
sl@0
   967
	iConfig = ETrue;
sl@0
   968
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
   969
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
   970
	}
sl@0
   971
sl@0
   972
/*
sl@0
   973
 *
sl@0
   974
 * DoTimerCallback
sl@0
   975
 *
sl@0
   976
 */
sl@0
   977
void RMdaOutputStreamConfigInPauseTest::DoTimerCallback()
sl@0
   978
	{
sl@0
   979
	if(!iWait && !iConfig)
sl@0
   980
		{
sl@0
   981
		iTimer->Cancel();
sl@0
   982
		INFO_PRINTF1(_L("Comparing Volume and Balance with values set"));
sl@0
   983
		if (iVolume == iAudioOutputStream->Volume() && Abs(iBalance - iAudioOutputStream->GetBalanceL())<KBalanceTolerance)
sl@0
   984
			{
sl@0
   985
			INFO_PRINTF3(_L("Volume = %d and Balance = %d as expected"),iVolume,iBalance);
sl@0
   986
			}
sl@0
   987
		else
sl@0
   988
			{
sl@0
   989
			ERR_PRINTF1(_L("Retrieved values are different than expected"));
sl@0
   990
			ERR_PRINTF5(_L("Retrieved Volume = %d and Balance = %d. Expected Volume = %d and Balance = %d"),iAudioOutputStream->Volume(),iAudioOutputStream->GetBalanceL(),iVolume,iBalance);
sl@0
   991
			StopTest(KErrGeneral);
sl@0
   992
			}
sl@0
   993
		}
sl@0
   994
	else
sl@0
   995
		{
sl@0
   996
		INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete"));
sl@0
   997
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
   998
		}
sl@0
   999
	}
sl@0
  1000
sl@0
  1001
/*
sl@0
  1002
 *========================================================================================================
sl@0
  1003
 * MM-MMF-ACLNT-I-0179-HP
sl@0
  1004
 *========================================================================================================
sl@0
  1005
 */
sl@0
  1006
RMdaOutputStreamInvalidConfigInPauseTest::RMdaOutputStreamInvalidConfigInPauseTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1007
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
  1008
	{
sl@0
  1009
	}
sl@0
  1010
sl@0
  1011
/*
sl@0
  1012
 *
sl@0
  1013
 * NewL
sl@0
  1014
 *
sl@0
  1015
 */
sl@0
  1016
RMdaOutputStreamInvalidConfigInPauseTest* RMdaOutputStreamInvalidConfigInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1017
	{
sl@0
  1018
	RMdaOutputStreamInvalidConfigInPauseTest * self = new(ELeave)RMdaOutputStreamInvalidConfigInPauseTest(aTestName,aSectName);
sl@0
  1019
	return self;
sl@0
  1020
	}
sl@0
  1021
sl@0
  1022
/*
sl@0
  1023
 *
sl@0
  1024
 * DoKickoffTestL
sl@0
  1025
 *
sl@0
  1026
 */
sl@0
  1027
void RMdaOutputStreamInvalidConfigInPauseTest::DoKickoffTestL()
sl@0
  1028
	{
sl@0
  1029
	TPtrC filename;
sl@0
  1030
	// Get the pause time
sl@0
  1031
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
  1032
		{
sl@0
  1033
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
  1034
		StopTest(KErrNotFound);
sl@0
  1035
		return;
sl@0
  1036
		}
sl@0
  1037
	// Get the filename of the audio file to play
sl@0
  1038
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
  1039
		{
sl@0
  1040
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
  1041
		StopTest(KErrNotFound);
sl@0
  1042
		return;
sl@0
  1043
		}
sl@0
  1044
	// open using RFile for playback
sl@0
  1045
	iFilename.Copy(filename);
sl@0
  1046
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
  1047
	if (err != KErrNone)
sl@0
  1048
		{
sl@0
  1049
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
  1050
		iFs.Close();
sl@0
  1051
		StopTest(err);
sl@0
  1052
		return;
sl@0
  1053
		}
sl@0
  1054
	// Get size of iFile
sl@0
  1055
	TInt filesize = 0;
sl@0
  1056
	err = iFile.Size(filesize);
sl@0
  1057
	if (err != KErrNone)
sl@0
  1058
		{
sl@0
  1059
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
  1060
		StopTest(err);
sl@0
  1061
		return;
sl@0
  1062
		}
sl@0
  1063
	// Initialise iBuf
sl@0
  1064
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
  1065
	
sl@0
  1066
	//Read first half of the file
sl@0
  1067
	err = iFile.Read(iBuffer);
sl@0
  1068
	if (err != KErrNone)
sl@0
  1069
		{
sl@0
  1070
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
  1071
		StopTest(err);
sl@0
  1072
		}	
sl@0
  1073
			
sl@0
  1074
	iWait = ETrue;
sl@0
  1075
	iInvalidConfig = ETrue;
sl@0
  1076
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
  1077
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
  1078
	}
sl@0
  1079
sl@0
  1080
/*
sl@0
  1081
 *
sl@0
  1082
 * DoTimerCallback
sl@0
  1083
 *
sl@0
  1084
 */
sl@0
  1085
void RMdaOutputStreamInvalidConfigInPauseTest::DoTimerCallback()
sl@0
  1086
	{
sl@0
  1087
	if(!iWait)
sl@0
  1088
		{
sl@0
  1089
		INFO_PRINTF1(_L("Cancelling timer"));
sl@0
  1090
		iTimer->Cancel();
sl@0
  1091
		}
sl@0
  1092
	else
sl@0
  1093
		{
sl@0
  1094
		INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete"));
sl@0
  1095
		}
sl@0
  1096
	Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1097
	}
sl@0
  1098
sl@0
  1099
/*
sl@0
  1100
 *========================================================================================================
sl@0
  1101
 * MM-MMF-ACLNT-I-0180-HP
sl@0
  1102
 *========================================================================================================
sl@0
  1103
 */
sl@0
  1104
RMdaOutputStreamGetBytesInPauseTest::RMdaOutputStreamGetBytesInPauseTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1105
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
  1106
	{
sl@0
  1107
	}
sl@0
  1108
sl@0
  1109
/*
sl@0
  1110
 *
sl@0
  1111
 * NewL
sl@0
  1112
 *
sl@0
  1113
 */
sl@0
  1114
RMdaOutputStreamGetBytesInPauseTest* RMdaOutputStreamGetBytesInPauseTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1115
	{
sl@0
  1116
	RMdaOutputStreamGetBytesInPauseTest * self = new(ELeave)RMdaOutputStreamGetBytesInPauseTest(aTestName,aSectName);
sl@0
  1117
	return self;
sl@0
  1118
	}
sl@0
  1119
sl@0
  1120
/*
sl@0
  1121
 *
sl@0
  1122
 * DoKickoffTestL
sl@0
  1123
 *
sl@0
  1124
 */
sl@0
  1125
void RMdaOutputStreamGetBytesInPauseTest::DoKickoffTestL()
sl@0
  1126
	{
sl@0
  1127
	TPtrC filename;
sl@0
  1128
	// Get the pause time
sl@0
  1129
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
  1130
		{
sl@0
  1131
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
  1132
		StopTest(KErrNotFound);
sl@0
  1133
		return;
sl@0
  1134
		}
sl@0
  1135
	// Get the filename of the audio file to play
sl@0
  1136
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
  1137
		{
sl@0
  1138
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
  1139
		StopTest(KErrNotFound);
sl@0
  1140
		return;
sl@0
  1141
		}
sl@0
  1142
	// open using RFile for playback
sl@0
  1143
	iFilename.Copy(filename);
sl@0
  1144
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
  1145
	if (err != KErrNone)
sl@0
  1146
		{
sl@0
  1147
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
  1148
		iFs.Close();
sl@0
  1149
		StopTest(err);
sl@0
  1150
		return;
sl@0
  1151
		}
sl@0
  1152
	// Get size of iFile
sl@0
  1153
	TInt filesize = 0;
sl@0
  1154
	err = iFile.Size(filesize);
sl@0
  1155
	if (err != KErrNone)
sl@0
  1156
		{
sl@0
  1157
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
  1158
		StopTest(err);
sl@0
  1159
		return;
sl@0
  1160
		}
sl@0
  1161
	// Initialise iBuf
sl@0
  1162
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
  1163
	
sl@0
  1164
	//Read first half of the file
sl@0
  1165
	err = iFile.Read(iBuffer);
sl@0
  1166
	if (err != KErrNone)
sl@0
  1167
		{
sl@0
  1168
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
  1169
		StopTest(err);
sl@0
  1170
		}	
sl@0
  1171
			
sl@0
  1172
	iWait = ETrue;
sl@0
  1173
	iGetBytes = ETrue;
sl@0
  1174
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
  1175
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
  1176
	}
sl@0
  1177
sl@0
  1178
/*
sl@0
  1179
 *
sl@0
  1180
 * DoTimerCallback
sl@0
  1181
 *
sl@0
  1182
 */
sl@0
  1183
void RMdaOutputStreamGetBytesInPauseTest::DoTimerCallback()
sl@0
  1184
	{
sl@0
  1185
	if(!iWait)
sl@0
  1186
		{
sl@0
  1187
		INFO_PRINTF1(_L("Cancelling timer"));
sl@0
  1188
		iTimer->Cancel();
sl@0
  1189
		}
sl@0
  1190
	else
sl@0
  1191
		{
sl@0
  1192
		INFO_PRINTF1(_L("MdaAudioOutputStream Event: EEventTimerComplete"));
sl@0
  1193
		}
sl@0
  1194
	Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1195
	}
sl@0
  1196
sl@0
  1197
/*
sl@0
  1198
 *========================================================================================================
sl@0
  1199
 * MM-MMF-ACLNT-I-0181-HP
sl@0
  1200
 *========================================================================================================
sl@0
  1201
 */
sl@0
  1202
RMdaOutputStreamPlayPauseStopPlayTest::RMdaOutputStreamPlayPauseStopPlayTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1203
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
  1204
	{
sl@0
  1205
	}
sl@0
  1206
sl@0
  1207
/*
sl@0
  1208
 *
sl@0
  1209
 * NewL
sl@0
  1210
 *
sl@0
  1211
 */
sl@0
  1212
RMdaOutputStreamPlayPauseStopPlayTest* RMdaOutputStreamPlayPauseStopPlayTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1213
	{
sl@0
  1214
	RMdaOutputStreamPlayPauseStopPlayTest * self = new(ELeave)RMdaOutputStreamPlayPauseStopPlayTest(aTestName,aSectName);
sl@0
  1215
	return self;
sl@0
  1216
	}
sl@0
  1217
sl@0
  1218
/*
sl@0
  1219
 *
sl@0
  1220
 * DoKickoffTestL
sl@0
  1221
 *
sl@0
  1222
 */
sl@0
  1223
void RMdaOutputStreamPlayPauseStopPlayTest::DoKickoffTestL()
sl@0
  1224
	{
sl@0
  1225
	TPtrC filename;
sl@0
  1226
	// Get the pause time
sl@0
  1227
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
  1228
		{
sl@0
  1229
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
  1230
		StopTest(KErrNotFound);
sl@0
  1231
		return;
sl@0
  1232
		}
sl@0
  1233
	// Get the filename of the audio file to play
sl@0
  1234
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
  1235
		{
sl@0
  1236
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
  1237
		StopTest(KErrNotFound);
sl@0
  1238
		return;
sl@0
  1239
		}
sl@0
  1240
	// open using RFile for playback
sl@0
  1241
	iFilename.Copy(filename);
sl@0
  1242
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
  1243
	if (err != KErrNone)
sl@0
  1244
		{
sl@0
  1245
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
  1246
		iFs.Close();
sl@0
  1247
		StopTest(err);
sl@0
  1248
		return;
sl@0
  1249
		}
sl@0
  1250
	// Get size of iFile
sl@0
  1251
	TInt filesize = 0;
sl@0
  1252
	err = iFile.Size(filesize);
sl@0
  1253
	if (err != KErrNone)
sl@0
  1254
		{
sl@0
  1255
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
  1256
		StopTest(err);
sl@0
  1257
		return;
sl@0
  1258
		}
sl@0
  1259
	// Initialise iBuf
sl@0
  1260
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
  1261
	
sl@0
  1262
	//Read first half of the file
sl@0
  1263
	err = iFile.Read(iBuffer);
sl@0
  1264
	if (err != KErrNone)
sl@0
  1265
		{
sl@0
  1266
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
  1267
		StopTest(err);
sl@0
  1268
		}	
sl@0
  1269
			
sl@0
  1270
	iWait = ETrue;
sl@0
  1271
	iStop = ETrue;
sl@0
  1272
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
  1273
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
  1274
	}
sl@0
  1275
sl@0
  1276
/*
sl@0
  1277
 *
sl@0
  1278
 * DoTimerCallback
sl@0
  1279
 *
sl@0
  1280
 */
sl@0
  1281
void RMdaOutputStreamPlayPauseStopPlayTest::DoTimerCallback()
sl@0
  1282
	{
sl@0
  1283
	if(!iWait && iStop)
sl@0
  1284
		{
sl@0
  1285
		iAudioOutputStreamState = EStateAOSStopped;
sl@0
  1286
		iStop = EFalse;
sl@0
  1287
		iWait = ETrue;
sl@0
  1288
		INFO_PRINTF1(_L("MAudioOutputStream Event: EEventTimerComplete"));
sl@0
  1289
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1290
		}
sl@0
  1291
	else if(!iWait && !iStop)
sl@0
  1292
		{
sl@0
  1293
		iTimer->Cancel();
sl@0
  1294
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1295
		}
sl@0
  1296
	else
sl@0
  1297
		{
sl@0
  1298
		INFO_PRINTF1(_L("MdaToneUtility Event: EEventTimerComplete"));
sl@0
  1299
		Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1300
		}
sl@0
  1301
	}
sl@0
  1302
sl@0
  1303
/*
sl@0
  1304
 *
sl@0
  1305
 * Fsm - Executes playing events of AudioToneUtility in sequence
sl@0
  1306
 *
sl@0
  1307
 */
sl@0
  1308
void RMdaOutputStreamPlayPauseStopPlayTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError)
sl@0
  1309
	{
sl@0
  1310
	TInt error = 0;
sl@0
  1311
	TTimeIntervalMicroSeconds resumeposition;
sl@0
  1312
	switch (iAudioOutputStreamState)
sl@0
  1313
		{
sl@0
  1314
		case EStateAOSCreated:
sl@0
  1315
			{
sl@0
  1316
			if (aMdaAudioOutputStreamEvent == EEventAOSInitialize)
sl@0
  1317
				{
sl@0
  1318
				TMdaAudioDataSettings settings;
sl@0
  1319
				//Default settings
sl@0
  1320
				settings.Query();
sl@0
  1321
				settings.iChannels = TMdaAudioDataSettings::EChannelsMono;
sl@0
  1322
				settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
sl@0
  1323
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open"));
sl@0
  1324
				iAudioOutputStream->Open(&settings);
sl@0
  1325
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing"));
sl@0
  1326
				iAudioOutputStreamState = EStateAOSInitializing;
sl@0
  1327
				}
sl@0
  1328
			else
sl@0
  1329
				{
sl@0
  1330
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1331
				StopTest(aError, EFail);
sl@0
  1332
				}
sl@0
  1333
			break;
sl@0
  1334
			}
sl@0
  1335
		case EStateAOSInitializing:
sl@0
  1336
			{
sl@0
  1337
			if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone)
sl@0
  1338
				{
sl@0
  1339
				INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2"));
sl@0
  1340
				iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2);
sl@0
  1341
				INFO_PRINTF1(_L("Starting playback"));
sl@0
  1342
				iAudioOutputStream->WriteL(iBuffer);
sl@0
  1343
				iAudioOutputStreamState = EStateAOSPlaying;
sl@0
  1344
				StartTimer(iPause*KOneSecond);
sl@0
  1345
				}
sl@0
  1346
			else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone)
sl@0
  1347
				{
sl@0
  1348
				ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError);
sl@0
  1349
				StopTest(aError);	
sl@0
  1350
				}
sl@0
  1351
			else
sl@0
  1352
				{
sl@0
  1353
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1354
				StopTest(aError, EFail);
sl@0
  1355
				}
sl@0
  1356
			break;
sl@0
  1357
			}
sl@0
  1358
		case EStateAOSPlaying:
sl@0
  1359
			{
sl@0
  1360
			if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
  1361
				{
sl@0
  1362
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause"));
sl@0
  1363
				error = iAudioOutputStream->Pause();
sl@0
  1364
				if(error == KErrNone)
sl@0
  1365
					{
sl@0
  1366
					INFO_PRINTF1(_L("Pause returned with KErrNone as expected"));
sl@0
  1367
					}
sl@0
  1368
				else
sl@0
  1369
					{
sl@0
  1370
					ERR_PRINTF2(_L("Pause returned with %d instead of KErrNone as expected"),error);
sl@0
  1371
					StopTest(error);
sl@0
  1372
					}
sl@0
  1373
				iPosition = iAudioOutputStream->Position();
sl@0
  1374
				INFO_PRINTF2(_L("Stream was paused at %Ld"),iPosition.Int64());
sl@0
  1375
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStatePause"));
sl@0
  1376
				iAudioOutputStreamState = EStateAOSPause;
sl@0
  1377
				iWait = EFalse;
sl@0
  1378
				}
sl@0
  1379
			else
sl@0
  1380
				{
sl@0
  1381
				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1382
				StopTest(aError, EFail);
sl@0
  1383
				}
sl@0
  1384
			break;
sl@0
  1385
			}
sl@0
  1386
		case EStateAOSPause:
sl@0
  1387
			{
sl@0
  1388
			if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
  1389
				{
sl@0
  1390
				if(iPosition == iAudioOutputStream->Position())
sl@0
  1391
					{
sl@0
  1392
					INFO_PRINTF2(_L("Paused position was maintained at %Ld"),iPosition.Int64());
sl@0
  1393
					}
sl@0
  1394
				else
sl@0
  1395
					{
sl@0
  1396
					ERR_PRINTF3(_L("Position was not maintained during pause. Expected %Ld Retrieved %Ld"),iPosition.Int64(),iAudioOutputStream->Position().Int64());
sl@0
  1397
					StopTest(KErrGeneral);
sl@0
  1398
					}
sl@0
  1399
				INFO_PRINTF1(_L("Resuming playback. Calling CMdaAudioOutputStream::Resume"));
sl@0
  1400
				error = iAudioOutputStream->Resume();
sl@0
  1401
				resumeposition = iAudioOutputStream->Position();
sl@0
  1402
				if(error == KErrNone)
sl@0
  1403
					{
sl@0
  1404
					INFO_PRINTF1(_L("Resume returned with KErrNone as expected"));
sl@0
  1405
					iAudioOutputStreamState = EStateAOSPlaying;
sl@0
  1406
					if(Abs(resumeposition.Int64() - iPosition.Int64()) <= KOneSecond/2)
sl@0
  1407
						{
sl@0
  1408
						INFO_PRINTF2(_L("Playback resumed from expected position %Ld"),iPosition.Int64());
sl@0
  1409
						}
sl@0
  1410
					else
sl@0
  1411
						{
sl@0
  1412
						ERR_PRINTF3(_L("Playback did not resume from expected position. Expected %Ld Retrieved %Ld"),iPosition.Int64(),resumeposition.Int64());
sl@0
  1413
						StopTest(KErrGeneral);
sl@0
  1414
						}
sl@0
  1415
					}
sl@0
  1416
				else
sl@0
  1417
					{
sl@0
  1418
					ERR_PRINTF2(_L("Resume returned with %d instead of KErrNone as expected"),error);
sl@0
  1419
					StopTest(error);
sl@0
  1420
					}				
sl@0
  1421
				}
sl@0
  1422
			else
sl@0
  1423
				{
sl@0
  1424
				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1425
				StopTest(aError, EFail);
sl@0
  1426
				}
sl@0
  1427
			break;
sl@0
  1428
			}
sl@0
  1429
		case EStateAOSStopped:
sl@0
  1430
			{
sl@0
  1431
			if (aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
  1432
				{
sl@0
  1433
				if(iWait)
sl@0
  1434
					{
sl@0
  1435
					INFO_PRINTF1(_L("Stopping playback for 2 seconds"));
sl@0
  1436
					iAudioOutputStream->Stop();
sl@0
  1437
					iWait = EFalse;
sl@0
  1438
					}
sl@0
  1439
				else
sl@0
  1440
					{
sl@0
  1441
					INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume while in Stop"));
sl@0
  1442
					error = iAudioOutputStream->Resume();
sl@0
  1443
					if(error == KErrNotReady)
sl@0
  1444
						{
sl@0
  1445
						INFO_PRINTF1(_L("Resume returned with KErrNotReady as expected"));
sl@0
  1446
						}
sl@0
  1447
					else
sl@0
  1448
						{
sl@0
  1449
						ERR_PRINTF2(_L("Resume returned with %d instead of KErrNotReady as expected"),error);
sl@0
  1450
						StopTest(error);
sl@0
  1451
						}
sl@0
  1452
					TInt filepos = 0;
sl@0
  1453
					INFO_PRINTF1(_L("Restarting file to start position"));
sl@0
  1454
					error = iFile.Seek(ESeekStart, filepos);
sl@0
  1455
					if (error != KErrNone)
sl@0
  1456
						{
sl@0
  1457
						INFO_PRINTF2(_L("Error restarting iFile %d"), error);
sl@0
  1458
						StopTest(error);
sl@0
  1459
						}
sl@0
  1460
					error = iFile.Read(iBuffer);
sl@0
  1461
					if (error != KErrNone)
sl@0
  1462
						{
sl@0
  1463
						INFO_PRINTF2(_L("Error reading iFile %d"), error);
sl@0
  1464
						StopTest(error);
sl@0
  1465
						}
sl@0
  1466
					INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::WriteL while in Stop to restart playback"));
sl@0
  1467
					iAudioOutputStream->WriteL(iBuffer);
sl@0
  1468
					iAudioOutputStreamState = EStateAOSPlaying;
sl@0
  1469
					}
sl@0
  1470
				}
sl@0
  1471
			else
sl@0
  1472
				{
sl@0
  1473
				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1474
				StopTest(aError, EFail);
sl@0
  1475
				}
sl@0
  1476
			break;
sl@0
  1477
			}
sl@0
  1478
		default:
sl@0
  1479
			{
sl@0
  1480
			ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState);
sl@0
  1481
			StopTest(KErrGeneral);
sl@0
  1482
			}
sl@0
  1483
		}
sl@0
  1484
	}
sl@0
  1485
sl@0
  1486
/*
sl@0
  1487
 *
sl@0
  1488
 * MaoscPlayComplete - From MMdaAudioOutputStreamObserver
sl@0
  1489
 *
sl@0
  1490
 */
sl@0
  1491
void RMdaOutputStreamPlayPauseStopPlayTest::MaoscPlayComplete(TInt aError)
sl@0
  1492
	{
sl@0
  1493
	INFO_PRINTF1(_L("========== AudioOutputStream MaoscPlayComplete() callback =========="));
sl@0
  1494
	if(iAudioOutputStreamState == EStateAOSStopped)
sl@0
  1495
		{
sl@0
  1496
		if (aError == KErrCancel)
sl@0
  1497
			{
sl@0
  1498
			INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError);
sl@0
  1499
			}
sl@0
  1500
		else
sl@0
  1501
			{
sl@0
  1502
			ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError);
sl@0
  1503
			ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
sl@0
  1504
			StopTest(aError);
sl@0
  1505
			}
sl@0
  1506
		}
sl@0
  1507
	else if(iAudioOutputStreamState == EStateAOSPlaying)
sl@0
  1508
		{
sl@0
  1509
		if(aError == KErrUnderflow)
sl@0
  1510
			{
sl@0
  1511
			INFO_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d as expected"), aError);
sl@0
  1512
			StopTest(EPass);
sl@0
  1513
			}
sl@0
  1514
		else
sl@0
  1515
			{
sl@0
  1516
			ERR_PRINTF2(_L("AudioOutputStream called MaoscPlayComplete with error = %d"), aError);
sl@0
  1517
			ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
sl@0
  1518
			StopTest(aError);
sl@0
  1519
			}
sl@0
  1520
		}
sl@0
  1521
	else
sl@0
  1522
		{
sl@0
  1523
		ERR_PRINTF1(_L("AudioOutputStream called MaoscPlayComplete at invalid state"));
sl@0
  1524
		StopTest(KErrGeneral);
sl@0
  1525
		}
sl@0
  1526
	}
sl@0
  1527
sl@0
  1528
/*
sl@0
  1529
 *========================================================================================================
sl@0
  1530
 * MM-MMF-ACLNT-I-0182-HP
sl@0
  1531
 *========================================================================================================
sl@0
  1532
 */
sl@0
  1533
RMdaOutputStreamInvalidFormatsTest::RMdaOutputStreamInvalidFormatsTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1534
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
  1535
	{
sl@0
  1536
	}
sl@0
  1537
sl@0
  1538
/*
sl@0
  1539
 *
sl@0
  1540
 * NewL
sl@0
  1541
 *
sl@0
  1542
 */
sl@0
  1543
RMdaOutputStreamInvalidFormatsTest* RMdaOutputStreamInvalidFormatsTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1544
	{
sl@0
  1545
	RMdaOutputStreamInvalidFormatsTest * self = new(ELeave)RMdaOutputStreamInvalidFormatsTest(aTestName,aSectName);
sl@0
  1546
	return self;
sl@0
  1547
	}
sl@0
  1548
sl@0
  1549
/*
sl@0
  1550
 *
sl@0
  1551
 * DoKickoffTestL
sl@0
  1552
 *
sl@0
  1553
 */
sl@0
  1554
void RMdaOutputStreamInvalidFormatsTest::DoKickoffTestL()
sl@0
  1555
	{
sl@0
  1556
	TPtrC filename;
sl@0
  1557
	// Get the pause time
sl@0
  1558
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
  1559
		{
sl@0
  1560
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
  1561
		StopTest(KErrNotFound);
sl@0
  1562
		return;
sl@0
  1563
		}
sl@0
  1564
	// Get the filename of the audio file to play
sl@0
  1565
	if (!GetStringFromConfig(iSectName, KOggFile, filename))
sl@0
  1566
		{
sl@0
  1567
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
  1568
		StopTest(KErrNotFound);
sl@0
  1569
		return;
sl@0
  1570
		}
sl@0
  1571
	// open using RFile for playback
sl@0
  1572
	iFilename.Copy(filename);
sl@0
  1573
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
  1574
	if (err != KErrNone)
sl@0
  1575
		{
sl@0
  1576
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
  1577
		iFs.Close();
sl@0
  1578
		StopTest(err);
sl@0
  1579
		return;
sl@0
  1580
		}
sl@0
  1581
	// Get size of iFile
sl@0
  1582
	TInt filesize = 0;
sl@0
  1583
	err = iFile.Size(filesize);
sl@0
  1584
	if (err != KErrNone)
sl@0
  1585
		{
sl@0
  1586
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
  1587
		StopTest(err);
sl@0
  1588
		return;
sl@0
  1589
		}
sl@0
  1590
	// Initialise iBuf
sl@0
  1591
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
  1592
	
sl@0
  1593
	//Read first half of the file
sl@0
  1594
	err = iFile.Read(iBuffer);
sl@0
  1595
	if (err != KErrNone)
sl@0
  1596
		{
sl@0
  1597
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
  1598
		StopTest(err);
sl@0
  1599
		}	
sl@0
  1600
	
sl@0
  1601
	iWait = ETrue;
sl@0
  1602
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
  1603
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
  1604
	}
sl@0
  1605
sl@0
  1606
/*
sl@0
  1607
 *
sl@0
  1608
 * DoTimerCallback
sl@0
  1609
 *
sl@0
  1610
 */
sl@0
  1611
void RMdaOutputStreamInvalidFormatsTest::DoTimerCallback()
sl@0
  1612
	{
sl@0
  1613
	INFO_PRINTF1(_L("Cancelling timer"));
sl@0
  1614
	iTimer->Cancel();
sl@0
  1615
	Fsm (EEventAOSTimerComplete, KErrNone);
sl@0
  1616
	}
sl@0
  1617
	
sl@0
  1618
/*
sl@0
  1619
 *
sl@0
  1620
 * Fsm - Executes playing events of AudioToneUtility in sequence
sl@0
  1621
 *
sl@0
  1622
 */
sl@0
  1623
void RMdaOutputStreamInvalidFormatsTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError)
sl@0
  1624
	{
sl@0
  1625
	TInt error = 0;
sl@0
  1626
	TTimeIntervalMicroSeconds resumeposition;
sl@0
  1627
	switch (iAudioOutputStreamState)
sl@0
  1628
		{
sl@0
  1629
		case EStateAOSCreated:
sl@0
  1630
			{
sl@0
  1631
			if (aMdaAudioOutputStreamEvent == EEventAOSInitialize)
sl@0
  1632
				{
sl@0
  1633
				TMdaAudioDataSettings settings;
sl@0
  1634
				//setting for OGG file
sl@0
  1635
				settings.Query();
sl@0
  1636
				settings.iChannels = TMdaAudioDataSettings::EChannelsStereo;
sl@0
  1637
				settings.iSampleRate = TMdaAudioDataSettings::ESampleRate44100Hz;
sl@0
  1638
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open"));
sl@0
  1639
				iAudioOutputStream->Open(&settings);
sl@0
  1640
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing"));
sl@0
  1641
				iAudioOutputStreamState = EStateAOSInitializing;
sl@0
  1642
				}
sl@0
  1643
			else
sl@0
  1644
				{
sl@0
  1645
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1646
				StopTest(aError, EFail);
sl@0
  1647
				}
sl@0
  1648
			break;
sl@0
  1649
			}
sl@0
  1650
		case EStateAOSInitializing:
sl@0
  1651
			{
sl@0
  1652
			if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone)
sl@0
  1653
				{
sl@0
  1654
				TFourCC KVORBDataType('V', 'O', 'R', 'B');
sl@0
  1655
				TRAPD(err,iAudioOutputStream->SetDataTypeL(KVORBDataType));
sl@0
  1656
				if(err != KErrNone)
sl@0
  1657
					{
sl@0
  1658
					INFO_PRINTF1(_L("Failed to set non-PCM Format"));
sl@0
  1659
					StopTest(err);
sl@0
  1660
					}
sl@0
  1661
				INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2"));
sl@0
  1662
				iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2);
sl@0
  1663
				INFO_PRINTF1(_L("Starting playback"));
sl@0
  1664
				iAudioOutputStream->WriteL(iBuffer);
sl@0
  1665
				iAudioOutputStreamState = EStateAOSPlaying;
sl@0
  1666
				StartTimer(iPause*KOneSecond);
sl@0
  1667
				}
sl@0
  1668
			else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone)
sl@0
  1669
				{
sl@0
  1670
				ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError);
sl@0
  1671
				StopTest(aError);	
sl@0
  1672
				}
sl@0
  1673
			else
sl@0
  1674
				{
sl@0
  1675
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1676
				StopTest(aError, EFail);
sl@0
  1677
				}
sl@0
  1678
			break;
sl@0
  1679
			}
sl@0
  1680
		case EStateAOSPlaying:
sl@0
  1681
			{
sl@0
  1682
			if(aMdaAudioOutputStreamEvent == EEventAOSTimerComplete)
sl@0
  1683
				{
sl@0
  1684
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause while playing non-PCM format"));
sl@0
  1685
				error = iAudioOutputStream->Pause();
sl@0
  1686
				if(error == KErrNotSupported)
sl@0
  1687
					{
sl@0
  1688
					INFO_PRINTF1(_L("Pause while playing non-PCM format returned with KErrNotSupported as expected"));
sl@0
  1689
					}
sl@0
  1690
				else
sl@0
  1691
					{
sl@0
  1692
					ERR_PRINTF2(_L("Pause while playing non-PCM format returned with %d instead of KErrNotReady as expected"),error);
sl@0
  1693
					StopTest(error);
sl@0
  1694
					}
sl@0
  1695
				}
sl@0
  1696
			else
sl@0
  1697
				{
sl@0
  1698
				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1699
				StopTest(aError, EFail);
sl@0
  1700
				}
sl@0
  1701
			break;
sl@0
  1702
			}
sl@0
  1703
		default:
sl@0
  1704
			{
sl@0
  1705
			ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState);
sl@0
  1706
			StopTest(KErrGeneral);
sl@0
  1707
			}
sl@0
  1708
		}
sl@0
  1709
	}
sl@0
  1710
sl@0
  1711
/*
sl@0
  1712
 *========================================================================================================
sl@0
  1713
 * MM-MMF-ACLNT-I-0184-HP
sl@0
  1714
 *========================================================================================================
sl@0
  1715
 */
sl@0
  1716
RMdaOutputStreamPauseNonA3FTest::RMdaOutputStreamPauseNonA3FTest(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1717
	:	RMdaOutputStreamTestBase(aTestName,aSectName)
sl@0
  1718
	{
sl@0
  1719
	}
sl@0
  1720
sl@0
  1721
/*
sl@0
  1722
 *
sl@0
  1723
 * NewL
sl@0
  1724
 *
sl@0
  1725
 */
sl@0
  1726
RMdaOutputStreamPauseNonA3FTest* RMdaOutputStreamPauseNonA3FTest::NewL(const TDesC& aTestName, const TDesC& aSectName)
sl@0
  1727
	{
sl@0
  1728
	RMdaOutputStreamPauseNonA3FTest * self = new(ELeave)RMdaOutputStreamPauseNonA3FTest(aTestName,aSectName);
sl@0
  1729
	return self;
sl@0
  1730
	}
sl@0
  1731
sl@0
  1732
/*
sl@0
  1733
 *
sl@0
  1734
 * DoKickoffTestL
sl@0
  1735
 *
sl@0
  1736
 */
sl@0
  1737
void RMdaOutputStreamPauseNonA3FTest::DoKickoffTestL()
sl@0
  1738
	{
sl@0
  1739
	TPtrC filename;
sl@0
  1740
	// Get the pause time
sl@0
  1741
	if (!GetIntFromConfig(iSectName, KPause, iPause))
sl@0
  1742
		{
sl@0
  1743
		ERR_PRINTF1(_L("Pause time could not be retrieved from ini file"));
sl@0
  1744
		StopTest(KErrNotFound);
sl@0
  1745
		return;
sl@0
  1746
		}
sl@0
  1747
	// Get the filename of the audio file to play
sl@0
  1748
	if (!GetStringFromConfig(iSectName, KRawFile, filename))
sl@0
  1749
		{
sl@0
  1750
		ERR_PRINTF1(_L("Filename could not be retrieved from ini file"));
sl@0
  1751
		StopTest(KErrNotFound);
sl@0
  1752
		return;
sl@0
  1753
		}
sl@0
  1754
	// open using RFile for playback
sl@0
  1755
	iFilename.Copy(filename);
sl@0
  1756
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
sl@0
  1757
	if (err != KErrNone)
sl@0
  1758
		{
sl@0
  1759
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
sl@0
  1760
		iFs.Close();
sl@0
  1761
		StopTest(err);
sl@0
  1762
		return;
sl@0
  1763
		}
sl@0
  1764
	// Get size of iFile
sl@0
  1765
	TInt filesize = 0;
sl@0
  1766
	err = iFile.Size(filesize);
sl@0
  1767
	if (err != KErrNone)
sl@0
  1768
		{
sl@0
  1769
		INFO_PRINTF2(_L("Error getting size of iFile = %d"), err);
sl@0
  1770
		StopTest(err);
sl@0
  1771
		return;
sl@0
  1772
		}
sl@0
  1773
	// Initialise iBuf
sl@0
  1774
	iBuffer.CreateMaxL(filesize/KFileDivision);
sl@0
  1775
	
sl@0
  1776
	//Read first half of the file
sl@0
  1777
	err = iFile.Read(iBuffer);
sl@0
  1778
	if (err != KErrNone)
sl@0
  1779
		{
sl@0
  1780
		INFO_PRINTF2(_L("Error reading iFile %d"), err);
sl@0
  1781
		StopTest(err);
sl@0
  1782
		}	
sl@0
  1783
	
sl@0
  1784
	iPause = KTimeout; //Set timeout to stop test if playback was paused
sl@0
  1785
	iWait = ETrue;
sl@0
  1786
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
sl@0
  1787
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
sl@0
  1788
	}
sl@0
  1789
sl@0
  1790
/*
sl@0
  1791
 *
sl@0
  1792
 * DoTimerCallback
sl@0
  1793
 *
sl@0
  1794
 */
sl@0
  1795
void RMdaOutputStreamPauseNonA3FTest::DoTimerCallback()
sl@0
  1796
	{
sl@0
  1797
	INFO_PRINTF1(_L("Cancelling timer"));
sl@0
  1798
	iTimer->Cancel();
sl@0
  1799
	ERR_PRINTF1(_L("Playback was paused when it shouldn't"));
sl@0
  1800
	StopTest(KErrGeneral);	
sl@0
  1801
	}
sl@0
  1802
sl@0
  1803
/*
sl@0
  1804
 *
sl@0
  1805
 * Fsm - Executes playing events of AudioToneUtility in sequence
sl@0
  1806
 *
sl@0
  1807
 */
sl@0
  1808
void RMdaOutputStreamPauseNonA3FTest::Fsm(TMdaAOSEvent aMdaAudioOutputStreamEvent, TInt aError)
sl@0
  1809
	{
sl@0
  1810
	switch (iAudioOutputStreamState)
sl@0
  1811
		{
sl@0
  1812
		case EStateAOSCreated:
sl@0
  1813
			{
sl@0
  1814
			if (aMdaAudioOutputStreamEvent == EEventAOSInitialize)
sl@0
  1815
				{
sl@0
  1816
				TMdaAudioDataSettings settings;
sl@0
  1817
				//Default settings
sl@0
  1818
				settings.Query();
sl@0
  1819
				settings.iChannels = TMdaAudioDataSettings::EChannelsMono;
sl@0
  1820
				settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
sl@0
  1821
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Open"));
sl@0
  1822
				iAudioOutputStream->Open(&settings);
sl@0
  1823
				INFO_PRINTF1(_L("MdaAudioOutputStream State: EStateInitializing"));
sl@0
  1824
				iAudioOutputStreamState = EStateAOSInitializing;
sl@0
  1825
				}
sl@0
  1826
			else
sl@0
  1827
				{
sl@0
  1828
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventInitialize not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1829
				StopTest(aError, EFail);
sl@0
  1830
				}
sl@0
  1831
			break;
sl@0
  1832
			}
sl@0
  1833
		case EStateAOSInitializing:
sl@0
  1834
			{
sl@0
  1835
			if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError == KErrNone)
sl@0
  1836
				{
sl@0
  1837
				INFO_PRINTF1(_L("Calling SetVolume using MaxVolume/2"));
sl@0
  1838
				iAudioOutputStream->SetVolume(iAudioOutputStream->MaxVolume()/2);
sl@0
  1839
				INFO_PRINTF1(_L("Starting playback"));
sl@0
  1840
				iAudioOutputStream->WriteL(iBuffer);
sl@0
  1841
				StartTimer(iPause*KOneSecond);
sl@0
  1842
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Pause in non-a3f configuration"));
sl@0
  1843
				TInt err = iAudioOutputStream->Pause();
sl@0
  1844
				if(err == KErrNotSupported)
sl@0
  1845
					{
sl@0
  1846
					INFO_PRINTF1(_L("Pause in CMdaAudioOutputStream returned with KErrNotSupported as expected"));
sl@0
  1847
					}
sl@0
  1848
				else
sl@0
  1849
					{
sl@0
  1850
					ERR_PRINTF2(_L("Pause in CMdaAudioOutputStream returned with %d instead of KErrNotSupported as expected"),err);
sl@0
  1851
					StopTest(err);
sl@0
  1852
					}
sl@0
  1853
				INFO_PRINTF1(_L("Calling CMdaAudioOutputStream::Resume in non-a3f configuration"));
sl@0
  1854
				err = iAudioOutputStream->Resume();
sl@0
  1855
				if(err == KErrNotReady)
sl@0
  1856
					{
sl@0
  1857
					INFO_PRINTF1(_L("Resume in CMdaAudioOutputStream returned with KErrNotReady as expected"));
sl@0
  1858
					}
sl@0
  1859
				else
sl@0
  1860
					{
sl@0
  1861
					ERR_PRINTF2(_L("Resume in CMdaAudioOutputStream returned with %d instead of KErrNotReady as expected"),err);
sl@0
  1862
					StopTest(err);
sl@0
  1863
					}					
sl@0
  1864
				}
sl@0
  1865
			else if (aMdaAudioOutputStreamEvent == EEventAOSOpenComplete && aError != KErrNone)
sl@0
  1866
				{
sl@0
  1867
				ERR_PRINTF2(_L("MaoscOpenComplete returned with error = %d"), aError);
sl@0
  1868
				StopTest(aError);	
sl@0
  1869
				}
sl@0
  1870
			else
sl@0
  1871
				{
sl@0
  1872
				ERR_PRINTF2(_L("MdaAudioOutputStream EEventOpenComplete not received as expected. Received event: %d"), aMdaAudioOutputStreamEvent);
sl@0
  1873
				StopTest(aError, EFail);
sl@0
  1874
				}
sl@0
  1875
			break;
sl@0
  1876
			}
sl@0
  1877
		default:
sl@0
  1878
			{
sl@0
  1879
			ERR_PRINTF2(_L("Invalid MdaAudioOutputStream state received: %d"), iAudioOutputStreamState);
sl@0
  1880
			StopTest(KErrGeneral);
sl@0
  1881
			}
sl@0
  1882
		}
sl@0
  1883
	}