mmlibs/mmfw/tsrc/mmfunittest/DevSoundTest/src/TSU_MMF_DEVSOUND_STEP.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
    // Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
// System includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include "TSU_MMF_DEVSOUND_STEP.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include "TSU_MMF_DEVSOUND_SUITE.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <test/mmaudio/testsetvol.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
//const TInt KBufferLength = 0x1000; // default buffer length for tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
//const TInt KMaxBufferLength = 0x100000;		// max sound driver buffer size
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
//const TInt KMaxBufferLengthEKA2 = 0xBB800;	// max EKA2 sound driver buffer size
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
    const TInt KMaxBufferLengthEKA2Lubbock = 0x4000;	// max EKA2 sound driver buffer size on HW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
    const TInt KMaxBufferLengthEKA2Lubbock = 0x8000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
const TInt KHeapSizeToneTestEKA2 = 128000;	// heapsize for tone tests on EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
//Test directory/files:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
_LIT(KInputTestFileNamePCM16, "C:\\TSU_MMF_DEVSOUND_SUITE\\Input\\PCM_08_16_m.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
_LIT(KInputTestFileNamePCM8, "C:\\TSU_MMF_DEVSOUND_SUITE\\Input\\PCMU8Source.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
_LIT(KInputTestFileNamePCM8_16_s, "C:\\TSU_MMF_DEVSOUND_SUITE\\Input\\PCM_08_16_s.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
_LIT(KInputTestFileNamePCM16_16_m, "C:\\TSU_MMF_DEVSOUND_SUITE\\Input\\PCM_16_16_m.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
_LIT(KOutputDir, "C:\\TSU_MMF_DEVSOUND_SUITE\\Output\\");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
_LIT(KOutputTestFileName1BufPCM16, "C:\\TSU_MMF_DEVSOUND_SUITE\\Output\\Rec1BufferPCM.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
_LIT(KOutputTestFileName10BufPCM16, "C:\\TSU_MMF_DEVSOUND_SUITE\\Output\\Rec10BufferPCM.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
_LIT(KOutputTestFileName1BufPCM8, "C:\\TSU_MMF_DEVSOUND_SUITE\\Output\\Rec1BufferPCM8.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
_LIT(KOutputTestFileName10BufPCM8, "C:\\TSU_MMF_DEVSOUND_SUITE\\Output\\Rec10BufferPCM8.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
_LIT(KMsgDeleteDevsound, "---- Deleting DevSound object ----");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
_LIT(KMsgErrorDevSoundCallback,"DevSound called %S() callback with error = %d");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
_LIT(KInitializeCompleteText, "InitializeComplete");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
_LIT(KMsgErrorGetParameter,"Error in getting parameter %S from INI file");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
_LIT(KVolumeRamp, "VolumeRamp");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
_LIT(KDuration, "Duration");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
_LIT(KFrequencyTone1, "FrequencyTone1");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
_LIT(KFrequencyTone2, "FrequencyTone2");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
_LIT(KDTMFString, "DTMFString");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
_LIT(KVolume, "Volume");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
const TInt KLowToneFrequency = 440;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
const TInt KHighToneFrequency = 880;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
const TInt KTonePlayDuration = 2000000; // 2 seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
const TInt KRecordDuration = 2000000; // 2 seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
const TInt KPlayDuration = 1000000; // 1 seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
const TInt KMicroSecsInOneSec = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
const TInt KMicroSecsTwoSec = 2000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
// To compute elapsed time for some timed test cases
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
const TInt64 KPlayVarianceTime = 500000; // 0.5 seconds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
const TInt KDefaultOnDTMFLength = 250000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
const TInt KDefaultOffDTMFLength = 50000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
const TInt KDefaultPauseDTMFLength = 250000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
 * CTestStepDevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
 * Test step constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
CTestStepDevSound::CTestStepDevSound()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
 * ~CTestStepDevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
 *	 Test step destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
CTestStepDevSound::~CTestStepDevSound()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
 * SetTestSuite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
 * @param aTestSuite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
void CTestStepDevSound::SetTestSuite(const CTestSuiteDevSound* aTestSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	iDevSoundTestSuite = aTestSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
 * DoTestStepPreambleL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
TVerdict CTestStepDevSound::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	//Install the Active Scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	iAS = new (ELeave) CActiveScheduler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	CActiveScheduler::Install (iAS);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	iAL= new(ELeave)CActiveListener;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	INFO_PRINTF1(_L("Creating DevSound Object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
	TRAPD(err, iMMFDevSound = CMMFDevSound::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
 * DoTestStepPostambleL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
TVerdict CTestStepDevSound::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	INFO_PRINTF1(_L("Deleting DevSound Object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	iMMFDevSound = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	delete iAL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	iAL = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
	delete iAS;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	iAS = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
 * InitializeComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
void CTestStepDevSound::InitializeComplete (TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	INFO_PRINTF2(_L("DevSound called InitializeComplete with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
	User::RequestComplete(stat, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
	iCallbackArray[EInitComplete]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
 * ToneFinished
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
void CTestStepDevSound::ToneFinished (TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
	INFO_PRINTF2(_L("DevSound called ToneFinished with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	User::RequestComplete(stat, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	iCallbackArray[EToneFinished]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
 * BufferToBeFilled
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
 * @param aBuffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
void CTestStepDevSound::BufferToBeFilled (CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	if (aBuffer != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
		User::RequestComplete(stat, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
		iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
		User::RequestComplete(stat, KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
		iCallbackError = KErrNotFound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	iCallbackArray[EBuffToFill]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
 * PlayError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
void CTestStepDevSound::PlayError (TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
	INFO_PRINTF2(_L("DevSound called PlayError with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
	User::RequestComplete (stat, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
	iCallbackArray[EPlayError]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
 * BufferToBeEmptied
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
 * @param aBuffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
void CTestStepDevSound::BufferToBeEmptied (CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
	INFO_PRINTF1(_L("DevSound called BufferToBeEmptied"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
	if (aBuffer != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
		User::RequestComplete(stat, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
		iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
		User::RequestComplete(stat, KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
		iCallbackError = KErrNotFound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
	iCallbackArray[EBuffToEmpty]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
 * RecordError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
void CTestStepDevSound::RecordError (TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
	INFO_PRINTF2(_L("DevSound called RecordError with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
	TRequestStatus* stat = &(iAL->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
	User::RequestComplete (stat, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
	iCallbackArray[ERecError]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
 * ConvertError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
void CTestStepDevSound::ConvertError (TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
 * DeviceMessage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
void CTestStepDevSound::DeviceMessage (TUid /*aHwDeviceUid*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
 * TestInitialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
 * @param aMode
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
TVerdict CTestStepDevSound::TestInitialize(TMMFState aMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
	INFO_PRINTF2(_L("Initializing DevSound aMode=%d"), aMode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
	// Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
	TRAPD(err, iMMFDevSound->InitializeL(*this, aMode));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
		WARN_PRINTF2 (_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
		iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
			ERR_PRINTF3 (_L("DevSound InitializeComplete returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
		if (iCallbackArray[EInitComplete] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
			ERR_PRINTF2 (_L("DevSound InitializeComplete was called %d times, expected 1"), iCallbackArray[EInitComplete]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
 * TestInitialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
 * @param aHwDeviceUid
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
 * @param aMode
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
TVerdict CTestStepDevSound::TestInitialize(TUid aHwDeviceUid, TMMFState aMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
	INFO_PRINTF3(_L("Initializing DevSound aHwDeviceUid=0x%x aMode=%d"), aHwDeviceUid, aMode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	// Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	TRAPD(err, iMMFDevSound->InitializeL(*this, aHwDeviceUid, aMode));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
		if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
			WARN_PRINTF2 (_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
		INFO_PRINTF2 (_L("DevSound InitializeL left with expected error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
		WARN_PRINTF2 (_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
		iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
			ERR_PRINTF3 (_L("DevSound InitializeComplete returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
		if (iCallbackArray[EInitComplete] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
			ERR_PRINTF2 (_L("DevSound InitializeComplete was called %d times, expected 1"), iCallbackArray[EInitComplete]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
 * TestInitialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
 * @param aDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
 * @param aMode
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
TVerdict CTestStepDevSound::TestInitialize(TFourCC& aDataType, TMMFState aMode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
	INFO_PRINTF3(_L("Initializing DevSound aDataType=0x%x aMode=%d"), aDataType.FourCC(), aMode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
	// Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
	TRAPD(err, iMMFDevSound->InitializeL(*this, aDataType, aMode));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
		WARN_PRINTF2 (_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
		iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
			ERR_PRINTF3 (_L("DevSound InitializeComplete returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
		if (iCallbackArray[EInitComplete] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
			ERR_PRINTF2 (_L("DevSound InitializeComplete was called %d times, expected 1"), iCallbackArray[EInitComplete]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
 * TestCaps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
TVerdict CTestStepDevSound::TestCaps()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
	INFO_PRINTF1(_L("Checking Capabilities"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
	TMMFCapabilities caps = iMMFDevSound->Capabilities();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
	iExpectedValue = (EMMFSampleRate8000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
						EMMFSampleRate11025Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
						EMMFSampleRate16000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
						EMMFSampleRate22050Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
						EMMFSampleRate32000Hz |
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
						EMMFSampleRate44100Hz);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
	if ((caps.iRate & iExpectedValue) != (TUint)iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
		ERR_PRINTF3 (_L("DevSound Capabilities Supported Sample Rates returned %d, expected %d"), caps.iRate, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
	//// For SOUND DEVICE ENCODING (Amendment by Tony Ma 06/2003):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
	////
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
	//// WINS supports PCM, ALaw and MuLaw.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
	//// However Lubbock supports EMMFSoundEncoding16BitPCM only.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
	//// So the test has to split up into two parts:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
	// Rearranged by NJ - 06/08/03
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
	// On EKA2 the driver supports the same caps as on hardware
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
	// if running on EKA2 or WINS is not defined [running on HW]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND				//encoder value is not supported on a3f
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
	iExpectedValue = (EMMFSoundEncoding16BitPCM);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
	if ((caps.iEncoding & iExpectedValue) != (TUint)iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
		ERR_PRINTF3 (_L("DevSound Capabilities Supported Encoding returned %d, expected %d"), caps.iEncoding, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
	iExpectedValue = (EMMFMono | EMMFStereo);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
	if (caps.iChannels != (TUint)iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
		ERR_PRINTF3 (_L("DevSound Capabilities Supported Channels returned %d, expected %d"), caps.iChannels, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
// buffer size differs on EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
#if defined __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
    #ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
	    const TInt KMaxBufferLengthEKA2 = 0x4000;	// max EKA2 sound driver buffer size
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
    #else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
        const TInt KMaxBufferLengthEKA2 = 0xBB800;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
    #endif //SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
    iExpectedValue = KMaxBufferLengthEKA2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
	iExpectedValue = KMaxBufferLengthEKA2Lubbock;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
#endif // __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND				//buffer size is not supported on a3f
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
	if (caps.iBufferSize != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
		ERR_PRINTF3 (_L("DevSound Capabilities Supported Buffer Size returned %d, expected %d"), caps.iBufferSize, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
 * TestPlayTone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
 * @param aFreq
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
 * @param aDur
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
TVerdict CTestStepDevSound::TestPlayTone(TInt aFreq, TTimeIntervalMicroSeconds aDur)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
	//iExpectedValue = KErrUnderflow;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
	INFO_PRINTF3(_L("Playing Simple Tone aFreq=%d aDur=%d"), aFreq, aDur.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
	TRAPD(err, iMMFDevSound->PlayToneL(aFreq, aDur));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
		WARN_PRINTF2 (_L("DevSound PlayToneL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
		iCallbackError = err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
		iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
		// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
 		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
			ERR_PRINTF3 (_L("DevSound ToneFinished returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
		if (iCallbackArray[EToneFinished] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
			ERR_PRINTF2 (_L("DevSound ToneFinished was called %d times, expected 1"), iCallbackArray[EToneFinished]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
		TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
		if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
			ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
 * TestPlayDTMFString
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
 * @param aDTMFString
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
TVerdict CTestStepDevSound::TestPlayDTMFString(TPtrC aDTMFString)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
	iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
	// Set request active
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
	INFO_PRINTF2(_L("Playing DTMF String %S"), &aDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
	TRAPD(err, iMMFDevSound->PlayDTMFStringL(aDTMFString));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
	// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
 	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
		WARN_PRINTF2 (_L("DevSound PlayToneL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
			ERR_PRINTF3 (_L("DevSound ToneFinished returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
		if (iCallbackArray[EToneFinished] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
			ERR_PRINTF2 (_L("DevSound ToneFinished was called %d times, expected 1"), iCallbackArray[EToneFinished]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
		TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
		if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
			ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
 * TestSetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
 * @param aVol
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
void CTestStepDevSound::TestSetVolume(TInt aVol)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
	INFO_PRINTF2(_L("Setting Volume = %d"), aVol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
	iMMFDevSound->SetVolume(aVol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
 * TestSetGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
 * @param aGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
void CTestStepDevSound::TestSetGain(TInt aGain)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
	INFO_PRINTF2(_L("Setting Gain = %d"), aGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
	iMMFDevSound->SetGain(aGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
 * TestSetVolRamp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
TVerdict CTestStepDevSound::TestSetVolRamp(TInt /*aVol*/, TInt /*aDur*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
 * TestSetGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
TInt CTestStepDevSound::TestMaxVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
	INFO_PRINTF1(_L("Getting MaxVolume from DevSound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
	return iMMFDevSound->MaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
 * TestMaxGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
TInt CTestStepDevSound::TestMaxGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
	INFO_PRINTF1(_L("Getting MaxGain from DevSound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
	return iMMFDevSound->MaxGain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
 * TestVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
TInt CTestStepDevSound::TestVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
	INFO_PRINTF1(_L("Getting current Volume from DevSound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
	return iMMFDevSound->Volume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
 * TestGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
TInt CTestStepDevSound::TestGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
	INFO_PRINTF1(_L("Getting current Gain from DevSound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
	return iMMFDevSound->Gain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
 * TestPlayInit
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
TVerdict CTestStepDevSound::TestPlayInit()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
	//get buffer from devsound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
	TRAPD(err, iMMFDevSound->PlayInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
 	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
		WARN_PRINTF2 (_L("DevSound PlayInitL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
		// Check for alternative CI implementation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
		MTestSetVolIf *volIf = static_cast<MTestSetVolIf*>(iMMFDevSound->CustomInterface(KUidTestSetVolIf));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
		if (volIf)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
			err = volIf->SetVol(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
				ERR_PRINTF2 (_L("Unexpected error from SetVol() - %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
				return EFail;			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
		iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
		// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
		if (iCallbackArray[EBuffToFill] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
			ERR_PRINTF2 (_L("DevSound BufferToBeFilled was called %d times, expected 1"), iCallbackArray[EBuffToFill]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
		TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
		if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
			ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
 * TestPlayData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
TVerdict CTestStepDevSound::TestPlayData()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
	iMMFDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
	// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
 	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
	if (iCallbackArray[EBuffToFill] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
		if (iCallbackArray[EBuffToFill] == 0 && iCallbackArray[EPlayError] == 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
			INFO_PRINTF1(_L("DevSound PlayError was called 1 time.  Must be EOF."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
			ERR_PRINTF2 (_L("DevSound BufferToBeFilled was called %d times, expected 1"), iCallbackArray[EBuffToFill]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
	TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
	if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
		ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
 * TestRecordInit
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
TVerdict CTestStepDevSound::TestRecordInit()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
	INFO_PRINTF1(_L("Initializing Digital Audio Recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
	//get buffer from devsound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
	TRAPD(err, iMMFDevSound->RecordInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
	// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
 	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
		WARN_PRINTF2 (_L("DevSound RecordInitL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
		if (iCallbackArray[EBuffToEmpty] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
			ERR_PRINTF2 (_L("DevSound BufferToBeEmpty was called %d times, expected 1"), iCallbackArray[EBuffToEmpty]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
		TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
		if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
			ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
TVerdict CTestStepDevSound::TestRecordInitCapsNotMatch()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
	iExpectedValue = KErrPermissionDenied;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
	INFO_PRINTF1(_L("Initializing Digital Audio Recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
	//get buffer from devsound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
	TRAPD(err, iMMFDevSound->RecordInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
	if (err != KErrPermissionDenied && err!= KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
		WARN_PRINTF2 (_L("DevSound RecordInitL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
	if(err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
		CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
		// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
	 	if (iCallbackArray[EBuffToEmpty] != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
			ERR_PRINTF2 (_L("DevSound BufferToBeEmptied was called %d times, expected 0"), iCallbackArray[EBuffToEmpty]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
		if (iCallbackError != iExpectedValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
			ERR_PRINTF3 (_L("DevSound RecordError returned %d, expected %d"), iCallbackError, iExpectedValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
	 	if (iCallbackArray[ERecError] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
			ERR_PRINTF2 (_L("DevSound RecordError was called %d times, expected 1"), iCallbackArray[ERecError]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
 * TestRecordData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
TVerdict CTestStepDevSound::TestRecordData()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
	INFO_PRINTF1(_L("Recording Data to a Buffer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
	iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
	// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
 	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
	if (iCallbackArray[EBuffToEmpty] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
		if (iCallbackArray[EBuffToEmpty] == 0 && iCallbackArray[ERecError] == 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
			INFO_PRINTF1(_L("DevSound RecordError was called 1 time.  Must be EOF."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
			ERR_PRINTF2 (_L("DevSound BufferToBeEmptied was called %d times, expected 1"), iCallbackArray[EBuffToEmpty]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
	TInt tot = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
	if (tot > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
		ERR_PRINTF2 (_L("DevSound called %d callbacks, expected 1"), tot);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
TVerdict CTestStepDevSound::TestRecordDataCapsNotMatch()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
	iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
	INFO_PRINTF1(_L("Recording Data to a Buffer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
	iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
	// Start the active scheduler and catch the callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
 	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
 	if (iCallbackError != KErrPermissionDenied)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
 		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
 		WARN_PRINTF2 (_L("DevSound RecordInitL left with error = %d"), iCallbackError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
 * ResetCallbacks
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
void CTestStepDevSound::ResetCallbacks()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
	//Initialize callback array
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
	iCallbackArray.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
 * GetCallbackTotal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
TInt CTestStepDevSound::GetCallbackTotal()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
	TInt total = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
	for (TInt i = EInitComplete; i < EDeviceMsg; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
		total += iCallbackArray[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
	return total;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
 * GetCallbackTotal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
 * @param aNumSamples
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
 * @param aFilename
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
TVerdict CTestStepDevSound::TestDigitalPlayback(TInt aNumSamples, TDesC& aFilename)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
	TFourCC pcm16(KMMFFourCCCodePCM16); //default to pcm16 data type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
	return TestDigitalPlayback(aNumSamples, aFilename, pcm16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
 * TestDigitalPlayback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
 * @param aNumSamples
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
 * @param aFilename
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
 * @param aDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
TVerdict CTestStepDevSound::TestDigitalPlayback(TInt aNumSamples, TDesC& aFilename, TFourCC& aDataType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
	INFO_PRINTF4(_L("TestDigitalPlayback aNumSamples=%d aFilename=%S aDataType=0x%x"), aNumSamples, &aFilename, aDataType.FourCC());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
	TVerdict initOK = TestInitialize(aDataType, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
	//SetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
	TestSetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
	//Get a buffer to fill
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
	initOK = TestPlayInit();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
	//open file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
	TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
		ERR_PRINTF2 (_L("Could not connect to Filesystem. Error is %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
	err = file.Open(fs, aFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
		ERR_PRINTF2 (_L("Could not open input file. Error is %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
	TInt bufferCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
	if (aNumSamples < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
		{// Play to EOF
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
		while (initOK == KErrNone && iCallbackError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
			//read sizeof buffer from file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
			CMMFDataBuffer*  buffer = STATIC_CAST (CMMFDataBuffer*, iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
			file.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
			if (buffer->Data().Length()!= buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
				INFO_PRINTF3(_L("Data length copied from file = %d. Expected %d. Must be EOF"), buffer->Data().Length(), buffer->RequestSize());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
				iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
			//DevSound Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
			initOK = TestPlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
			bufferCount ++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
		while (bufferCount < aNumSamples && initOK == KErrNone && iCallbackError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
			//read sizeof buffer from file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
			CMMFDataBuffer* buffer = STATIC_CAST (CMMFDataBuffer*, iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
			file.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
			if (buffer->Data().Length()!= buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
				INFO_PRINTF3(_L("Data length copied from file = %d. Expected %d. Must be EOF"), buffer->Data().Length(), buffer->RequestSize());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
				iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
			//DevSound Play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
			initOK = TestPlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
			bufferCount ++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
		TRequestStatus* stat = &iAL->iStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
		User::WaitForRequest(*stat);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
		User::RequestComplete(stat, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
#endif		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
	file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
	if (initOK != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
	if (aNumSamples >= 0 && bufferCount != aNumSamples)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
 * TestDigitalRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
 * @param aNumSamples
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
 * @param aFilename
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
TVerdict CTestStepDevSound::TestDigitalRecord(TInt aNumSamples, TDesC& aFilename)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
	TFourCC pcm16(KMMFFourCCCodePCM16); //default to pcm16 data type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
	return TestDigitalRecord(aNumSamples, aFilename, pcm16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
 * TestDigitalRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
 * @param aNumSamples
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
 * @param aFilename
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
 * @param aDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
TVerdict CTestStepDevSound::TestDigitalRecord(TInt aNumSamples, TDesC& aFilename, TFourCC& aDataType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
	INFO_PRINTF4(_L("TestDigitalRecord aNumSamples=%d aFilename=%S aDataType=0x%x"), aNumSamples, &aFilename, aDataType.FourCC());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
	TVerdict initOK = TestInitialize(aDataType, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
	//open file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
	RFs fs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
	RFile file;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
	TInt err = fs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
		ERR_PRINTF2 (_L("Could not connect to Filesystem. Error is %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
	//Create output directory if it doesn't already exist
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
	fs.MkDir(KOutputDir);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
	err = file.Replace(fs, aFilename, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
		ERR_PRINTF2 (_L("Could not create output file. Error is %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
	//Initialize Recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
	initOK = TestRecordInit();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
	//SetGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
	TInt vol = iMMFDevSound->MaxVolume();	// Hacked... Fix this...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
	TestSetGain(vol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
	TInt bufferCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
	while (bufferCount < aNumSamples && initOK == KErrNone && iCallbackError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
		//DevSound Record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
		initOK = TestRecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
		//Write buffer to file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
		CMMFDataBuffer* buffer = STATIC_CAST (CMMFDataBuffer*, iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
		file.Write(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
		bufferCount ++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
	TRequestStatus* stat = &iAL->iStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
	User::RequestComplete(stat, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
	INFO_PRINTF3(_L("Total buffers recorded = %d, Expected %d"), bufferCount, aNumSamples);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
	file.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
	fs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
	if (initOK != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
	if (aNumSamples >= 0 && bufferCount != aNumSamples)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
 * CTestStepDevSoundCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
 * Test step constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
CTestStepDevSoundCustomInterface::CTestStepDevSoundCustomInterface()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
 * ~CTestStepDevSoundCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
 *	 Test step destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
CTestStepDevSoundCustomInterface::~CTestStepDevSoundCustomInterface()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
 * SetTestSuite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
 * @param aTestSuite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
void CTestStepDevSoundCustomInterface::SetTestSuite(const CTestSuiteDevSound* aTestSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
	iDevSoundTestSuite = aTestSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1160
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1161
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1162
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1163
 * DoTestStepPreambleL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
TVerdict CTestStepDevSoundCustomInterface::DoTestStepPreambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
	//Install the Active Scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
	iAS = new (ELeave) CActiveScheduler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
	CActiveScheduler::Install (iAS);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
	INFO_PRINTF1(_L("Creating DevSound Object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
	TRAPD(err, iMMFDevSound = CMMFDevSound::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
	TFileName filename(KInputTestFileNamePCM8_16_s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
	err = iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
    if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
        INFO_PRINTF2(_L("Could not connect to Filesystem. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
        return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
    err = iFile.Open(iFs, filename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
    if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
        INFO_PRINTF2(_L("Could not open input file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
        iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
        return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196
    return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1197
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1198
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1199
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1200
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1201
 * DoTestStepPostambleL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1202
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1203
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1204
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1205
TVerdict CTestStepDevSoundCustomInterface::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1206
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1207
	INFO_PRINTF1(_L("Deleting DevSound Object"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1208
	if (iMMFDevSound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1209
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1210
		delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1211
		iMMFDevSound = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1212
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1213
	delete iAS;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1214
	iAS = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1215
 	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1216
    iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1217
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1218
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1219
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1220
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1221
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1222
 * RunTest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1223
 * Run the test till the last buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1224
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1225
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1226
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1227
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1228
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1229
TVerdict CTestStepDevSoundCustomInterface::RunTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1230
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1231
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1232
	if (iLastBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1233
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1234
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1235
		iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1236
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1237
	return 	iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1238
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1240
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1241
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1242
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1243
 * FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1244
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1245
 * @param TMmfDevSoundEvents aDevSoundEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1246
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1247
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1248
void CTestStepDevSoundCustomInterface::FsmL(TMmfDevSoundEvents aDevSoundEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1249
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1250
    switch (aDevSoundEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1251
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1252
        case EDevSoundInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1253
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1254
	        iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1255
            INFO_PRINTF1(_L("InitializeL - Initializing DevSound..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1256
			TFourCC inputDataType(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1257
            TRAPD(err, iMMFDevSound->InitializeL(*this, inputDataType, EMMFStatePlaying)); // Initialize DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1258
   			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1259
				{//should accept stereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1260
				INFO_PRINTF1(_L("Failed to Initialize DevSound ..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1261
        	 	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1262
        	 	break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1263
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1264
          	iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1265
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1266
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1267
        case EDevSoundPlayInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1268
        	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1269
        	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1270
            TMMFCapabilities aCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1271
			aCapabilities.iRate = EMMFSampleRate8000Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1272
			aCapabilities.iEncoding = EMMFSoundEncoding16BitPCM;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1273
			aCapabilities.iChannels = EMMFStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1274
			TRAPD(err, iMMFDevSound->SetConfigL(aCapabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1275
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1276
				{//should accept stereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1277
				INFO_PRINTF1(_L("Failed to set configuration..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1278
        	 	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1279
        	 	break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1280
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1281
	        INFO_PRINTF1(_L("Initializing the audio device and starting the play process..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1282
            TRAPD(error, iMMFDevSound->PlayInitL());// Get buffer from DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1283
			if (error)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1284
				{//should accept stereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1285
				INFO_PRINTF1(_L("DevSound PlayInitL Failed ..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1286
        	 	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1287
        	 	break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1288
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1289
        	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1290
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1291
        case EDevSoundPlayData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1292
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1293
            // Fill the buffer with audio data and play the data in the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1294
            // Read sizeof buffer from file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1295
            CMMFDataBuffer*  buffer = STATIC_CAST(CMMFDataBuffer*, iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1296
            if (iBufferCount > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1297
            	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1298
            	TInt pos=iFile.Size(pos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1299
            	pos-=1024;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1300
            	iFile.Seek(ESeekCurrent,pos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1301
            	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1302
            iFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1303
            if (buffer->Data().Length() != buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1304
                {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1305
                INFO_PRINTF3(_L("Data length copied from file in FsmL = %d. Expected = %d. Must be EOF."), buffer->Data().Length(), buffer->RequestSize());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1306
                iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1307
                iLastBuffer = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1308
                RunTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1309
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1310
                }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1311
            INFO_PRINTF1(_L("PlayData - Playing data..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1312
            iMMFDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1313
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1314
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1315
		case EDevSoundEmptyBuffer:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1316
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1317
			INFO_PRINTF1(_L("Calling - DevSound EmptyBuffers..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1318
			TInt error = iMMFDevSound->EmptyBuffers();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1319
			if (error == KErrNotReady)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1320
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1321
				INFO_PRINTF2(_L("DevSound EmptyBuffers Device still not ready = %d"), error);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1322
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1323
			else if (error != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1324
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1325
				INFO_PRINTF2(_L("DevSound EmptyBuffers left with error = %d"), error);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1326
        		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1327
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1328
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1329
			RunTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1330
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1331
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1332
        default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1333
            INFO_PRINTF1(_L("Invalid DevSound event!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1334
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1335
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1336
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1337
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1338
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1339
 * InitializeComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1340
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1341
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1342
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1343
void CTestStepDevSoundCustomInterface::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1344
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1345
	INFO_PRINTF2(_L("DevSound called InitializeComplete with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1346
	iCallbackArray[EInitComplete]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1347
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1348
	if (iCallbackError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1349
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1350
        INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), iCallbackError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1351
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1352
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1353
    else if (iCallbackArray[EInitComplete] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1354
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1355
        INFO_PRINTF2(_L("DevSound InitializeComplete was called %d times, expected 1."), iCallbackArray[EInitComplete]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1356
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1357
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1358
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1359
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1360
        // Call to initialize the audio device and start the play process
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1361
        FsmL(EDevSoundPlayInit);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1362
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1363
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1364
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1365
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1366
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1367
 * ToneFinished
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1368
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1369
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1370
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1371
void CTestStepDevSoundCustomInterface::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1372
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1373
	INFO_PRINTF2(_L("DevSound called ToneFinished with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1374
	iCallbackArray[EToneFinished]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1375
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1376
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1377
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1378
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1379
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1380
 * BufferToBeFilled
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1381
 * @param aBuffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1382
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1383
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1384
void CTestStepDevSoundCustomInterface::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1385
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1386
	INFO_PRINTF1(_L("DevSound called BufferToBeFilled."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1387
	iBufferCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1388
	ERR_PRINTF2 (_L("Buffer Count %d"), iBufferCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1389
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1390
	if (aBuffer != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1391
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1392
		iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1393
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1394
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1395
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1396
		iCallbackError = KErrNotFound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1397
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1398
	iCallbackArray[EBuffToFill]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1399
    // Call to initialize the audio device and start the play process
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1400
    TRAPD(err, FsmL(EDevSoundPlayData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1401
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1402
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1403
		ERR_PRINTF2 (_L("Play datafailed with Error %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1404
		iCallbackError = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1405
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1406
	 else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1407
	 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1408
	 	//Call EmptyBuffers on each even number of buffer count
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1409
	 	if ( (iBufferCount % 2) == 0 && !iLastBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1410
	 		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1411
	 	 	TRAPD(err, FsmL(EDevSoundEmptyBuffer));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1412
	 		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1413
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1414
				ERR_PRINTF2 (_L("EmptyBuffers failed with Error %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1415
				iCallbackError = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1416
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1417
	 		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1418
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1419
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1420
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1421
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1422
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1423
 * BufferToBeEmptied
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1424
 * @param aBuffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1425
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1426
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1427
void CTestStepDevSoundCustomInterface::BufferToBeEmptied(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1428
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1429
	INFO_PRINTF1(_L("DevSound called BufferToBeEmptied"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1430
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1431
	if (aBuffer != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1432
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1433
		iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1434
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1435
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1436
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1437
		iCallbackError = KErrNotFound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1438
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1439
	iCallbackArray[EBuffToEmpty]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1440
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1442
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1443
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1444
 * PlayError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1445
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1446
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1447
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1448
void CTestStepDevSoundCustomInterface::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1449
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1450
	INFO_PRINTF2(_L("DevSound called PlayError with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1451
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1452
	iCallbackArray[EPlayError]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1453
	if (iCallbackArray[EBuffToFill] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1454
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1455
        if (iCallbackArray[EBuffToFill] == 0 && iCallbackArray[EPlayError] == 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1456
        	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1457
            INFO_PRINTF1(_L("DevSound PlayError was called 1 time.  Must be EOF."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1458
            iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1460
           	RunTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1461
        	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1462
        else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1463
        	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1464
            INFO_PRINTF2(_L("DevSound BufferToBeFilled was called %d times, expected 1"), iCallbackArray[EBuffToFill]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1465
            CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1466
        	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1467
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1468
    else if (iCallbackError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1469
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1470
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1471
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1472
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1473
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1474
        TInt total = GetCallbackTotal();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1475
        if (total > 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1476
        	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1477
            INFO_PRINTF2(_L("DevSound called %d callbacks, expected 1"), total);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1478
            CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1479
        	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1480
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1481
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1482
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1483
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1484
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1485
 * RecordError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1486
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1487
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1488
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1489
void CTestStepDevSoundCustomInterface::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1490
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1491
	INFO_PRINTF2(_L("DevSound called RecordError with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1492
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1493
	iCallbackArray[ERecError]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1494
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1495
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1496
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1497
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1498
 * ConvertError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1499
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1500
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1501
void CTestStepDevSoundCustomInterface::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1502
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1503
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1504
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1505
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1506
 * DeviceMessage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1507
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1508
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1509
void CTestStepDevSoundCustomInterface::DeviceMessage(TUid, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1510
	{}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1512
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1513
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1514
 * ResetCallbacks
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1515
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1516
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1517
void CTestStepDevSoundCustomInterface::ResetCallbacks()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1518
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1519
	//Initialize callback array
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1520
	iCallbackArray.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1521
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1522
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1523
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1524
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1525
 * GetCallbackTotal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1526
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1527
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1528
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1529
TInt CTestStepDevSoundCustomInterface::GetCallbackTotal()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1530
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1531
	TInt total = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1532
	for (TInt i = EInitComplete; i < EDeviceMsg; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1533
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1534
		total += iCallbackArray[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1535
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1536
	return total;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1537
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1540
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1541
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1542
 * CTestStepDevSoundInitializePlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1543
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1544
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1545
CTestStepDevSoundInitializePlay::CTestStepDevSoundInitializePlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1546
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1547
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0001-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1548
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1549
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1550
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1551
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1552
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1553
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1554
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1555
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1556
TVerdict CTestStepDevSoundInitializePlay::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1557
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1558
	INFO_PRINTF1(_L("Testing Initialize Play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1559
	return TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1560
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1561
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1562
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1563
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1564
 * CTestStepDevSoundInitializeHwDeviceUidPlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1565
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1566
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1567
CTestStepDevSoundInitializeHwDeviceUidPlay::CTestStepDevSoundInitializeHwDeviceUidPlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1568
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1569
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0002-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1570
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1571
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1572
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1573
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1574
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1575
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1576
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1577
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1578
TVerdict CTestStepDevSoundInitializeHwDeviceUidPlay::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1579
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1580
	#ifdef SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1581
		#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1582
			INFO_PRINTF1(_L("Testing Initialize with HwDevice uid Play - no longer supported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1583
		#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1584
			INFO_PRINTF1(_L("Testing Initialize with HwDevice uid Play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1585
		#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1586
		TUid uidHwDeviceMulawToPCM16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1587
		uidHwDeviceMulawToPCM16.iUid = KMmfUidHwDeviceMulawToPCM16; //use uLaw for this test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1588
		return TestInitialize(uidHwDeviceMulawToPCM16, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1589
	#else //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1590
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1591
	#endif //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1592
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1593
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1594
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1595
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1596
 * CTestStepDevSoundInitializeFourCCPlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1597
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1598
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1599
CTestStepDevSoundInitializeFourCCPlay::CTestStepDevSoundInitializeFourCCPlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1600
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1601
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0003-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1602
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1604
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1605
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1606
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1607
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1608
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1609
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1610
TVerdict CTestStepDevSoundInitializeFourCCPlay::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1611
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1612
	INFO_PRINTF1(_L("Testing Initialize with fourCC code Play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1613
	TFourCC pcm(' ','P','1','6'); //use pcm16 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1614
	return TestInitialize(pcm, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1615
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1616
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1617
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1618
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1619
 * CTestStepDevSoundInitializeRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1620
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1621
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1622
CTestStepDevSoundInitializeRecord::CTestStepDevSoundInitializeRecord()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1623
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1624
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0004-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1625
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1626
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1627
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1628
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1629
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1630
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1631
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1632
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1633
TVerdict CTestStepDevSoundInitializeRecord::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1634
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1635
	INFO_PRINTF1(_L("Testing Initialize Record"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1636
	return TestInitialize(EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1637
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1638
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1639
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1640
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1641
 * CTestStepDevSoundInitializeHwDeviceUidRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1642
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1643
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1644
CTestStepDevSoundInitializeHwDeviceUidRecord::CTestStepDevSoundInitializeHwDeviceUidRecord()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1645
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1646
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0005-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1647
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1648
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1649
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1650
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1651
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1652
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1653
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1654
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1655
TVerdict CTestStepDevSoundInitializeHwDeviceUidRecord::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1656
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1657
	#ifdef SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1658
		#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1659
			INFO_PRINTF1(_L("Testing Initialize with HwDevice uid Record - no longer supported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1660
		#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1661
			INFO_PRINTF1(_L("Testing Initialize with HwDevice uid Record"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1662
		#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1663
		TUid uidHwDeviceMulawToPCM16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1664
		uidHwDeviceMulawToPCM16.iUid = KMmfUidHwDeviceMulawToPCM16; //use uLaw for this test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1665
		return TestInitialize(uidHwDeviceMulawToPCM16, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1666
	#else //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1667
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1668
	#endif //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1669
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1670
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1671
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1672
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1673
 * CTestStepDevSoundInitializeFourCCRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1674
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1675
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1676
CTestStepDevSoundInitializeFourCCRecord::CTestStepDevSoundInitializeFourCCRecord()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1677
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1678
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0006-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1679
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1680
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1681
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1682
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1683
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1684
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1685
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1686
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1687
TVerdict CTestStepDevSoundInitializeFourCCRecord::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1688
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1689
	INFO_PRINTF1(_L("Testing Initialize with fourCC code Record"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1690
	TFourCC pcm(' ', 'P', '1', '6'); //use pcm16 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1691
	return TestInitialize(pcm, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1692
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1693
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1694
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1695
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1696
 * CTestStepDevSoundInitializeInvalidFourCC
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1697
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1698
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1699
CTestStepDevSoundInitializeInvalidFourCC::CTestStepDevSoundInitializeInvalidFourCC()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1700
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1701
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0007-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1702
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1703
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1704
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1705
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1706
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1707
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1708
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1709
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1710
TVerdict CTestStepDevSoundInitializeInvalidFourCC::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1711
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1712
	INFO_PRINTF1(_L("Testing Initialize with invalid fourCC code"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1713
	TFourCC invalidFourCC('A','B','C','D'); //use invalid fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1714
	INFO_PRINTF1(_L("Initializing DevSound with invalid fourCC"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1716
	// Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1717
	TRAPD(err, iMMFDevSound->InitializeL(*this, invalidFourCC, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1718
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1719
		if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1720
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1721
		if (err != KErrNotFound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1722
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1723
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1724
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1725
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1726
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1727
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1728
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1729
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1730
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1731
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1732
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1733
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1734
 * CTestStepDevSoundCheckCaps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1735
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1736
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1737
CTestStepDevSoundCheckCaps::CTestStepDevSoundCheckCaps()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1738
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1739
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0008-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1740
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1742
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1743
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1744
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1745
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1746
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1747
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1748
TVerdict CTestStepDevSoundCheckCaps::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1749
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1750
	INFO_PRINTF1(_L("Testing Capabilities"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1751
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1752
	// Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1753
	TVerdict initOK = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1754
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1755
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1756
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1757
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1758
	// Check Capabilities
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1759
	return TestCaps();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1760
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1761
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1762
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1763
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1764
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1765
 * CTestStepDevSoundSimpleTone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1766
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1767
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1768
CTestStepDevSoundSimpleTone::CTestStepDevSoundSimpleTone()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1769
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1770
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0009-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1771
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1772
	// need to increase heap size on EKA2 HW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1773
#if !defined __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1774
	iHeapSize = KHeapSizeToneTestEKA2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1775
#endif // EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1776
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1777
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1778
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1779
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1780
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1781
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1782
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1783
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1784
TVerdict CTestStepDevSoundSimpleTone::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1785
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1786
	INFO_PRINTF1(_L("Testing Simple Tone Playback"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1787
	TInt freq = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1788
	TTimeIntervalMicroSeconds dur(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1789
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1790
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1791
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1792
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1793
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1794
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1795
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1796
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1797
	TestSetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1798
	iExpectedValue = KErrUnderflow;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1799
	return TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1800
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1801
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1802
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1803
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1804
 * CTestStepDevSoundDTMFTones
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1805
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1806
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1807
CTestStepDevSoundDTMFTones::CTestStepDevSoundDTMFTones()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1808
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1809
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0010-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1811
	// need to increase heap size on EKA2 HW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1812
#if !defined __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1813
	iHeapSize = KHeapSizeToneTestEKA2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1814
#endif // EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1815
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1816
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1817
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1818
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1819
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1820
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1821
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1822
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1823
TVerdict CTestStepDevSoundDTMFTones::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1824
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1825
	INFO_PRINTF1(_L("Testing DTMF Playback"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1826
	TPtrC dtmfString = (_L("0123456789,abcdef,*#"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1827
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1828
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1829
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1830
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1831
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1832
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1833
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1834
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1835
	iExpectedValue = KErrUnderflow;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1836
	return TestPlayDTMFString(dtmfString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1837
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1839
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1840
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1841
 * CTestStepDevSoundSimpleToneChangeVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1842
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1843
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1844
CTestStepDevSoundSimpleToneChangeVolume::CTestStepDevSoundSimpleToneChangeVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1845
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1846
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0011-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1848
	// need to increase heap size on EKA2 HW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1849
#if !defined __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1850
	iHeapSize = KHeapSizeToneTestEKA2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1851
#endif // EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1852
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1853
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1854
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1855
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1856
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1857
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1858
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1859
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1860
TVerdict CTestStepDevSoundSimpleToneChangeVolume::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1861
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1862
	INFO_PRINTF1(_L("Testing Simple Tone Playback with various Volumes"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1863
	TVerdict testOK = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1864
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1865
	TInt freq = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1866
	TTimeIntervalMicroSeconds dur(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1867
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1868
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1869
	testOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1870
	if (testOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1871
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1872
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1873
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1874
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1875
	// Do all the error handling too....
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1876
	// Set volume = 0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1877
	TestSetVolume (0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1878
	// Play Tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1879
	iExpectedValue = KErrUnderflow;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1880
	testOK = TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1881
	if (testOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1882
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1883
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1884
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1885
	// Set volume = MaxVolume/2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1886
	TestSetVolume (iMMFDevSound->MaxVolume()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1887
	// Play Tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1888
	testOK = TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1889
	if (testOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1890
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1891
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1892
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1893
	// Set volume = MaxVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1894
	TestSetVolume (iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1895
	// Play Tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1896
	return TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1897
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1899
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1900
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1901
 * CTestStepDevSoundDTMFTonesInvalidStrings
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1902
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1903
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1904
CTestStepDevSoundDTMFTonesInvalidStrings::CTestStepDevSoundDTMFTonesInvalidStrings()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1905
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1906
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0012-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1907
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1908
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1909
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1910
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1911
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1912
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1913
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1914
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1915
TVerdict CTestStepDevSoundDTMFTonesInvalidStrings::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1916
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1917
	INFO_PRINTF1(_L("Testing DTMF Playback with Invalid Characters"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1918
	TPtrC dtmfString = (_L("12345$$6gh"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1919
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1920
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1921
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1922
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1923
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1924
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1925
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1926
	//iExpectedValue = KErrCorrupt; //Return KErrUnderFlow by Nokia adaption
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1927
	TestPlayDTMFString(dtmfString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1928
	if (iCallbackError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1929
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1930
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1931
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1932
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1933
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1934
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1935
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1936
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1937
 * CTestStepDevSoundSimpleToneInvalidFreq
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1938
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1939
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1940
CTestStepDevSoundSimpleToneInvalidFreq::CTestStepDevSoundSimpleToneInvalidFreq()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1941
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1942
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0013-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1943
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1944
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1945
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1946
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1947
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1948
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1949
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1950
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1951
TVerdict CTestStepDevSoundSimpleToneInvalidFreq::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1952
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1953
	INFO_PRINTF1(_L("Testing Simple Tone Playback with Invalid Frequency"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1954
	TInt freq = -100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1955
	TTimeIntervalMicroSeconds dur (2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1956
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1957
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1958
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1959
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1960
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1961
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1962
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1963
	TestSetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1964
	//iExpectedValue = KErrArgument; //Return KErrUnderFlow by Nokia adaption 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1965
	TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1966
	if (iCallbackError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1967
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1968
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1969
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1970
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1971
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1972
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1973
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1974
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1975
 * CTestStepDevSoundSimpleToneInvalidDuration
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1976
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1977
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1978
CTestStepDevSoundSimpleToneInvalidDuration::CTestStepDevSoundSimpleToneInvalidDuration()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1979
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1980
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0014-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1981
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1982
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1983
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1984
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1985
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1986
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1987
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1988
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1989
TVerdict CTestStepDevSoundSimpleToneInvalidDuration::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1990
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1991
	INFO_PRINTF1(_L("Testing Simple Tone Playback with Invalid Duration"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1992
	TInt freq = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1993
	TTimeIntervalMicroSeconds dur (-2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1994
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1995
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1996
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1997
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1998
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1999
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2000
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2001
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2002
	TestSetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2003
    //iExpectedValue = KErrArgument; //Return KErrUnderFlow by Nokia adaption 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2004
	TestPlayTone(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2005
	if (iCallbackError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2006
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2007
		return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2008
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2009
	return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2010
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2011
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2012
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2013
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2014
 * CTestStepDevSoundPlayInit
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2015
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2016
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2017
CTestStepDevSoundPlayInit::CTestStepDevSoundPlayInit()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2018
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2019
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0015-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2020
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2021
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2022
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2023
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2024
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2025
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2026
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2027
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2028
TVerdict CTestStepDevSoundPlayInit::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2029
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2030
	INFO_PRINTF1(_L("Testing DevSound Digital Audio PlayInit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2031
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2033
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2034
	TVerdict initOK = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2035
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2036
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2037
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2038
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2039
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2040
	return TestPlayInit();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2041
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2042
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2043
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2044
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2045
 * CTestStepDevSoundPlay1BufferPCM16
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2046
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2047
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2048
CTestStepDevSoundPlay1BufferPCM16::CTestStepDevSoundPlay1BufferPCM16()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2049
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2050
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0016-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2051
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2053
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2054
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2055
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2056
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2057
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2058
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2059
TVerdict CTestStepDevSoundPlay1BufferPCM16::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2060
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2061
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback (1 Buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2062
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2063
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2064
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2065
	TFileName filename(KInputTestFileNamePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2066
	return TestDigitalPlayback (1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2067
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2068
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2069
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2070
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2071
 * CTestStepDevSoundPlay5BuffersPCM16
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2072
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2073
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2074
CTestStepDevSoundPlay5BuffersPCM16::CTestStepDevSoundPlay5BuffersPCM16()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2075
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2076
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0017-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2077
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2078
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2079
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2080
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2081
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2082
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2083
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2084
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2085
TVerdict CTestStepDevSoundPlay5BuffersPCM16::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2086
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2087
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback (5 Buffers)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2088
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2089
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2090
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2091
	TFileName filename(KInputTestFileNamePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2092
	return TestDigitalPlayback (5, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2093
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2094
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2095
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2096
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2097
 * CTestStepDevSoundPlayEOFPCM16
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2098
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2099
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2100
CTestStepDevSoundPlayEOFPCM16::CTestStepDevSoundPlayEOFPCM16()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2101
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2102
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0018-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2103
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2105
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2106
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2107
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2108
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2109
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2110
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2111
TVerdict CTestStepDevSoundPlayEOFPCM16::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2112
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2113
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback to EOF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2114
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2116
	TFileName filename(KInputTestFileNamePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2117
	return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2118
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2120
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2121
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2122
 * CTestStepDevSoundPlay1BufferPCM8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2123
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2124
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2125
CTestStepDevSoundPlay1BufferPCM8::CTestStepDevSoundPlay1BufferPCM8()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2126
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2127
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0019-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2128
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2130
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2131
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2132
 * CTestStepDevSoundPlayPauseTone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2133
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2134
 * Play, pause and resume audio, then attempt to play a higher priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2135
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2136
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2137
CTestStepDevSoundPlayPauseTone* CTestStepDevSoundPlayPauseTone::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2138
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2139
	return new (ELeave) CTestStepDevSoundPlayPauseTone(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2140
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2141
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2142
CTestStepDevSoundPlayPauseTone::CTestStepDevSoundPlayPauseTone(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2143
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2144
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2145
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0065-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2146
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2147
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2148
void CTestStepDevSoundPlayPauseTone::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2149
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2150
	iInputFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2151
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2152
	delete iMMFToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2153
	delete iMMFAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2154
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2156
void CTestStepDevSoundPlayPauseTone::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2157
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2158
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2159
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2160
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2161
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2162
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2163
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2164
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2165
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2166
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2167
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2168
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2169
void CTestStepDevSoundPlayPauseTone::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2170
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2171
	if (iTonePlayKickedOff && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2172
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2173
		INFO_PRINTF1(_L("The tone has played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2174
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2175
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2176
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2177
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2178
		INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2179
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2180
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2181
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2182
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2183
void CTestStepDevSoundPlayPauseTone::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2184
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2185
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2186
	Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2187
	iBufferCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2188
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2190
void CTestStepDevSoundPlayPauseTone::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2191
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2192
	if (iTonePlayKickedOff && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2193
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2194
		INFO_PRINTF1(_L("The tone devsound has gained control correctly"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2195
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2196
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2197
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2198
		INFO_PRINTF1(_L("A play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2199
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2200
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2201
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2202
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2203
void CTestStepDevSoundPlayPauseTone::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2204
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2205
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2206
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2207
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2209
void CTestStepDevSoundPlayPauseTone::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2210
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2211
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2212
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2213
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2215
void CTestStepDevSoundPlayPauseTone::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2216
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2217
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2218
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2219
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2220
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2221
void CTestStepDevSoundPlayPauseTone::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2222
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2223
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2224
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2225
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2227
void CTestStepDevSoundPlayPauseTone::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2228
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2229
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2230
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2231
	//create DevSound for audio play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2232
	iMMFAudioDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2234
	//create DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2235
	iMMFToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2236
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2237
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2238
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2239
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2240
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2241
	iMMFToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2242
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2243
	User::LeaveIfError(iInputFile.Open(iFs, KInputTestFileNamePCM16, EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2244
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2245
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2246
	iTestState = EStateInitialiseAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2247
	INFO_PRINTF1(_L("Initialising audio devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2248
	TFourCC dataType(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2249
	iMMFAudioDevSound->InitializeL(*this, dataType, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2250
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2251
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2252
void CTestStepDevSoundPlayPauseTone::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2253
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2254
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2255
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2256
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2257
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2258
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2259
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2260
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2261
void CTestStepDevSoundPlayPauseTone::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2262
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2263
	const TInt KBuffersToPlay = 10;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2264
	const TInt KPauseAtBufferCount = 3;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2265
	const TInt KPlayToneAtBufferCount = 6;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2266
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2267
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2268
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2269
	case EStateInitialiseAudioDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2270
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2271
		iTestState = EStateInitialiseToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2272
		INFO_PRINTF1(_L("Initialising tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2273
		iMMFToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2274
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2275
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2276
	case EStateInitialiseToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2277
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2278
		iTestState = EStatePlayInit;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2279
		INFO_PRINTF1(_L("Initialising audio play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2280
		iMMFAudioDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2281
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2282
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2283
	case EStatePlayInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2284
	case EStatePlayData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2285
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2286
		if (iBufferCount < KBuffersToPlay)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2287
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2288
			iTestState = EStatePlayData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2289
			INFO_PRINTF2(_L("Playing buffer %d"), iBufferCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2290
			CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2291
			iInputFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2292
			if (buffer->Data().Length() != buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2293
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2294
				iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2295
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2296
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2297
			if (iBufferCount == KPlayToneAtBufferCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2298
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2299
				iTonePlayKickedOff = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2300
				TestPlayToneL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2301
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2302
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2303
			iMMFAudioDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2304
			if (iBufferCount == KPauseAtBufferCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2305
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2306
				// pause and resume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2307
#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2308
				iMMFAudioDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2309
				User::After(1000000);	// allow listener to hear the pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2310
				iMMFAudioDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2311
#endif				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2312
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2313
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2314
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2315
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2316
			INFO_PRINTF1(_L("Audio finished playing with no tone play pre-emption"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2317
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2318
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2319
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2320
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2321
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2322
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2323
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2324
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2325
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2326
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2327
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2328
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2329
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2330
void CTestStepDevSoundPlayPauseTone::TestPlayToneL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2331
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2332
	TInt freq = 440;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2333
	TTimeIntervalMicroSeconds dur(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2335
	INFO_PRINTF1(_L("Playing 440Hz tone for 1s"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2336
	iMMFToneDevSound->PlayToneL(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2337
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2338
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2339
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2340
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2341
 * CTestStepDevSoundPlayPauseTone2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2342
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2343
 * Play and pause audio, then attempt to play a higher priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2344
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2345
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2346
CTestStepDevSoundPlayPauseTone2* CTestStepDevSoundPlayPauseTone2::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2347
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2348
	return new (ELeave) CTestStepDevSoundPlayPauseTone2(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2349
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2350
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2351
CTestStepDevSoundPlayPauseTone2::CTestStepDevSoundPlayPauseTone2(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2352
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2353
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2354
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0066-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2355
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2357
void CTestStepDevSoundPlayPauseTone2::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2358
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2359
	iInputFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2360
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2361
	delete iMMFToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2362
	delete iMMFAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2363
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2364
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2365
void CTestStepDevSoundPlayPauseTone2::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2366
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2367
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2368
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2369
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2370
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2371
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2372
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2373
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2374
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2375
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2376
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2377
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2378
void CTestStepDevSoundPlayPauseTone2::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2379
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2380
	if (iTonePlayKickedOff && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2381
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2382
		INFO_PRINTF1(_L("The tone has played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2383
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2384
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2385
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2386
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2387
		INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2388
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2389
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2390
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2391
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2392
void CTestStepDevSoundPlayPauseTone2::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2393
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2394
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2395
	Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2396
	iBufferCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2397
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2398
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2399
void CTestStepDevSoundPlayPauseTone2::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2400
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2401
	if (iTonePlayKickedOff && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2402
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2403
		INFO_PRINTF1(_L("The tone devsound has gained control correctly"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2404
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2405
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2406
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2407
		INFO_PRINTF1(_L("A play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2408
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2409
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2410
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2412
void CTestStepDevSoundPlayPauseTone2::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2413
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2414
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2415
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2416
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2418
void CTestStepDevSoundPlayPauseTone2::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2419
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2420
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2421
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2422
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2423
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2424
void CTestStepDevSoundPlayPauseTone2::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2425
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2426
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2427
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2428
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2430
void CTestStepDevSoundPlayPauseTone2::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2431
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2432
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2433
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2434
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2435
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2436
void CTestStepDevSoundPlayPauseTone2::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2437
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2438
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2439
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2440
	//create DevSound for audio play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2441
	iMMFAudioDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2442
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2443
	//create DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2444
	iMMFToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2445
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2446
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2447
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2448
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2449
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2450
	iMMFToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2451
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2452
	User::LeaveIfError(iInputFile.Open(iFs, KInputTestFileNamePCM16, EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2453
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2454
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2455
	iTestState = EStateInitialiseAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2456
	INFO_PRINTF1(_L("Initialising audio devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2457
	TFourCC dataType(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2458
	iMMFAudioDevSound->InitializeL(*this, dataType, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2459
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2460
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2461
void CTestStepDevSoundPlayPauseTone2::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2462
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2463
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2464
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2465
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2466
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2467
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2468
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2469
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2470
void CTestStepDevSoundPlayPauseTone2::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2471
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2472
	const TInt KBuffersToPlay = 10;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2473
	const TInt KPauseAtBufferCount = 3;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2474
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2475
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2476
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2477
	case EStateInitialiseAudioDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2478
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2479
		iTestState = EStateInitialiseToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2480
		INFO_PRINTF1(_L("Initialising tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2481
		iMMFToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2482
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2483
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2484
	case EStateInitialiseToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2485
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2486
		iTestState = EStatePlayInit;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2487
		INFO_PRINTF1(_L("Initialising audio play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2488
		iMMFAudioDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2489
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2490
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2491
	case EStatePlayInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2492
	case EStatePlayData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2493
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2494
		if (iBufferCount < KBuffersToPlay)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2495
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2496
			iTestState = EStatePlayData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2497
			INFO_PRINTF2(_L("Playing buffer %d"), iBufferCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2498
			CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2499
			iInputFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2500
			if (buffer->Data().Length() != buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2501
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2502
				iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2503
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2504
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2505
			iMMFAudioDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2506
			if (iBufferCount == KPauseAtBufferCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2507
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2508
				iMMFAudioDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2509
				User::After(1000000);	// allow listener to hear the pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2510
				iTonePlayKickedOff = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2511
				TestPlayToneL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2512
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2513
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2514
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2515
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2516
			INFO_PRINTF1(_L("Audio finished playing with no tone play pre-emption"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2517
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2518
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2519
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2520
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2521
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2522
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2523
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2524
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2525
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2526
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2527
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2528
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2529
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2530
void CTestStepDevSoundPlayPauseTone2::TestPlayToneL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2531
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2532
	TInt freq = 440;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2533
	TTimeIntervalMicroSeconds dur(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2534
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2535
	INFO_PRINTF1(_L("Playing 440Hz tone for 1s"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2536
	iMMFToneDevSound->PlayToneL(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2537
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2539
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2540
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2541
 * CTestStepDevSoundPlayPauseTone3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2542
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2543
 * Play, pause and resume audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2544
 * Attempt to play a lower priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2545
 * Attempt to play a higher priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2546
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2547
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2548
CTestStepDevSoundPlayPauseTone3* CTestStepDevSoundPlayPauseTone3::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2549
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2550
	return new (ELeave) CTestStepDevSoundPlayPauseTone3(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2551
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2552
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2553
CTestStepDevSoundPlayPauseTone3::CTestStepDevSoundPlayPauseTone3(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2554
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2555
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2556
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0067-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2557
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2558
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2559
void CTestStepDevSoundPlayPauseTone3::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2560
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2561
	iInputFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2562
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2563
	delete iMMFLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2564
	delete iMMFHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2565
	delete iMMFAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2566
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2567
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2568
void CTestStepDevSoundPlayPauseTone3::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2569
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2570
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2571
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2572
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2573
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2574
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2575
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2576
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2577
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2578
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2579
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2580
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2581
void CTestStepDevSoundPlayPauseTone3::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2582
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2583
	if (iHighPriorityTonePlayKickedOff && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2584
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2585
		INFO_PRINTF1(_L("The high priority tone was played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2586
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2587
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2588
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2589
	else if (iLowPriorityTonePlayKickedOff && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2590
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2591
		INFO_PRINTF1(_L("The low priority tone devsound was correctly ignored"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2592
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2593
		// start the higher priority tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2594
		TestPlayToneL(EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2595
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2596
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2597
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2598
	INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2599
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2600
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2601
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2602
void CTestStepDevSoundPlayPauseTone3::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2603
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2604
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2605
	Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2606
	iBufferCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2607
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2608
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2609
void CTestStepDevSoundPlayPauseTone3::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2610
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2611
	if (iLowPriorityTonePlayKickedOff && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2612
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2613
		INFO_PRINTF1(_L("The low priority tone devsound has gained control incorrectly"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2614
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2615
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2616
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2617
	else if (iHighPriorityTonePlayKickedOff && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2618
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2619
		INFO_PRINTF1(_L("The high priority tone devsound has gained control correctly"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2620
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2621
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2622
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2623
	INFO_PRINTF1(_L("An audio play error occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2624
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2625
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2626
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2627
void CTestStepDevSoundPlayPauseTone3::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2628
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2629
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2630
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2631
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2632
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2633
void CTestStepDevSoundPlayPauseTone3::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2634
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2635
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2636
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2637
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2638
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2639
void CTestStepDevSoundPlayPauseTone3::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2640
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2641
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2642
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2643
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2645
void CTestStepDevSoundPlayPauseTone3::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2646
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2647
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2648
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2649
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2650
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2651
void CTestStepDevSoundPlayPauseTone3::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2652
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2653
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2655
	//create DevSound for audio play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2656
	iMMFAudioDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2658
	//create low priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2659
	iMMFLowPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2661
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2662
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2663
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2664
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2665
	iMMFLowPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2666
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2667
	//create high priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2668
	iMMFHighPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2669
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2670
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2671
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2672
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2673
	iMMFHighPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2674
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2675
	User::LeaveIfError(iInputFile.Open(iFs, KInputTestFileNamePCM16, EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2676
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2677
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2678
	iTestState = EStateInitialiseAudioDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2679
	INFO_PRINTF1(_L("Initialising audio devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2680
	TFourCC dataType(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2681
	iMMFAudioDevSound->InitializeL(*this, dataType, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2682
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2683
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2684
void CTestStepDevSoundPlayPauseTone3::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2685
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2686
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2687
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2688
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2689
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2690
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2691
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2692
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2693
void CTestStepDevSoundPlayPauseTone3::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2694
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2695
	const TInt KBuffersToPlay = 10;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2696
	const TInt KPauseAtBufferCount = 3;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2698
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2699
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2700
	case EStateInitialiseAudioDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2701
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2702
		iTestState = EStateInitialiseLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2703
		INFO_PRINTF1(_L("Initialising low priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2704
		iMMFLowPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2705
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2706
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2707
	case EStateInitialiseLowPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2708
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2709
		iTestState = EStateInitialiseHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2710
		INFO_PRINTF1(_L("Initialising high priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2711
		iMMFHighPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2712
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2713
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2714
	case EStateInitialiseHighPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2715
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2716
		iTestState = EStatePlayInit;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2717
		INFO_PRINTF1(_L("Initialising audio play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2718
		iMMFAudioDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2719
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2720
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2721
	case EStatePlayInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2722
	case EStatePlayData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2723
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2724
		if (iBufferCount < KBuffersToPlay)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2725
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2726
			iTestState = EStatePlayData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2727
			INFO_PRINTF2(_L("Playing buffer %d"), iBufferCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2728
			CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2729
			iInputFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2730
			if (buffer->Data().Length() != buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2731
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2732
				iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2733
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2734
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2735
			iMMFAudioDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2736
			if (iBufferCount == KPauseAtBufferCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2737
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2738
				iMMFAudioDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2739
				User::After(1000000);	// allow listener to hear the pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2740
				iLowPriorityTonePlayKickedOff = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2741
				TestPlayToneL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2742
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2743
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2744
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2745
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2746
			INFO_PRINTF1(_L("Audio finished playing with no tone play pre-emption"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2747
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2748
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2749
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2750
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2751
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2752
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2753
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2754
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2755
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2756
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2757
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2758
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2759
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2760
void CTestStepDevSoundPlayPauseTone3::TestPlayToneL(TBool aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2761
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2762
	TInt freq = 440;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2763
	TTimeIntervalMicroSeconds dur(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2764
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2765
	INFO_PRINTF1(_L("Playing 440Hz tone for 1s"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2766
	if (aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2767
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2768
		iLowPriorityTonePlayKickedOff = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2769
		iHighPriorityTonePlayKickedOff = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2770
		iMMFLowPriorityToneDevSound->PlayToneL(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2771
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2772
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2773
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2774
		iLowPriorityTonePlayKickedOff = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2775
		iHighPriorityTonePlayKickedOff = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2776
		iMMFHighPriorityToneDevSound->PlayToneL(freq, dur);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2777
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2778
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2779
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2780
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2781
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2782
 * RTestStepDevSoundToneTone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2783
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2784
 * Play a high priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2785
 * Attempt to pre-empt with a low priority tone (it should fail with KErrInUse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2786
 * Stop the high priority tone and try to play the low priority tone again
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2787
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2788
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2789
RTestStepDevSoundToneTone* RTestStepDevSoundToneTone::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2790
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2791
	return new (ELeave) RTestStepDevSoundToneTone(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2792
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2794
RTestStepDevSoundToneTone::RTestStepDevSoundToneTone(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2795
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2796
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2797
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0068-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2798
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2799
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2800
void RTestStepDevSoundToneTone::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2801
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2802
	if (iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2803
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2804
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2805
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2806
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2807
	delete iMMFLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2808
	delete iMMFHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2809
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2811
void RTestStepDevSoundToneTone::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2812
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2813
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2814
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2815
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2816
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2817
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2818
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2819
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2820
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2821
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2822
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2823
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2824
void RTestStepDevSoundToneTone::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2825
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2826
	if ((iTestState == EStatePlayingLowPriorityTone) && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2827
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2828
		INFO_PRINTF1(_L("The low priority tone was rejected successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2830
		INFO_PRINTF1(_L("Stopping high priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2831
		iMMFHighPriorityToneDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2832
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2833
		INFO_PRINTF1(_L("Attempting to play low priority tone again"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2834
		TRAPD(err, TestPlayToneL(ETrue));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2835
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2836
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2837
			INFO_PRINTF1(_L("A leave occurred in TestPlayToneL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2838
			StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2839
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2840
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2841
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2842
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2843
	else if ((iTestState == EStatePlayingLowPriorityTone) && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2844
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2845
		INFO_PRINTF1(_L("The low priority tone was played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2846
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2847
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2848
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2850
	INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2851
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2852
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2853
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2854
void RTestStepDevSoundToneTone::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2855
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2856
	INFO_PRINTF1(_L("BufferToBeFilled should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2857
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2860
void RTestStepDevSoundToneTone::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2861
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2862
	INFO_PRINTF1(_L("PlayError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2863
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2864
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2866
void RTestStepDevSoundToneTone::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2867
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2868
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2869
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2870
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2871
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2872
void RTestStepDevSoundToneTone::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2873
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2874
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2875
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2876
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2877
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2878
void RTestStepDevSoundToneTone::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2879
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2880
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2881
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2882
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2883
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2884
void RTestStepDevSoundToneTone::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2885
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2886
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2887
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2888
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2890
void RTestStepDevSoundToneTone::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2891
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2892
	iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2893
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2894
	//create low priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2895
	iMMFLowPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2896
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2897
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2898
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2899
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2900
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2901
	iMMFLowPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2902
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2903
	//create high priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2904
	iMMFHighPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2906
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2907
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2908
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2909
	iMMFHighPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2911
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2912
	iTestState = EStateInitialiseLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2913
	INFO_PRINTF1(_L("Initialising low priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2914
	iMMFLowPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2915
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2916
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2917
void RTestStepDevSoundToneTone::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2918
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2919
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2920
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2921
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2922
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2923
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2924
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2925
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2926
TInt RTestStepDevSoundToneTone::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2927
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2928
   RTestStepDevSoundToneTone* self = static_cast<RTestStepDevSoundToneTone*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2929
   self->Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2930
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2931
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2933
void RTestStepDevSoundToneTone::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2934
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2935
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2937
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2938
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2939
	case EStateInitialiseLowPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2940
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2941
		iTestState = EStateInitialiseHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2942
		INFO_PRINTF1(_L("Initialising high priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2943
		iMMFHighPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2944
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2945
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2946
	case EStateInitialiseHighPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2947
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2948
		iTestState = EStatePlayingHighPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2949
		INFO_PRINTF1(_L("Playing high priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2950
		TestPlayToneL(EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2951
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2952
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2953
		iTimer->Start(KTonePlayDuration / 4, KTonePlayDuration / 4, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2954
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2955
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2956
	case EStatePlayingHighPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2957
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2958
		iTestState = EStatePlayingLowPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2959
		INFO_PRINTF1(_L("Attempting to play low priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2960
		TestPlayToneL(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2961
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2962
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2963
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2964
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2965
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2966
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2967
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2968
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2969
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2970
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2971
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2972
void RTestStepDevSoundToneTone::TestPlayToneL(TBool aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2973
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2974
	if (aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2975
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2976
		INFO_PRINTF3(_L("Playing %dHz tone for %ds"), KLowToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2977
		iMMFLowPriorityToneDevSound->PlayToneL(KLowToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2978
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2979
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2980
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2981
		INFO_PRINTF3(_L("Playing %dHz tone for %ds"), KHighToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2982
		iMMFHighPriorityToneDevSound->PlayToneL(KHighToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2983
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2984
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2985
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2986
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2987
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2988
 * RTestStepDevSoundRecordRecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2989
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2990
 * Record low priority audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2991
 * Attempt to pre-empt with a higher priority record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2992
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2993
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2994
RTestStepDevSoundRecordRecord* RTestStepDevSoundRecordRecord::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2995
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2996
	return new (ELeave) RTestStepDevSoundRecordRecord(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2997
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2999
RTestStepDevSoundRecordRecord::RTestStepDevSoundRecordRecord(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3000
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3001
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3002
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0069-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3003
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3004
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3005
void RTestStepDevSoundRecordRecord::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3006
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3007
	if (iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3008
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3009
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3010
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3011
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3012
	delete iMMFLowPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3013
	delete iMMFHighPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3014
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3015
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3016
void RTestStepDevSoundRecordRecord::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3017
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3018
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3019
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3020
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3021
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3022
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3023
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3024
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3025
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3026
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3027
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3028
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3029
void RTestStepDevSoundRecordRecord::ToneFinished(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3030
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3031
	INFO_PRINTF1(_L("ToneFinished should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3032
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3033
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3035
void RTestStepDevSoundRecordRecord::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3036
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3037
	INFO_PRINTF1(_L("BufferToBeFilled should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3038
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3039
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3040
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3041
void RTestStepDevSoundRecordRecord::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3042
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3043
	INFO_PRINTF1(_L("PlayError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3044
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3045
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3046
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3047
void RTestStepDevSoundRecordRecord::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3048
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3049
	INFO_PRINTF1(_L("Audio data received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3050
	// no need to store the data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3051
	if (iTestState == EStateRecordingLowPriorityAudio)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3052
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3053
		iMMFLowPriorityRecordDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3054
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3055
	else if (iTestState == EStateRecordingHighPriorityAudio)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3056
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3057
		iMMFHighPriorityRecordDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3058
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3059
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3060
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3061
		INFO_PRINTF1(_L("A record buffer problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3062
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3063
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3064
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3065
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3066
void RTestStepDevSoundRecordRecord::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3067
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3068
	if ((iTestState == EStateRecordingHighPriorityAudio) && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3069
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3070
		INFO_PRINTF1(_L("The low priority recording was successfully pre-empted"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3071
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3072
		iMMFHighPriorityRecordDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3073
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3074
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3075
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3076
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3077
	INFO_PRINTF1(_L("A record pre-emption problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3078
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3079
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3080
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3081
void RTestStepDevSoundRecordRecord::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3082
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3083
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3084
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3085
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3086
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3087
void RTestStepDevSoundRecordRecord::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3088
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3089
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3090
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3091
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3092
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3093
void RTestStepDevSoundRecordRecord::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3094
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3095
	iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3096
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3097
	//create low priority DevSound for recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3098
	iMMFLowPriorityRecordDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3099
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3100
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3101
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3102
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3103
	prioritySettings.iState = EMMFStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3104
	iMMFLowPriorityRecordDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3106
	//create high priority DevSound for recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3107
	iMMFHighPriorityRecordDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3108
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3109
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3110
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3111
	prioritySettings.iState = EMMFStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3112
	iMMFHighPriorityRecordDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3113
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3114
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3115
	iTestState = EStateInitialiseLowPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3116
	INFO_PRINTF1(_L("Initialising low priority record devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3117
	iMMFLowPriorityRecordDevSound->InitializeL(*this, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3118
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3120
void RTestStepDevSoundRecordRecord::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3121
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3122
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3123
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3124
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3125
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3126
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3127
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3128
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3129
TInt RTestStepDevSoundRecordRecord::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3130
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3131
   RTestStepDevSoundRecordRecord* self = static_cast<RTestStepDevSoundRecordRecord*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3132
   self->Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3133
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3134
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3135
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3136
void RTestStepDevSoundRecordRecord::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3137
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3138
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3139
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3140
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3141
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3142
	case EStateInitialiseLowPriorityRecordDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3143
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3144
		iTestState = EStateInitialiseHighPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3145
		INFO_PRINTF1(_L("Initialising high priority record devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3146
		iMMFHighPriorityRecordDevSound->InitializeL(*this, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3147
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3148
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3149
	case EStateInitialiseHighPriorityRecordDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3150
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3151
		iTestState = EStateRecordingLowPriorityAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3152
		INFO_PRINTF1(_L("Recording low priority audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3153
		iMMFLowPriorityRecordDevSound->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3154
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3155
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3156
		iTimer->Start(KRecordDuration, KRecordDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3157
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3158
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3159
	case EStateRecordingLowPriorityAudio:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3160
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3161
		iTestState = EStateRecordingHighPriorityAudio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3162
		INFO_PRINTF1(_L("Attempting to record high priority audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3163
		iMMFHighPriorityRecordDevSound->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3164
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3165
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3166
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3167
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3168
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3169
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3170
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3171
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3172
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3173
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3174
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3175
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3176
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3177
 * RTestStepDevSoundToneReplay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3178
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3179
 * Play a low priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3180
 * Pre-empt with a high priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3181
 * After completion of high priority tone, play the low priority tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3182
 * Stop the low priority tone and check that no further callbacks occur
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3183
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3184
RTestStepDevSoundToneReplay* RTestStepDevSoundToneReplay::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3185
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3186
	return new (ELeave) RTestStepDevSoundToneReplay(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3187
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3188
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3189
RTestStepDevSoundToneReplay::RTestStepDevSoundToneReplay(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3190
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3191
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3192
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0070-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3193
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3194
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3195
void RTestStepDevSoundToneReplay::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3196
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3197
	if (iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3198
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3199
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3200
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3201
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3202
	delete iMMFLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3203
	delete iMMFHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3204
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3205
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3206
void RTestStepDevSoundToneReplay::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3207
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3208
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3209
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3210
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3211
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3212
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3213
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3214
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3215
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3216
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3217
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3218
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3219
void RTestStepDevSoundToneReplay::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3220
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3221
	if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3222
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3223
		INFO_PRINTF1(_L("The low priority tone was rejected successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3224
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3225
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3226
	else if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3227
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3228
		INFO_PRINTF1(_L("The high priority tone was played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3229
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3230
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3231
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3232
	else if (iTestState == EStateWaitingAfterStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3233
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3234
		INFO_PRINTF1(_L("A callback occurred after calling Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3235
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3236
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3237
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3238
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3239
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3240
		INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3241
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3242
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3243
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3244
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3245
void RTestStepDevSoundToneReplay::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3246
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3247
	INFO_PRINTF1(_L("BufferToBeFilled should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3248
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3249
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3250
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3251
void RTestStepDevSoundToneReplay::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3252
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3253
	INFO_PRINTF1(_L("PlayError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3254
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3255
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3257
void RTestStepDevSoundToneReplay::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3258
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3259
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3260
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3261
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3262
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3263
void RTestStepDevSoundToneReplay::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3264
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3265
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3266
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3267
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3268
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3269
void RTestStepDevSoundToneReplay::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3270
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3271
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3272
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3273
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3274
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3275
void RTestStepDevSoundToneReplay::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3276
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3277
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3278
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3279
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3281
void RTestStepDevSoundToneReplay::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3282
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3283
	iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3285
	//create low priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3286
	iMMFLowPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3288
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3289
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3290
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3291
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3292
	iMMFLowPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3294
	//create high priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3295
	iMMFHighPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3296
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3297
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3298
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3299
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3300
	iMMFHighPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3301
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3302
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3303
	iTestState = EStateInitialiseLowPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3304
	INFO_PRINTF1(_L("Initialising low priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3305
	iMMFLowPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3306
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3307
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3308
void RTestStepDevSoundToneReplay::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3309
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3310
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3311
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3312
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3313
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3314
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3315
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3317
TInt RTestStepDevSoundToneReplay::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3318
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3319
   RTestStepDevSoundToneReplay* self = static_cast<RTestStepDevSoundToneReplay*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3320
   self->Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3321
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3322
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3323
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3324
void RTestStepDevSoundToneReplay::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3325
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3326
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3328
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3329
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3330
	case EStateInitialiseLowPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3331
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3332
		iTestState = EStateInitialiseHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3333
		INFO_PRINTF1(_L("Initialising high priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3334
		iMMFHighPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3335
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3336
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3337
	case EStateInitialiseHighPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3338
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3339
		iTestState = EStatePlayingLowPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3340
		INFO_PRINTF1(_L("Playing low priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3341
		TestPlayToneL(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3343
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3344
		iTimer->Start(KTonePlayDuration / 4, KTonePlayDuration / 4, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3345
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3346
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3347
	case EStatePlayingLowPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3348
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3349
		iTestState = EStatePlayingHighPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3350
		INFO_PRINTF1(_L("Attempting to pre-empt with a high priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3351
		TestPlayToneL(EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3352
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3353
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3354
	case EStatePlayingHighPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3355
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3356
		iTestState = EStateReplayingLowPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3357
		INFO_PRINTF1(_L("Attempting to replay the low priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3358
		TestPlayToneL(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3359
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3360
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3361
		iTimer->Start(KTonePlayDuration / 4, KTonePlayDuration / 4, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3362
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3363
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3364
	case EStateReplayingLowPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3365
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3366
		iTestState = EStateWaitingAfterStop;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3367
		INFO_PRINTF1(_L("Stopping low priority tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3368
		iMMFLowPriorityToneDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3369
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3370
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3371
		iTimer->Start(KTonePlayDuration, KTonePlayDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3372
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3373
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3374
	case EStateWaitingAfterStop:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3375
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3376
		INFO_PRINTF1(_L("No callbacks occurred after Stop call"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3377
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3378
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3379
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3380
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3381
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3382
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3383
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3384
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3385
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3386
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3387
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3389
void RTestStepDevSoundToneReplay::TestPlayToneL(TBool aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3390
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3391
	if (aLowPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3392
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3393
		INFO_PRINTF3(_L("Playing %dHz tone for %ds"), KLowToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3394
		iMMFLowPriorityToneDevSound->PlayToneL(KLowToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3395
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3396
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3397
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3398
		INFO_PRINTF3(_L("Playing %dHz tone for %ds"), KHighToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3399
		iMMFHighPriorityToneDevSound->PlayToneL(KHighToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3400
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3401
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3402
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3403
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3404
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3405
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3406
 * RTestStepDevSoundRecordRerecord
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3407
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3408
 * Record low priority audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3409
 * Pre-empt with a high priority tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3410
 * After completion of high priority tone play, restart the low priority record
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3411
 * Stop the low priority record and check that no further callbacks occur
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3412
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3413
RTestStepDevSoundRecordRerecord* RTestStepDevSoundRecordRerecord::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3414
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3415
	return new (ELeave) RTestStepDevSoundRecordRerecord(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3416
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3418
RTestStepDevSoundRecordRerecord::RTestStepDevSoundRecordRerecord(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3419
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3420
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3421
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0071-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3422
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3423
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3424
void RTestStepDevSoundRecordRerecord::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3425
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3426
	if (iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3427
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3428
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3429
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3430
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3431
	delete iMMFLowPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3432
	delete iMMFHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3433
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3435
void RTestStepDevSoundRecordRerecord::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3436
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3437
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3438
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3439
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3440
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3441
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3442
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3443
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3444
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3445
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3446
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3447
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3448
void RTestStepDevSoundRecordRerecord::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3449
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3450
	if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3451
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3452
		INFO_PRINTF1(_L("The high priority tone was played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3453
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3454
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3455
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3456
	INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3457
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3458
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3460
void RTestStepDevSoundRecordRerecord::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3461
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3462
	INFO_PRINTF1(_L("BufferToBeFilled should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3463
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3464
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3466
void RTestStepDevSoundRecordRerecord::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3467
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3468
	INFO_PRINTF1(_L("PlayError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3469
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3470
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3471
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3472
void RTestStepDevSoundRecordRerecord::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3473
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3474
	if (iTestState == EStateWaitingAfterStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3475
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3476
		INFO_PRINTF1(_L("A callback occurred after calling Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3477
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3478
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3479
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3480
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3481
		INFO_PRINTF1(_L("Audio data received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3482
		iBuffersRecordedCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3483
		// no need to store the data
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3484
		iMMFLowPriorityRecordDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3485
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3486
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3487
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3488
void RTestStepDevSoundRecordRerecord::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3489
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3490
	if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3491
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3492
		INFO_PRINTF1(_L("The low priority record was rejected successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3493
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3494
	else if (iTestState == EStateWaitingAfterStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3495
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3496
		INFO_PRINTF1(_L("A callback occurred after calling Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3497
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3498
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3499
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3500
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3501
		INFO_PRINTF1(_L("A record problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3502
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3503
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3504
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3505
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3506
void RTestStepDevSoundRecordRerecord::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3507
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3508
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3509
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3510
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3512
void RTestStepDevSoundRecordRerecord::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3513
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3514
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3515
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3516
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3518
void RTestStepDevSoundRecordRerecord::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3519
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3520
	iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3521
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3522
	//create low priority DevSound for recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3523
	iMMFLowPriorityRecordDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3525
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3526
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3527
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3528
	prioritySettings.iState = EMMFStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3529
	iMMFLowPriorityRecordDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3530
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3531
	//create high priority DevSound for tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3532
	iMMFHighPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3534
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3535
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3536
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3537
	iMMFHighPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3538
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3539
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3540
	iTestState = EStateInitialiseLowPriorityRecordDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3541
	INFO_PRINTF1(_L("Initialising low priority record devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3542
	iMMFLowPriorityRecordDevSound->InitializeL(*this, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3543
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3544
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3545
void RTestStepDevSoundRecordRerecord::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3546
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3547
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3548
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3549
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3550
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3551
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3552
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3553
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3554
TInt RTestStepDevSoundRecordRerecord::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3555
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3556
   RTestStepDevSoundRecordRerecord* self = static_cast<RTestStepDevSoundRecordRerecord*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3557
   self->Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3558
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3559
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3560
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3561
void RTestStepDevSoundRecordRerecord::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3562
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3563
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3565
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3566
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3567
	case EStateInitialiseLowPriorityRecordDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3568
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3569
		iTestState = EStateInitialiseHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3570
		INFO_PRINTF1(_L("Initialising high priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3571
		iMMFHighPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3572
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3573
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3574
	case EStateInitialiseHighPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3575
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3576
		iTestState = EStateRecordingLowPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3577
		INFO_PRINTF1(_L("Recording low priority audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3578
		iBuffersRecordedCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3579
		iMMFLowPriorityRecordDevSound->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3580
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3581
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3582
		iTimer->Start(KRecordDuration, KRecordDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3583
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3584
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3585
	case EStateRecordingLowPriority:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3586
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3587
		if (iBuffersRecordedCount < 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3588
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3589
			INFO_PRINTF1(_L("Too few BufferToBeEmptied calls received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3590
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3591
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3592
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3593
		iTestState = EStatePlayingHighPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3594
		INFO_PRINTF3(_L("Playing high priority %dHz tone for %ds"), KHighToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3595
		iMMFHighPriorityToneDevSound->PlayToneL(KHighToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3596
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3597
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3598
	case EStatePlayingHighPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3599
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3600
		iTestState = EStateRerecordingLowPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3601
		INFO_PRINTF1(_L("Attempting to restart record low priority audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3602
		iBuffersRecordedCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3603
		iMMFLowPriorityRecordDevSound->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3604
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3605
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3606
		iTimer->Start(KRecordDuration, KRecordDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3607
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3608
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3609
	case EStateRerecordingLowPriority:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3610
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3611
		if (iBuffersRecordedCount < 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3612
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3613
			INFO_PRINTF1(_L("Too few BufferToBeEmptied calls received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3614
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3615
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3616
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3617
		iTestState = EStateWaitingAfterStop;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3618
		INFO_PRINTF1(_L("Stopping low priority record"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3619
		iMMFLowPriorityRecordDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3620
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3621
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3622
		iTimer->Start(KRecordDuration, KRecordDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3623
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3624
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3625
	case EStateWaitingAfterStop:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3626
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3627
		INFO_PRINTF1(_L("No callbacks occurred after Stop call"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3628
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3629
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3630
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3631
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3632
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3633
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3634
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3635
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3636
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3637
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3638
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3640
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3641
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3642
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3643
 * RTestStepDevSoundPlayReplay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3644
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3645
 * Play low priority audio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3646
 * Pre-empt with a high priority tone play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3647
 * After completion of high priority tone play, restart the low priority play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3648
 * Stop the low priority play and check that no further callbacks occur
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3649
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3650
RTestStepDevSoundPlayReplay* RTestStepDevSoundPlayReplay::NewL(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3651
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3652
	return new (ELeave) RTestStepDevSoundPlayReplay(aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3653
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3655
RTestStepDevSoundPlayReplay::RTestStepDevSoundPlayReplay(CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3656
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3657
	iSuite = aSuite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3658
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0072-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3659
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3661
void RTestStepDevSoundPlayReplay::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3662
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3663
	if (iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3664
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3665
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3666
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3667
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3668
	delete iMMFLowPriorityPlayDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3669
	delete iMMFHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3670
	iInputFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3671
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3672
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3673
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3674
void RTestStepDevSoundPlayReplay::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3675
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3676
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3677
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3678
		INFO_PRINTF1(_L("An initialisation problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3679
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3680
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3681
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3682
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3683
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3684
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3685
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3686
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3687
void RTestStepDevSoundPlayReplay::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3688
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3689
	if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3690
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3691
		INFO_PRINTF1(_L("The high priority tone was played successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3692
		Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3693
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3694
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3695
	INFO_PRINTF1(_L("A tone play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3696
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3697
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3698
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3699
void RTestStepDevSoundPlayReplay::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3700
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3701
	if (iTestState == EStateWaitingAfterStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3702
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3703
		INFO_PRINTF1(_L("A callback occurred after calling Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3704
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3705
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3706
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3707
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3708
		iBuffersPlayedCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3709
		INFO_PRINTF1(_L("Audio data requested"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3710
		CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3711
		iInputFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3712
		iMMFLowPriorityPlayDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3713
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3714
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3715
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3716
void RTestStepDevSoundPlayReplay::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3717
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3718
	if ((iTestState == EStatePlayingHighPriorityTone) && (aError == KErrInUse))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3719
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3720
		INFO_PRINTF1(_L("The low priority play was rejected successfully"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3721
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3722
	else if (iTestState == EStateWaitingAfterStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3723
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3724
		INFO_PRINTF1(_L("A callback occurred after calling Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3725
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3726
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3727
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3728
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3729
		INFO_PRINTF1(_L("A play problem occurred"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3730
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3731
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3732
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3733
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3734
void RTestStepDevSoundPlayReplay::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3735
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3736
	INFO_PRINTF1(_L("BufferToBeEmptied should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3737
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3738
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3739
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3740
void RTestStepDevSoundPlayReplay::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3741
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3742
	INFO_PRINTF1(_L("RecordError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3743
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3744
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3745
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3746
void RTestStepDevSoundPlayReplay::ConvertError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3747
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3748
	INFO_PRINTF1(_L("ConvertError should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3749
	StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3750
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3752
void RTestStepDevSoundPlayReplay::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3753
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3754
	INFO_PRINTF1(_L("DeviceMessage should not be called!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3755
	StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3756
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3757
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3758
void RTestStepDevSoundPlayReplay::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3759
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3760
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3761
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3762
	iTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3763
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3764
	//create low priority DevSound for playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3765
	iMMFLowPriorityPlayDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3766
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3767
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3768
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3769
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3770
	prioritySettings.iState = EMMFStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3771
	iMMFLowPriorityPlayDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3772
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3773
	//create high priority DevSound for tone playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3774
	iMMFHighPriorityToneDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3775
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3776
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3777
	prioritySettings.iPriority = 100;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3778
	prioritySettings.iState = EMMFStateTonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3779
	iMMFHighPriorityToneDevSound->SetPrioritySettings(prioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3780
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3781
	User::LeaveIfError(iInputFile.Open(iFs, KInputTestFileNamePCM16, EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3783
	// kick off state machine
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3784
	iTestState = EStateInitialiseLowPriorityPlayDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3785
	INFO_PRINTF1(_L("Initialising low priority play devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3786
	TFourCC dataType(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3787
	iMMFLowPriorityPlayDevSound->InitializeL(*this, dataType, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3788
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3789
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3790
void RTestStepDevSoundPlayReplay::Fsm()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3791
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3792
	TRAPD(err, FsmL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3793
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3794
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3795
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3796
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3797
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3798
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3799
TInt RTestStepDevSoundPlayReplay::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3800
   {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3801
   RTestStepDevSoundPlayReplay* self = static_cast<RTestStepDevSoundPlayReplay*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3802
   self->Fsm();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3803
   return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3804
   }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3805
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3806
void RTestStepDevSoundPlayReplay::FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3807
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3808
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3809
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3810
	switch (iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3811
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3812
	case EStateInitialiseLowPriorityPlayDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3813
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3814
		iTestState = EStateInitialiseHighPriorityToneDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3815
		INFO_PRINTF1(_L("Initialising high priority tone devsound"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3816
		iMMFHighPriorityToneDevSound->InitializeL(*this, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3817
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3818
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3819
	case EStateInitialiseHighPriorityToneDevSound:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3820
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3821
		iTestState = EStatePlayingLowPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3822
		INFO_PRINTF1(_L("Playing low priority audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3823
		iBuffersPlayedCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3824
		iMMFLowPriorityPlayDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3825
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3826
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3827
		iTimer->Start(KPlayDuration, KPlayDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3828
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3829
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3830
	case EStatePlayingLowPriority:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3831
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3832
		if (iBuffersPlayedCount < 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3833
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3834
			INFO_PRINTF1(_L("Too few BufferToBeFilled calls received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3835
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3836
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3837
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3838
		iTestState = EStatePlayingHighPriorityTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3839
		INFO_PRINTF3(_L("Playing high priority %dHz tone for %ds"), KHighToneFrequency, KTonePlayDuration / 1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3840
		iMMFHighPriorityToneDevSound->PlayToneL(KHighToneFrequency, KTonePlayDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3841
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3842
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3843
	case EStatePlayingHighPriorityTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3844
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3845
		iTestState = EStateReplayingLowPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3846
		INFO_PRINTF1(_L("Attempting to restart low priority audio play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3847
		iBuffersPlayedCount = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3848
		iMMFLowPriorityPlayDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3850
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3851
		iTimer->Start(KPlayDuration, KPlayDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3852
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3853
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3854
	case EStateReplayingLowPriority:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3855
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3856
		if (iBuffersPlayedCount < 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3857
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3858
			INFO_PRINTF1(_L("Too few BufferToBeFilled calls received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3859
			StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3860
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3861
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3862
		iTestState = EStateWaitingAfterStop;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3863
		INFO_PRINTF1(_L("Stopping low priority audio play"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3864
		iMMFLowPriorityPlayDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3866
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3867
		iTimer->Start(KPlayDuration, KPlayDuration, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3868
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3869
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3870
	case EStateWaitingAfterStop:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3871
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3872
		INFO_PRINTF1(_L("No callbacks occurred after Stop call"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3873
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3874
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3875
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3876
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3877
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3878
		INFO_PRINTF1(_L("State machine error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3879
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3880
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3881
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3882
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3883
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3884
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3885
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3886
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3887
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3888
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3889
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3890
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3891
TVerdict CTestStepDevSoundPlay1BufferPCM8::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3892
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3893
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback pcm8(1 Buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3894
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3895
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3896
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3897
	TFileName filename(KInputTestFileNamePCM8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3898
	TFourCC pcm8(' ','P','U','8'); //use unsigned pcm8 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3899
	return TestDigitalPlayback (1, filename, pcm8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3900
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3901
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3902
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3903
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3904
 * CTestStepDevSoundPlay5BuffersPCM8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3905
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3906
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3907
CTestStepDevSoundPlay5BuffersPCM8::CTestStepDevSoundPlay5BuffersPCM8()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3908
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3909
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0020-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3910
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3911
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3912
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3913
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3914
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3915
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3916
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3917
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3918
TVerdict CTestStepDevSoundPlay5BuffersPCM8::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3919
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3920
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback pcm8(5 Buffers)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3921
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3922
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3924
	TFileName filename(KInputTestFileNamePCM8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3925
	TFourCC pcm8(' ','P','U','8'); //use unsigned pcm8 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3926
	return TestDigitalPlayback (5, filename, pcm8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3927
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3928
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3929
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3930
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3931
 * CTestStepDevSoundPlayEOFPCM8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3932
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3933
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3934
CTestStepDevSoundPlayEOFPCM8::CTestStepDevSoundPlayEOFPCM8()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3935
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3936
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0021-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3937
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3938
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3939
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3940
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3941
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3942
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3943
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3944
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3945
TVerdict CTestStepDevSoundPlayEOFPCM8::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3946
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3947
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback with PU8 to EOF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3948
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3949
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3950
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3951
	TFileName filename(KInputTestFileNamePCM8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3952
	TFourCC pcm8(' ','P','U','8'); //use unsigned pcm8 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3953
	return TestDigitalPlayback (-1, filename, pcm8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3954
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3955
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3956
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3957
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3958
 * CTestStepDevSoundPlayGarbageEOF
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3959
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3960
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3961
CTestStepDevSoundPlayGarbageEOF::CTestStepDevSoundPlayGarbageEOF()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3962
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3963
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0022-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3964
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3965
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3966
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3967
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3968
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3969
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3970
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3971
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3972
TVerdict CTestStepDevSoundPlayGarbageEOF::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3973
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3974
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Playback to EOF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3975
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3976
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3977
	TFileName filename = _L("Z:\\TSU_MMF_DEVSOUND_SUITE\\Input\\garbage.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3978
	return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3979
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3980
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3981
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3982
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3983
 * CTestStepDevSoundMaxGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3984
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3985
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3986
CTestStepDevSoundMaxGain::CTestStepDevSoundMaxGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3987
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3988
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0023-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3989
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3990
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3991
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3992
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3993
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3994
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3995
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3996
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3997
TVerdict CTestStepDevSoundMaxGain::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3998
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3999
	INFO_PRINTF1(_L("Testing DevSound MaxGain"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4000
	TVerdict initOK = TestInitialize(EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4001
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4002
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4003
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4004
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4005
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4006
	TInt maxGain = TestMaxGain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4007
	if ((maxGain <= 0) || (maxGain > KMaxGain))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4008
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4009
		ERR_PRINTF3(_L("DevSound returned MaxGain = %d.  Expected MaxGain <= %d."), TestMaxGain(), KMaxGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4010
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4011
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4012
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4013
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4014
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4015
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4016
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4017
 * CTestStepDevSoundMaxVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4018
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4019
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4020
CTestStepDevSoundMaxVolume::CTestStepDevSoundMaxVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4021
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4022
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0024-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4023
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4024
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4025
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4026
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4027
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4028
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4029
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4030
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4031
TVerdict CTestStepDevSoundMaxVolume::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4032
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4033
	INFO_PRINTF1(_L("Testing DevSound MaxVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4034
	TVerdict initOK = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4035
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4036
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4037
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4038
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4039
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4040
	TInt maxVolume = TestMaxVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4041
	if ((maxVolume <= 0) || (maxVolume > KMaxVolume))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4042
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4043
		ERR_PRINTF3(_L("DevSound returned MaxVolume = %d.  Expected MaxVolume = %d."), TestMaxVolume(), KMaxVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4044
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4045
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4046
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4047
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4048
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4049
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4050
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4051
 * CTestStepDevSoundSetGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4052
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4053
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4054
CTestStepDevSoundSetGain::CTestStepDevSoundSetGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4055
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4056
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0025-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4057
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4058
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4059
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4060
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4061
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4062
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4063
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4064
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4065
TVerdict CTestStepDevSoundSetGain::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4066
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4067
	INFO_PRINTF1(_L("Testing DevSound SetGain"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4068
	TVerdict initOK = TestInitialize(EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4069
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4070
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4071
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4072
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4073
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4074
	TInt gain = TestGain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4075
	INFO_PRINTF2(_L("Current DevSound Gain = "), gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4076
	INFO_PRINTF1(_L("Setting DevSound Gain to MaxGain"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4077
	TestSetGain (TestMaxGain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4078
	if (TestGain() != TestMaxGain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4079
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4080
		ERR_PRINTF3(_L("DevSound returned Gain = %d.  Expected Gain = %d."), TestGain(), TestMaxGain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4081
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4082
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4084
	INFO_PRINTF1(_L("Setting DevSound Gain to MaxGain/2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4085
	TestSetGain (TestMaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4086
	if (TestGain() != TestMaxGain()/2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4087
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4088
		ERR_PRINTF3(_L("DevSound returned Gain = %d.  Expected Gain = %d."), TestGain(), TestMaxGain()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4089
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4090
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4091
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4092
	INFO_PRINTF1(_L("Setting DevSound Gain to 0"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4093
	TestSetGain (0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4094
	if (TestGain() != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4095
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4096
		ERR_PRINTF2(_L("DevSound returned Gain = %d.  Expected Gain = 0."), TestGain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4097
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4098
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4099
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4100
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4101
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4103
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4104
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4105
 * CTestStepDevSoundSetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4106
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4107
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4108
CTestStepDevSoundSetVolume::CTestStepDevSoundSetVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4109
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4110
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0026-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4111
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4113
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4114
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4115
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4116
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4117
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4118
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4119
TVerdict CTestStepDevSoundSetVolume::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4120
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4121
	INFO_PRINTF1(_L("Testing DevSound SetVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4122
	TVerdict initOK = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4123
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4124
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4125
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4126
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4127
	TInt volume = TestVolume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4128
	INFO_PRINTF2(_L("Current DevSound Volume = "), volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4129
	INFO_PRINTF1(_L("Setting DevSound Volume to MaxVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4130
	TestSetVolume (TestMaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4131
	if (TestVolume() != TestMaxVolume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4132
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4133
		ERR_PRINTF3(_L("DevSound returned Volume = %d.  Expected Volume = %d."), TestVolume(), TestMaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4134
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4135
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4137
	INFO_PRINTF1(_L("Setting DevSound Volume to MaxVolume/2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4138
	TestSetVolume (TestMaxVolume()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4139
	if (TestVolume() != TestMaxVolume()/2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4140
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4141
		ERR_PRINTF3(_L("DevSound returned Volume = %d.  Expected Volume = %d."), TestVolume(), TestMaxVolume()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4142
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4143
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4145
	INFO_PRINTF1(_L("Setting DevSound Volume to 0"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4146
	TestSetVolume (0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4147
	if (TestVolume() != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4148
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4149
		ERR_PRINTF2(_L("DevSound returned Volume = %d.  Expected Volume = 0."), TestVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4150
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4151
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4152
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4153
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4154
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4156
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4157
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4158
 * CTestStepDevSoundRecord1BufferPCM16
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4159
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4160
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4161
CTestStepDevSoundRecord1BufferPCM16::CTestStepDevSoundRecord1BufferPCM16()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4162
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4163
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0027-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4164
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4165
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4166
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4167
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4168
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4169
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4170
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4171
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4172
TVerdict CTestStepDevSoundRecord1BufferPCM16::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4173
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4174
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Record (1 buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4175
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4176
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4177
	TFileName filename(KOutputTestFileName1BufPCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4178
	return TestDigitalRecord(1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4179
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4181
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4182
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4183
 * CTestStepDevSoundRecord10BuffersPCM16
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4184
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4185
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4186
CTestStepDevSoundRecord10BuffersPCM16::CTestStepDevSoundRecord10BuffersPCM16()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4187
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4188
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0028-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4189
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4190
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4191
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4192
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4193
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4194
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4195
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4196
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4197
TVerdict CTestStepDevSoundRecord10BuffersPCM16::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4198
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4199
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Record (10 buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4200
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4201
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4202
	TFileName filename(KOutputTestFileName10BufPCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4203
	return TestDigitalRecord(10, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4204
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4205
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4206
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4207
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4208
 * CTestStepDevSoundRecord1BufferPCM8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4209
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4210
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4211
CTestStepDevSoundRecord1BufferPCM8::CTestStepDevSoundRecord1BufferPCM8()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4212
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4213
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0029-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4214
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4215
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4216
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4217
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4218
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4219
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4220
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4221
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4222
TVerdict CTestStepDevSoundRecord1BufferPCM8::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4223
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4224
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Record pcm8(1 buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4225
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4226
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4227
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4228
	TFileName filename(KOutputTestFileName1BufPCM8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4229
	TFourCC pcm8(' ','P','U','8'); //use unsigned pcm8 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4230
	return TestDigitalRecord(1, filename, pcm8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4231
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4233
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4234
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4235
 * CTestStepDevSoundRecord10BuffersPCM8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4236
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4237
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4238
CTestStepDevSoundRecord10BuffersPCM8::CTestStepDevSoundRecord10BuffersPCM8()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4239
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4240
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0030-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4241
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4242
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4243
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4244
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4245
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4246
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4247
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4248
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4249
TVerdict CTestStepDevSoundRecord10BuffersPCM8::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4250
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4251
	INFO_PRINTF1(_L("Testing DevSound Digital Audio Record pcm8(10 buffer)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4252
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4253
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4255
	TFileName filename(KOutputTestFileName10BufPCM8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4256
	TFourCC pcm8(' ','P','U','8'); //use unsigned pcm8 fourcc code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4257
	return TestDigitalRecord(10, filename, pcm8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4258
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4259
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4260
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4261
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4262
 * CTestStepDevSoundSetConfigStereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4263
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4264
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4265
CTestStepDevSoundSetConfigStereo::CTestStepDevSoundSetConfigStereo()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4266
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4267
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0031-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4268
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4270
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4271
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4272
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4273
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4274
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4275
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4276
TVerdict CTestStepDevSoundSetConfigStereo::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4277
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4278
	INFO_PRINTF1(_L("Testing Stereo configured Audio Playback to EOF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4279
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4280
	TMMFCapabilities aCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4281
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4282
	TVerdict aVerdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4283
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4284
	aCapabilities.iRate = EMMFSampleRate8000Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4285
	aCapabilities.iEncoding = EMMFSoundEncoding16BitPCM;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4286
	aCapabilities.iChannels = EMMFStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4287
	TRAPD(err,iMMFDevSound->SetConfigL(aCapabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4288
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4289
	if (err==KErrNotReady)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4290
		{//behaviour no longer supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4291
		INFO_PRINTF2(_L("SetConfigL failed with expected error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4292
		aVerdict = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4293
		if (aVerdict == EFail)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4294
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4295
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4296
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4297
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4298
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4299
			TRAPD(err,iMMFDevSound->SetConfigL(aCapabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4300
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4301
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4302
				INFO_PRINTF2(_L("SetConfigL failed with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4303
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4304
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4305
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4306
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4307
				TFileName filename(KInputTestFileNamePCM8_16_s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4308
				return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4309
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4310
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4311
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4312
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4313
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4314
		INFO_PRINTF2(_L("SetConfigL failed with a different error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4315
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4316
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4317
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4318
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4319
		{//should accept stereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4320
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4321
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4322
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4323
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4324
		TFileName filename(KInputTestFileNamePCM8_16_s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4325
		return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4326
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4327
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4328
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4329
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4330
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4331
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4332
 * CTestStepDevSoundSetConfigSampleRate
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4333
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4334
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4335
CTestStepDevSoundSetConfigSampleRate::CTestStepDevSoundSetConfigSampleRate()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4336
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4337
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0032-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4338
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4339
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4340
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4341
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4342
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4343
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4344
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4345
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4346
TVerdict CTestStepDevSoundSetConfigSampleRate::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4347
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4348
	INFO_PRINTF1(_L("Testing 16Khz Sample rate configured Audio Playback to EOF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4349
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4350
	TMMFCapabilities aCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4351
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4352
	TVerdict aVerdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4353
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4354
	aCapabilities.iRate = EMMFSampleRate16000Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4355
	aCapabilities.iEncoding = EMMFSoundEncoding16BitPCM;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4356
	aCapabilities.iChannels = EMMFMono;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4357
	TRAPD(err, iMMFDevSound->SetConfigL(aCapabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4358
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4359
	if (err==KErrNotReady)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4360
		{//behaviour no longer supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4361
		INFO_PRINTF2(_L("SetConfigL failed with expected error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4362
		aVerdict = TestInitialize(EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4363
		if (aVerdict == EFail)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4364
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4365
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4366
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4367
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4368
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4369
			TRAPD(err,iMMFDevSound->SetConfigL(aCapabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4370
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4371
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4372
				INFO_PRINTF2(_L("SetConfigL failed with error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4373
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4374
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4375
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4376
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4377
				TFileName filename(KInputTestFileNamePCM16_16_m);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4378
				return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4379
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4380
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4381
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4382
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4383
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4384
		INFO_PRINTF2(_L("SetConfigL failed with a different error %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4385
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4386
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4387
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4388
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4389
		{//should accept 16KHz
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4390
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4391
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4392
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4393
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4394
		TFileName filename(KInputTestFileNamePCM16_16_m);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4395
		return TestDigitalPlayback (-1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4396
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4397
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4398
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4401
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4402
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4403
 * CTestStepDevSoundGetSupportedInputDataTypes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4404
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4405
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4406
CTestStepDevSoundGetSupportedInputDataTypes::CTestStepDevSoundGetSupportedInputDataTypes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4407
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4408
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0033-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4409
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4410
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4411
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4412
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4413
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4414
 * check the number of supported input datatypes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4415
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4416
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4417
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4418
TVerdict CTestStepDevSoundGetSupportedInputDataTypes::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4419
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4420
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4421
	TUint numberOfSupportedDataTypes = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4422
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4423
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4424
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4425
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4426
	prioritySettings.iState = EMMFStateRecording; //if recording does not support any input data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4427
	RArray<TFourCC> supportedDataTypes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4428
	TRAPD(err, iMMFDevSound->GetSupportedInputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4429
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4430
	//behaviour is DevSound specific if priority settings set to EMMFStateRecording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4431
	//for input data types ref DevSound returns supported data types- but should
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4432
	//not return an error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4433
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4434
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4435
		INFO_PRINTF2(_L("Error getting supported data types %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4436
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4437
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4438
	if (verdict == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4439
		{ //now check for playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4440
		prioritySettings.iState = EMMFStatePlaying; //should give supported input data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4441
		TRAP(err, iMMFDevSound->GetSupportedInputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4442
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4443
		if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4444
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4445
			numberOfSupportedDataTypes = supportedDataTypes.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4446
			//print out the supported data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4447
			//note test does not make any assumptions as to what the supported datatypes are
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4448
			if (numberOfSupportedDataTypes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4449
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4450
				TUint32 testsFourCC = TFourCC(_L8("TST*")).FourCC(); // if any fourCc matches first three chars then we treat as test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4451
				for (TUint entryNumber = 0; entryNumber < numberOfSupportedDataTypes; entryNumber++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4452
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4453
					TUint32 fourCC = supportedDataTypes[entryNumber].FourCC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4454
					if ((testsFourCC&0xFFFFFF) == (fourCC&0xFFFFFF))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4455
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4456
						// comparison ignoring top byte - equates to last digit of fourCC
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4457
						continue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4458
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4459
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4460
					ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4461
					TRAP(err,iMMFDevSound->InitializeL(*this, fourCC, prioritySettings.iState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4462
					if ((err)||(iCallbackError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4463
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4464
						INFO_PRINTF5(_L("DevSound failed to support data type fourCC = %c%c%c%c"), fourCC,fourCC>>8,fourCC>>16,fourCC>>24);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4465
						INFO_PRINTF2(_L("left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4466
						verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4467
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4468
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4469
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4470
						iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4471
						CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4472
						INFO_PRINTF5(_L("DevSound supports DataType fourCC =  %c%c%c%c"), fourCC,fourCC>>8,fourCC>>16,fourCC>>24);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4473
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4474
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4475
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4476
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4477
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4478
				INFO_PRINTF1(_L("No supported datatypes detected for playing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4479
				verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4480
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4481
			}//if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4482
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4483
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4484
			INFO_PRINTF2(_L("Error getting supported data types %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4485
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4486
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4487
		}//	if (verdict == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4488
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4489
	supportedDataTypes.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4491
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4492
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4494
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4495
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4496
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4497
 * CTestStepDevSoundGetSupportedOutputDataTypes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4498
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4499
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4500
CTestStepDevSoundGetSupportedOutputDataTypes::CTestStepDevSoundGetSupportedOutputDataTypes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4501
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4502
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0034-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4503
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4504
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4505
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4506
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4507
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4508
 * check the number of supported output datatypes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4509
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4510
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4511
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4512
TVerdict CTestStepDevSoundGetSupportedOutputDataTypes::DoTestStepL(void) {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4513
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4514
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4515
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4516
	TUint numberOfSupportedDataTypes = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4518
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4519
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4520
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4521
	prioritySettings.iState = EMMFStatePlaying; //if playing does not support any output data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4522
	RArray<TFourCC> supportedDataTypes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4523
	TRAPD(err, iMMFDevSound->GetSupportedOutputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4525
	//behaviour is DevSound specific if priority settings set to EMMFStatePlaying
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4526
	//for output data types ref DevSound returns supported data types- but should
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4527
	//not return an error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4528
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4529
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4530
		INFO_PRINTF2(_L("Error getting supported data types %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4531
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4532
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4533
	if (verdict == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4534
		{ //now check for recording
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4535
		prioritySettings.iState = EMMFStateRecording; //should give supported output data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4536
		TRAP(err, iMMFDevSound->GetSupportedOutputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4537
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4538
		if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4539
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4540
			numberOfSupportedDataTypes = supportedDataTypes.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4541
			//print out the supported data types
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4542
			//note test does not make any assumptions as to what the supported datatypes are
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4543
			if (numberOfSupportedDataTypes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4544
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4545
				TUint32 testsFourCC = TFourCC(_L8("TST*")).FourCC(); // if any fourCc matches first three chars then we treat as test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4546
				for (TUint entryNumber = 0; entryNumber < numberOfSupportedDataTypes; entryNumber++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4547
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4548
					TUint32 fourCC = supportedDataTypes[entryNumber].FourCC();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4549
					if ((testsFourCC&0xFFFFFF) == (fourCC&0xFFFFFF))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4550
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4551
						// comparison ignoring top byte - equates to last digit of fourCC
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4552
						continue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4553
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4554
					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4555
					ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4556
					TRAP(err,iMMFDevSound->InitializeL(*this, fourCC, prioritySettings.iState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4557
					if ((err)||(iCallbackError))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4558
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4559
						INFO_PRINTF5(_L("DevSound failed to support data type fourCC = %c%c%c%c"), fourCC,fourCC>>8,fourCC>>16,fourCC>>24);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4560
						INFO_PRINTF2(_L("left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4561
						verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4562
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4563
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4564
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4565
						iAL->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4566
						CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4567
						INFO_PRINTF5(_L("DevSound supports DataType fourCC =  %c%c%c%c"), fourCC,fourCC>>8,fourCC>>16,fourCC>>24);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4568
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4569
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4570
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4571
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4572
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4573
				INFO_PRINTF1(_L("No supported datatypes detected for recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4574
				verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4575
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4576
			}//if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4577
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4578
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4579
			INFO_PRINTF2(_L("Error getting supported data types %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4580
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4581
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4582
		}//	if (verdict == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4584
	supportedDataTypes.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4585
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4586
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4587
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4588
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4589
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4590
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4591
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4592
 * CTestStepDevSoundGetSupportedInputDataTypesOOM
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4593
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4594
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4595
CTestStepDevSoundGetSupportedInputDataTypesOOM::CTestStepDevSoundGetSupportedInputDataTypesOOM()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4596
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4597
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0035-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4598
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4600
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4601
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4602
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4603
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4604
 * check the number of supported input datatypes for OOM
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4605
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4606
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4607
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4608
TVerdict CTestStepDevSoundGetSupportedInputDataTypesOOM::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4609
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4610
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4611
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4612
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4613
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4614
	TInt KMaxFailRate = 100000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4615
	TBool complete = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4616
	TBool nullAlloc = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4617
	TInt failCount;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4618
	TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4619
	TInt expectedNumberOfSupportedDataTypes = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4620
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4621
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4622
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4623
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4624
	prioritySettings.iState = EMMFStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4625
	RArray<TFourCC> supportedDataTypes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4626
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4627
	TRAP(err, iMMFDevSound->GetSupportedInputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4628
	if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4629
		expectedNumberOfSupportedDataTypes = supportedDataTypes.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4630
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4631
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4632
		__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4633
		INFO_PRINTF2(_L("Unexpected leave on GetSupportedInputDataTypesL %d" ), err );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4634
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4635
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4636
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4637
	for (failCount=1; !complete && failCount<KMaxFailRate; ++failCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4638
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4639
		__UHEAP_SETFAIL(RHeap::EFailNext, failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4640
		TRAP(err, iMMFDevSound->GetSupportedInputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4641
		if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4642
			{//need to check if next alloc fails
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4643
			TAny* testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4644
			if (testAlloc==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4645
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4646
				nullAlloc = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4647
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4648
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4649
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4650
				User::Free(testAlloc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4651
				complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4652
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4653
			//check that supported data types have been found
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4654
			if (supportedDataTypes.Count() != expectedNumberOfSupportedDataTypes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4655
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4656
				verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4657
				complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4658
				INFO_PRINTF3(_L("number of supported datatypes found %d expected %d"),supportedDataTypes.Count(),expectedNumberOfSupportedDataTypes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4659
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4660
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4661
		else if (err != KErrNoMemory)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4662
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4663
			verdict = EFail; // bad error code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4664
			complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4665
			INFO_PRINTF2(_L("OOM test error %d" ), err );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4666
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4667
		else if (supportedDataTypes.Count())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4668
			{//error is KErrNoMemory check no supported data types have been found
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4669
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4670
			INFO_PRINTF2(_L("OOM occured but we still had %d supported datatypes" ), supportedDataTypes.Count());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4671
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4672
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4673
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4674
	if (failCount >= KMaxFailRate-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4675
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4676
		INFO_PRINTF2(_L("fail count too high %d" ), failCount );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4677
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4678
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4679
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4680
	if (!nullAlloc)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4681
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4682
		INFO_PRINTF1(_L("never alloced after no OOM "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4683
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4684
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4685
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4686
	__UHEAP_RESET;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4687
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4688
	supportedDataTypes.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4689
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4690
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4691
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4692
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4693
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4694
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4695
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4696
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4697
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4698
 * CTestStepDevSoundGetSupportedOutputDataTypesOOM
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4699
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4700
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4701
CTestStepDevSoundGetSupportedOutputDataTypesOOM::CTestStepDevSoundGetSupportedOutputDataTypesOOM()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4702
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4703
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0036-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4704
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4706
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4707
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4708
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4709
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4710
 * check the number of supported output datatypes for OOM
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4711
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4712
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4713
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4714
TVerdict CTestStepDevSoundGetSupportedOutputDataTypesOOM::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4715
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4717
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4718
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4719
	TVerdict verdict = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4720
	TInt KMaxFailRate = 100000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4721
	TBool complete = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4722
	TBool nullAlloc = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4723
	TInt failCount;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4724
	TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4725
	TInt expectedNumberOfSupportedDataTypes = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4726
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4727
	TMMFPrioritySettings prioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4728
	prioritySettings.iPref = EMdaPriorityPreferenceNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4729
	prioritySettings.iPriority = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4730
	prioritySettings.iState = EMMFStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4731
	RArray<TFourCC> supportedDataTypes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4732
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4733
	TRAP(err, iMMFDevSound->GetSupportedOutputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4734
	if (!err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4735
		expectedNumberOfSupportedDataTypes = supportedDataTypes.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4736
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4737
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4738
		__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4739
		INFO_PRINTF2(_L("Unexpected leave on GetSupportedOutputDataTypesL %d" ), err );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4740
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4741
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4742
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4743
	for (failCount=1; !complete && failCount<KMaxFailRate; ++failCount)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4744
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4745
		__UHEAP_SETFAIL(RHeap::EFailNext, failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4746
		TRAP(err, iMMFDevSound->GetSupportedOutputDataTypesL(supportedDataTypes, prioritySettings));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4747
		if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4748
			{//need to check if next alloc fails
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4749
			TAny* testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4750
			if (testAlloc==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4751
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4752
				nullAlloc = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4753
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4754
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4755
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4756
				User::Free(testAlloc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4757
				complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4758
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4759
			//check that supported data types have been found
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4760
			if (supportedDataTypes.Count() != expectedNumberOfSupportedDataTypes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4761
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4762
				verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4763
				complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4764
				INFO_PRINTF3(_L("number of supported datatypes found %d expected %d"),supportedDataTypes.Count(),expectedNumberOfSupportedDataTypes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4765
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4766
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4767
		else if (err != KErrNoMemory)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4768
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4769
			verdict = EFail; // bad error code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4770
			complete = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4771
			INFO_PRINTF2(_L("OOM test error %d" ), err );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4772
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4773
		else if (supportedDataTypes.Count())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4774
			{//error is KErrNoMemory check no supported data types have been found
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4775
			verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4776
			INFO_PRINTF2(_L("OOM occured but we still had %d supported datatypes" ), supportedDataTypes.Count());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4777
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4778
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4779
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4780
	if (failCount >= KMaxFailRate-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4781
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4782
		INFO_PRINTF2(_L("fail count too high %d" ), failCount );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4783
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4784
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4785
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4786
	if (!nullAlloc)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4787
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4788
		INFO_PRINTF1(_L("never alloced after no OOM "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4789
		verdict = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4790
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4791
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4792
	__UHEAP_RESET;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4794
	supportedDataTypes.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4795
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4796
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4797
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4798
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4799
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4800
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4801
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4802
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4803
CTestStepDevSoundRecordInitNoUECap::CTestStepDevSoundRecordInitNoUECap(TBool aHasMMDDCap)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4804
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4805
	if (aHasMMDDCap)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4806
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4807
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0051-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4808
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4809
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4810
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4811
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0052-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4812
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4813
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4814
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4816
TVerdict CTestStepDevSoundRecordInitNoUECap::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4817
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4818
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4819
	TVerdict initOK = TestInitialize(EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4820
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4821
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4822
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4823
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4825
	INFO_PRINTF1(_L("Testing DevSound Audio RecordInit - App has no User Environment capability"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4826
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4827
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4828
	return TestRecordInitCapsNotMatch();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4829
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4830
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4831
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4832
CTestStepDevSoundRecordInitWithUECap::CTestStepDevSoundRecordInitWithUECap(TBool aHasAllCaps)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4833
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4834
	if (aHasAllCaps)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4835
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4836
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0053-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4837
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4838
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4839
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4840
		//Has only UserEnvironment capability
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4841
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0054-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4842
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4843
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4844
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4845
TVerdict CTestStepDevSoundRecordInitWithUECap::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4846
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4847
	INFO_PRINTF1(_L("Testing DevSound Audio RecordInit - App has the User Environment capability"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4848
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4850
	//Recording 1 PCM16 buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4851
	TFileName filename(KOutputTestFileName1BufPCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4852
	return TestDigitalRecord(1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4853
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4855
CTestStepDevSoundRecordDataWithUECap::CTestStepDevSoundRecordDataWithUECap(TBool aHasAllCaps)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4856
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4857
		if (aHasAllCaps)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4858
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4859
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0057-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4860
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4861
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4862
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4863
		iTestStepName = _L("MM-MMF-DEVSOUND-U-0058-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4864
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4865
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4866
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4867
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4868
TVerdict CTestStepDevSoundRecordDataWithUECap::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4869
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4870
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4871
	INFO_PRINTF1(_L("Testing DevSound Audio RecordInit - App has the User Environment capability"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4872
	iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4873
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4874
	//Recording 1 PCM buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4875
	TFileName filename(KOutputTestFileName1BufPCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4876
	return TestDigitalRecord(1, filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4877
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4879
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4880
const TUid KUidDevSoundTestCustomInterface = {KMmfDevSoundTestCustomInterfaceMux};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4881
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4882
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4883
// Basic Custom Interface Test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4884
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4885
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4886
RTestStepBasicCustomInterface* RTestStepBasicCustomInterface::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4887
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4888
	RTestStepBasicCustomInterface* self = new (ELeave) RTestStepBasicCustomInterface();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4889
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4890
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4892
RTestStepBasicCustomInterface::RTestStepBasicCustomInterface()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4893
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4894
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0101-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4895
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4896
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4897
TVerdict RTestStepBasicCustomInterface::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4898
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4899
	INFO_PRINTF1(_L("Test CMMFDevSound Custom Interface Framework"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4901
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4902
	CActiveScheduler::Install(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4903
	CleanupStack::PushL(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4904
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4905
	CMMFDevSound* devSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4906
	CleanupStack::PushL(devSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4907
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4908
	TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4909
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4910
	// fetch the custom interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4911
	MMMFDevSoundTestCustomInterface* ptr = static_cast <MMMFDevSoundTestCustomInterface*> (devSound->CustomInterface(KUidDevSoundTestCustomInterface));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4912
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4913
	if (ptr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4914
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4915
		// can only do this with a valid interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4916
		result = TestCustomInterface(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4917
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4918
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4919
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4920
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4921
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4922
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4923
	CleanupStack::PopAndDestroy(2, scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4924
	return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4925
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4926
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4927
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4928
TVerdict RTestStepBasicCustomInterface::TestCustomInterface(MMMFDevSoundTestCustomInterface* aInterface)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4929
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4930
	TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4931
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4933
	CActiveListener* listener= new(ELeave)CActiveListener;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4934
	CleanupStack::PushL(listener);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4935
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4937
	INFO_PRINTF1(_L("Testing TestSyncCommand(const TDesC&)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4938
	err = aInterface->TestSyncCommand(KDevSoundCITestIn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4939
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4940
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4941
		INFO_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4942
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4943
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4944
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4945
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4946
	TBuf8<16> dummyResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4947
	dummyResult.FillZ();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4948
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4949
	INFO_PRINTF1(_L("Testing TestSyncCommandResult(const TDesC&, TPtr8*)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4950
	err = aInterface->TestSyncCommandResult(KDevSoundCITestIn, dummyResult);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4951
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4952
	if (dummyResult != KDevSoundCITestOut)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4953
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4954
		INFO_PRINTF1(_L("Result string is not correct!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4955
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4956
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4957
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4958
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4959
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4960
		INFO_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4961
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4962
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4964
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4965
	INFO_PRINTF1(_L("Testing TestAsyncCommand(const TDesC&, TRequestStatus&)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4966
	listener->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4967
	TRAP(err, aInterface->TestAsyncCommandL(KDevSoundCITestIn, listener->iStatus));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4968
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4969
	err = listener->iStatus.Int();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4970
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4971
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4972
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4973
		INFO_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4974
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4975
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4976
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4977
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4978
	INFO_PRINTF1(_L("Testing TestAsyncCommandResult(const TDesC&, TDes8&, TRequestStatus&)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4979
	dummyResult.FillZ();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4980
	listener->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4981
	TRAP(err, aInterface->TestAsyncCommandResultL(KDevSoundCITestIn, dummyResult, listener->iStatus));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4982
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4983
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4984
	if (dummyResult != KDevSoundCITestOut)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4985
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4986
		INFO_PRINTF1(_L("Result string is not correct!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4987
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4988
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4989
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4990
	err = listener->iStatus.Int();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4991
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4992
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4993
		INFO_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4994
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4995
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4996
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4997
	CleanupStack::PopAndDestroy(listener);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  4999
	return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5000
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5001
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5003
RTestStepBasicCustomInterfaceAlloc* RTestStepBasicCustomInterfaceAlloc::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5004
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5005
	RTestStepBasicCustomInterfaceAlloc* self = new (ELeave) RTestStepBasicCustomInterfaceAlloc();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5006
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5007
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5008
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5009
RTestStepBasicCustomInterfaceAlloc::RTestStepBasicCustomInterfaceAlloc()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5010
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5011
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0102-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5012
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5013
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5014
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5015
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5016
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5017
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5018
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5019
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5020
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5021
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5022
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5023
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5024
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5025
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5026
TVerdict RTestStepBasicCustomInterfaceAlloc::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5027
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5028
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5029
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5030
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5031
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5032
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0102-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5033
	INFO_PRINTF1(_L("this is Alloc Failure test of iniatilising a custom interface"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5034
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5035
	//__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5036
	TVerdict testRes = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5037
	TRAP( err, testRes = RTestStepBasicCustomInterface::DoTestStepL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5038
	//__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5039
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5040
	if (err != KErrNone || testRes == EFail)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5041
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5042
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5043
	TInt failCount = 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5044
	TBool completed = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5045
	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5046
	for(;;)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5047
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5048
		__UHEAP_SETFAIL(RHeap::EFailNext ,failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5049
		//__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5050
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5051
		testRes = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5052
		TRAP( err, testRes = RTestStepBasicCustomInterface::DoTestStepL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5053
		INFO_PRINTF2(_L("RTestStepBasicCustomInterface::DoTestStepL err=%d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5054
		completed = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5055
		if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5056
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5057
			if (testRes == EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5058
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5059
				TAny *testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5060
				if (testAlloc==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5061
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5062
					reachedEnd = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5063
					failCount--; // -= 1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5064
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5065
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5066
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5067
					User::Free(testAlloc);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5068
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5069
				completed = reachedEnd;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5070
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5071
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5072
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5073
				// the test failed but we have already proved above
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5074
				// that the required plugins are present
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5075
				// therefore we assume that the interface returned
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5076
				// a NULL pointer and so we can continue to test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5077
				// until the timeout
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5078
				completed = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5079
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5080
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5081
		else if (err != KErrNoMemory) // bad error code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5082
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5083
			completed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5084
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5085
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5086
		//__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5087
		__UHEAP_SETFAIL(RHeap::ENone ,0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5088
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5089
		// if we have completed or have exceeded the fail
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5090
		// count limit then quit
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5091
		if (completed || failCount > 1000)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5092
			break; // exit loop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5093
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5094
		failCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5095
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5096
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5097
	//failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5098
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5099
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5100
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5101
		INFO_PRINTF3(_L("  Error(%d) with %d memory allocations tested"), err, failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5102
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5103
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5104
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5105
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5106
		INFO_PRINTF2(_L("  Completed OK with %d memory allocations tested"), failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5107
		iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5108
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5110
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5111
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5112
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5113
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5114
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5116
CTestStepDevSoundCheckSampleRateforTone::CTestStepDevSoundCheckSampleRateforTone()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5117
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5118
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0060-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5119
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5121
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5122
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5123
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5124
 * Check that the SampleRate supported for tone play is 8000Hz only. Fix for DEF054803
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5125
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5126
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5127
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5128
TVerdict CTestStepDevSoundCheckSampleRateforTone::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5129
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5130
	ResetCallbacks();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5131
	//Initialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5132
	TVerdict initOK = TestInitialize(EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5133
	if (initOK != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5134
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5135
		INFO_PRINTF1(_L("Initialization failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5136
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5137
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5138
	TMMFCapabilities capabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5139
	capabilities.iRate = EMMFSampleRate16000Hz;//Passing sample rate other than 8000Hz
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5140
	capabilities.iEncoding = EMMFSoundEncoding16BitPCM;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5141
	capabilities.iChannels = EMMFStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5142
	TRAPD(err,iMMFDevSound->SetConfigL(capabilities));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5143
	if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5144
		{//shouldn't take value other than 8000Hz for playing tone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5145
		INFO_PRINTF2(_L("Returned error %d Expected -5"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5146
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5147
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5148
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5149
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5150
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5151
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5152
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5153
 * CTestStepDevSoundEmptyBuffersPos
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5154
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5155
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5156
CTestStepDevSoundEmptyBuffersPos::CTestStepDevSoundEmptyBuffersPos()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5157
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5158
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0061-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5159
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5160
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5161
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5162
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5163
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5164
 * Test to check for EmptyBuffers custom interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5165
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5166
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5167
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5168
TVerdict CTestStepDevSoundEmptyBuffersPos::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5169
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5170
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5171
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5173
	INFO_PRINTF1(_L("Testing DevSound EmptyBuffers custom interface"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5174
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5175
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5176
	TRAPD(err, FsmL(EDevSoundInit)); // Call to initialize DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5177
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5178
   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5179
		INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5180
		return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5181
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5182
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5183
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5184
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5185
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5186
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5188
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5189
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5190
 * CTestStepDevSoundEmptyBuffersNeg1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5191
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5192
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5193
CTestStepDevSoundEmptyBuffersNeg1::CTestStepDevSoundEmptyBuffersNeg1()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5194
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5195
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0062-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5196
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5197
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5198
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5199
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5200
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5201
 * Test to check for EmptyBuffers method
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5202
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5203
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5204
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5205
TVerdict CTestStepDevSoundEmptyBuffersNeg1::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5206
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5207
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5209
	INFO_PRINTF1(_L("Testing EmptyBuffers in record mode"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5210
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5212
	TRAPD(err, FsmL(EDevSoundInit)); // Call to initialize DevSound   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5213
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5214
   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5215
		INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5216
		return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5217
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5218
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5219
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5220
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5221
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5222
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5224
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5225
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5226
 * FsmL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5227
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5228
 * @param TMmfDevSoundEvents aDevSoundEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5229
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5230
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5231
void CTestStepDevSoundEmptyBuffersNeg1::FsmL(TMmfDevSoundEvents aDevSoundEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5232
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5233
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5234
    switch (aDevSoundEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5235
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5236
        case EDevSoundInit:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5237
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5238
	        iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5239
            INFO_PRINTF1(_L("InitializeL - Initializing DevSound..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5240
            TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording)); // Initialize DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5241
   			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5242
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5243
				INFO_PRINTF1(_L("Failed to Initialize DevSound ..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5244
        	 	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5245
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5246
   			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5247
            break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5248
		case EDevSoundEmptyBuffer:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5249
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5250
			INFO_PRINTF1(_L("Calling - DevSound EmptyBuffers..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5251
			TInt error = iMMFDevSound->EmptyBuffers();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5252
			if (error == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5253
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5254
				iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5255
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5256
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5257
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5258
				iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5259
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5260
			ERR_PRINTF3 (_L("DevSound EmptyBuffers returned %d, expected %d"), error, KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5261
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5262
   			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5263
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5264
        default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5265
            INFO_PRINTF1(_L("Invalid DevSound event!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5266
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5267
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5268
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5269
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5270
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5271
 * InitializeComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5272
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5273
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5274
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5275
void CTestStepDevSoundEmptyBuffersNeg1::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5276
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5277
	INFO_PRINTF2(_L("DevSound called InitializeComplete with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5278
	iCallbackArray[EInitComplete]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5279
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5280
	if (iCallbackError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5281
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5282
        INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), iCallbackError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5283
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5284
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5285
    else if (iCallbackArray[EInitComplete] != 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5286
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5287
        INFO_PRINTF2(_L("DevSound InitializeComplete was called %d times, expected 1."), iCallbackArray[EInitComplete]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5288
        CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5289
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5290
    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5291
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5292
        // Call DevSound EmptyBuffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5293
        FsmL(EDevSoundEmptyBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5294
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5295
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5296
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5298
#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5299
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5300
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5301
 * CTestStepDevSoundServerSideAlloc
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5302
 * This test is currently disabled via the script file.  It is ONLY used in debugging/development, and is NOT 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5303
 * required to pass itself as a gateway to submission.  It is to be enabled in future to reproduce defects 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5304
 * (i.e. SVR-ALLOC-0X defects as already reported in the PREQ1540 DB) and is to be edited when run, changing 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5305
 * the method to test and the starting value of "failcount".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5306
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5307
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5308
CTestStepDevSoundServerSideAlloc::CTestStepDevSoundServerSideAlloc()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5309
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5310
	iTestStepName = _L("MM-MMF-DEVSOUND-U-1073-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5311
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5313
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5314
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5315
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5316
 * Test to stress-alloc-test A3F DevSound Server Thread via Mux/Demux ECOM Plugin
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5317
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5318
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5319
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5320
TVerdict CTestStepDevSoundServerSideAlloc::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5321
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5323
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5324
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5325
	INFO_PRINTF1(_L("Testing A3F Devsound Server Side with Alloc stress testing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5326
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5328
	TRAPD(err, AllocLoopTestL()); // Call to initialize DevSound								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5329
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5330
   		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5331
		INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5332
		return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5333
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5334
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5335
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5336
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5337
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5338
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5339
 * AllocLoopTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5340
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5341
 * @param TMmfDevSoundEvents aDevSoundEvent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5342
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5343
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5344
void CTestStepDevSoundServerSideAlloc::AllocLoopTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5345
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5346
#ifdef SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5347
	CMMFDevSound* testerDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5348
    TUid iUid = {KUidMmfDevSoundCustomInterfaceMuxPlugin};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5349
    MMMFDevSoundCIMuxPluginInterface* devSoundMuxCIInstance = static_cast <MMMFDevSoundCIMuxPluginInterface*> (testerDevSound->CustomInterface(iUid));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5350
    if (!devSoundMuxCIInstance)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5351
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5352
		INFO_PRINTF1(_L("Failed to create tester interface"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5353
		iTestStepResult = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5354
    	return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5355
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5356
	CleanupStack::PushL(testerDevSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5357
    iCallbackError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5358
    TBool continueLoop = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5359
	for( TInt failCount = 0; continueLoop; failCount++ ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5360
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5361
		/* 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5362
		There are three predicates to Test Pass. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5363
		1. The synchronous call to InitializeL returns in context and must return with KErrNone or 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5364
		KErrNoMemory - any other error is a Test Fail. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5365
		When InitializeL returns with KErrNone, only then is the AS is kicked off. DevSound may perform further 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5366
		allocations before its callback method InitializeComplete is called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5367
		2. The asynchronous callback to InitializeComplete here should also return with KErrNone or KErrNoMemory
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5368
		- any other Error is a Test Fail.  If it returns with KErrNoMemory, we restart simulated server heap alloc fails
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5369
		with our last used value of failcount.  We then keep checking the callback until it completes with KErrNone.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5370
		Again, any other error is a test fail.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5371
		3. The test will fail if, after the call to InitializeL, the next server alloc tested fails.  Something has gone wrong -
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5372
		the number of allocs needed for InitializeL to complete has changed (reduced).  
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5373
		This is not a real fail, but is an indication this test cannot be trusted due to the above. The test cannot detect if
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5374
		the number of allocs needed for InitializeL to complete has increased.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5375
		*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5376
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5377
		INFO_PRINTF2(_L("Initiating Devsound Heap Failure, failCount = %d"), failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5378
		devSoundMuxCIInstance->DevSoundCIMuxCauseHeapFail(failCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5379
		  
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5380
		INFO_PRINTF1(_L("NewL - InitializeL..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5381
		TInt resultOfMethodCall = MethodToTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5382
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5383
		if ( resultOfMethodCall == KErrNoMemory )	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5384
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5385
			//Do nothing for now
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5386
			//DevSound ran out of memory before starting initialization, due to simulated heap alloc failure - continue with loop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5387
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5388
		else if ( resultOfMethodCall != KErrNone && resultOfMethodCall != KErrNoMemory )    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5389
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5390
			//3rd predicate failed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5391
			INFO_PRINTF2(_L("Failed to Initialize DevSound - abnormal test termination - 1st or 2nd predicate failed(%d)"), resultOfMethodCall);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5392
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5393
			continueLoop = EFalse;							
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5394
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5395
		else if ( resultOfMethodCall == KErrNone )							
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5396
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5397
			if (!devSoundMuxCIInstance->DevSoundCIMuxCheckHeapFail())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5398
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5399
				iTestStepResult = EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5400
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5401
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5402
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5403
				//3rd predicate failed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5404
				INFO_PRINTF1(_L("Failed to Initialize DevSound - abnormal test termination - 3rd predicate failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5405
				iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5406
				}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5407
			continueLoop = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5408
			}			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5409
		devSoundMuxCIInstance->DevSoundCIMuxStopHeapFail();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5410
		delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5411
		iMMFDevSound = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5412
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5413
	devSoundMuxCIInstance->DevSoundCIMuxStopHeapFail(); // call again just in case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5414
	CleanupStack::PopAndDestroy(testerDevSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5415
#else //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5416
	User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5417
#endif //SYMBIAN_MULTIMEDIA_ENABLE_REFERENCE_DEVICES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5418
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5419
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5420
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5421
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5422
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5423
 * InitializeComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5424
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5425
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5426
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5427
void CTestStepDevSoundServerSideAlloc::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5428
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5429
	INFO_PRINTF2(_L("DevSound called InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5430
    iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5431
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5432
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5434
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5435
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5436
 * MethodToTest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5437
 * Attempts to initialise member instance of CMMFDevSound (both phases)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5438
 * @result TInt
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5439
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5440
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5441
TInt CTestStepDevSoundServerSideAlloc::MethodToTest() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5442
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5443
	TRAPD(err, iMMFDevSound = CMMFDevSound::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5444
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5445
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5446
		return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5447
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5448
	TRAP(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording)); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5449
	INFO_PRINTF1(_L("Done It"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5450
	if ( err != KErrNone)    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5451
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5452
		return err;						
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5453
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5454
	CActiveScheduler::Start();					
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5455
	return iCallbackError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5456
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5457
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5458
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5460
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5461
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5462
 * CTestStepDevSoundEmptyBuffersNeg2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5463
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5464
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5465
CTestStepDevSoundEmptyBuffersNeg2::CTestStepDevSoundEmptyBuffersNeg2()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5466
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5467
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0063-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5468
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5469
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5470
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5471
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5472
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5473
 * Test to check for EmptyBuffers method
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5474
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5475
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5476
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5477
TVerdict CTestStepDevSoundEmptyBuffersNeg2::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5478
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5479
	INFO_PRINTF1(_L("Testing emptying buffers wihtout starting playback"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5480
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5481
	INFO_PRINTF1(_L("Calling - DevSound EmptyBuffers..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5482
	TInt error = iMMFDevSound->EmptyBuffers();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5483
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5484
	if (error == KErrNotReady)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5485
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5486
	if (error == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5487
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5488
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5489
		iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5490
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5491
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5492
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5493
		iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5494
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5495
	ERR_PRINTF3 (_L("DevSound EmptyBuffers returned %d, expected %d"), error, KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5496
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5497
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5499
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5500
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5501
 * CTestStepDevSoundCITest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5502
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5503
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5504
CTestStepDevSoundCITest::CTestStepDevSoundCITest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5505
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5506
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0064-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5507
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5508
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5509
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5510
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5511
 * DoTestStepL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5512
 * Test to check DEF086171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5513
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5514
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5515
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5516
TVerdict CTestStepDevSoundCITest::DoTestStepL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5517
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5518
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5519
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5520
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5521
	INFO_PRINTF1(_L("DEF086171  - Possible memory leak within DevSound CI Framework"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5522
	iExpectedValue = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5524
	iFsmHelper = CFsmHelper::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5525
	iFsmHelper->Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5526
	iFsmHelper->SetDevSoundTestPointer(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5527
	iFsmHelper->SetDevSoundPointer(iMMFDevSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5528
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5529
	iTestStepResult = iFsmHelper->GetResult();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5530
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5531
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5532
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5534
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5535
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5536
 * InitializeComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5537
 * @param aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5538
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5539
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5540
void CTestStepDevSoundCITest::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5541
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5542
	INFO_PRINTF2(_L("DevSound called InitializeComplete with aError = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5543
	iCallbackArray[EInitComplete]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5544
	iCallbackError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5545
	if (iCallbackError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5546
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5547
		INFO_PRINTF2(_L("DevSound InitializeL left with error = %d"), iCallbackError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5548
		CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5549
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5550
	#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5551
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5552
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5553
		iFsmHelper->Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5554
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5555
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5556
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5557
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5558
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5559
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5560
 * Close
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5561
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5562
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5563
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5564
void CTestStepDevSoundCITest::Close()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5565
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5566
	delete iFsmHelper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5567
	iFsmHelper = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5568
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5569
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5570
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5571
 * NewL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5572
 * CFsmHelper
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5573
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5574
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5575
CFsmHelper* CFsmHelper::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5576
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5577
	CFsmHelper* self = new(ELeave) CFsmHelper();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5578
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5579
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5580
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5581
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5582
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5583
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5584
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5585
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5586
 * CFsmHelper
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5587
 * Initilaization List
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5588
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5589
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5590
CFsmHelper::CFsmHelper():CActive(EPriorityIdle)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5591
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5592
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5593
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5595
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5596
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5597
 * CFsmHelper
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5598
 * Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5599
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5600
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5601
CFsmHelper::~CFsmHelper()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5602
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5603
	delete iLog;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5604
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5606
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5607
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5608
 * DoCancel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5609
 * @result void
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5610
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5611
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5612
void CFsmHelper::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5613
 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5614
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5615
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5616
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5617
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5618
 * Start
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5619
 * @result void
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5620
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5621
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5622
void CFsmHelper::Start()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5623
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5624
	TRequestStatus *pS=&iStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5625
	User::RequestComplete(pS, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5626
	SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5627
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5628
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5629
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5630
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5631
 * ConstructL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5632
 * @result void
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5633
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5634
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5635
void CFsmHelper::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5636
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5637
	iLog = CLog::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5638
	iLog->OpenLogFileL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5639
	iTestResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5640
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5641
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5642
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5643
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5644
 * RunL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5645
 * @result void
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5646
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5647
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5648
void CFsmHelper::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5649
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5650
	switch(iEventStatus)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5651
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5652
		case EDevSoundInit1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5653
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5654
			// Initialize the DevSound to use PCM16 hwDevice for the first time
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5655
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5656
			TUid uidHwDevicePCM16ToPCM16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5657
			uidHwDevicePCM16ToPCM16.iUid = KMmfUidHwDevicePCM16ToPCM16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5658
			TRAPD(err, iMMFDevSound->InitializeL(*iTestPointer, uidHwDevicePCM16ToPCM16, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5659
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5660
			TRAPD(err, iMMFDevSound->InitializeL(*iTestPointer, KMMFFourCCCodePCM16, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5661
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5662
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5663
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5664
				iLog->Log(_L("Failed to Initialize DevSound ..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5665
				CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5666
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5667
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5668
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5669
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5670
				// fetch the custom interface for bitrate
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5671
				iTestInterface = static_cast <MMMFDevSoundCustomInterfaceBitRate*> (iMMFDevSound->CustomInterface(KUidCustomInterfaceDevSoundBitRate));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5672
				if(!iTestInterface)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5673
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5674
					CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5675
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5676
				iEventStatus = EDevSoundInit2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5677
				#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5678
				Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5679
				#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5680
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5681
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5682
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5683
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5684
		case EDevSoundInit2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5685
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5686
			// Re-initializing the DevSound to use the GSM610 hwDevice
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5687
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5688
			TUid uidHwDeviceGSMToPCM16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5689
			uidHwDeviceGSMToPCM16.iUid = KMmfUidHwDeviceGSM610ToPCM16; //use GSM610
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5690
			TRAPD(err, iMMFDevSound->InitializeL(*iTestPointer, uidHwDeviceGSMToPCM16, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5691
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5692
			TRAPD(err, iMMFDevSound->InitializeL(*iTestPointer, KMMFFourCCCodeGSM610, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5693
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5694
			if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5695
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5696
				iLog->Log(_L("Failed to Initialize DevSound ..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5697
				CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5698
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5699
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5700
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5701
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5702
				// fetch the custom interface for bitrate.This should not return a NULL pointer as
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5703
				// there is a time lag in the interfaces being released.So add some delay and try to fetch the custom interface pointer again.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5704
				iTestInterface = static_cast <MMMFDevSoundCustomInterfaceBitRate*> (iMMFDevSound->CustomInterface(KUidCustomInterfaceDevSoundBitRate));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5705
				if (!iTestInterface)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5706
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5707
					CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5708
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5709
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5710
				iEventStatus = 	EAddDelayClient2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5711
				#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5712
				Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5713
				#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5714
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5715
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5716
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5717
		case EAddDelayClient2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5718
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5719
			//Adding delay as there is a time lag in the interfaces being released.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5720
			iLog->Log(_L("Adding Delay"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5721
			User::After(10000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5722
			iEventStatus = EClient2Idle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5723
			Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5724
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5725
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5726
		case EClient2Idle:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5727
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5728
			//Fetch the custom interface pointer for bitrate after some delay.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5729
			//Since the second initialisation has properly refreshed the custom interfaces,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5730
			//and bitrate custom interface is not supported by GSM610 hwDevice a NULL custom interface pointer is retrieved for bitrate.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5731
			iTestInterface = static_cast <MMMFDevSoundCustomInterfaceBitRate*> (iMMFDevSound->CustomInterface(KUidCustomInterfaceDevSoundBitRate));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5732
			if (!iTestInterface)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5733
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5734
				iTestResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5735
				iLog->Log(_L("TEST Passed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5736
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5737
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5738
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5739
				iTestResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5740
				iLog->Log(_L("TEST Failed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5741
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5742
			CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5743
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5744
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5745
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5746
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5747
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5748
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5749
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5750
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5751
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5752
 * GetStatus
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5753
 * @result TRequestStatus
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5754
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5755
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5756
TRequestStatus* CFsmHelper::GetStatus()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5757
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5758
	return &(this->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5759
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5760
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5761
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5762
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5763
 * GetResult
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5764
 * @result TVerdict
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5765
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5766
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5767
TVerdict CFsmHelper::GetResult()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5768
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5769
	return iTestResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5770
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5771
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5772
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5773
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5774
 * SetDevSoundPointer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5775
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5776
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5777
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5778
void CFsmHelper::SetDevSoundPointer(CMMFDevSound* aMMFDevSound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5779
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5780
	iMMFDevSound = aMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5781
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5783
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5784
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5785
 * SetDevSoundTestPointer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5786
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5787
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5788
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5789
void CFsmHelper::SetDevSoundTestPointer(CTestStepDevSoundCITest* aMMFDevSndTestPointer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5790
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5791
	iTestPointer = aMMFDevSndTestPointer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5792
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5794
/////////////////////////////
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5795
//test case for PDEF117811 :Ref DevSound policy updating on error condition is inconsistent 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5796
CTestDevSoundObserver* CTestDevSoundObserver::NewL(RDevSoundPolicyUpdateTest* aParent, RDevSoundPolicyUpdateTest::TClientId aClientId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5797
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5798
	CTestDevSoundObserver* self = new(ELeave)CTestDevSoundObserver(aParent, aClientId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5799
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5800
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5801
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5802
CTestDevSoundObserver::CTestDevSoundObserver(RDevSoundPolicyUpdateTest* aParent, RDevSoundPolicyUpdateTest::TClientId aClientId):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5803
iParent(aParent), iSelfId(aClientId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5804
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5805
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5806
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5807
void CTestDevSoundObserver::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5808
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5809
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::EDevSoundInitComplete, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5810
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5811
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5812
void CTestDevSoundObserver::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5813
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5814
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::ETonePlayError, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5815
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5816
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5817
void CTestDevSoundObserver::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5818
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5819
	CMMFDataBuffer* buffer = static_cast<CMMFDataBuffer*>(aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5820
	TDes8 des = buffer->Data();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5821
	des.SetLength(des.Length());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5822
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::EBTBF, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5823
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5825
void CTestDevSoundObserver::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5826
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5827
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::EPlayError, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5828
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5830
void CTestDevSoundObserver::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5831
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5832
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::EBTBE, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5833
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5834
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5835
void CTestDevSoundObserver::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5836
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5837
	iParent->Fsm(iSelfId, RDevSoundPolicyUpdateTest::ERecordError, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5838
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5839
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5840
void CTestDevSoundObserver::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5841
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5842
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5843
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5844
void CTestDevSoundObserver::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5845
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5846
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5848
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5849
 * A brief explanation of the test.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5850
 * The uses two DevSound objects - DevSound1, DevSound2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5851
 * DevSound1 is initialised with test HwDevices.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5852
 * There are two test HwDevices, which leave with KErrAbort from different functions.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5853
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5854
 * DevSound2 is always initialised with default(PCM16) hwDevice.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5855
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5856
 * Using DevSound1 and test scenarios, KErrAbort or KErrGeneral(only for ToneSequence test)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5857
 * can be generated at DevSound-Server(CMMFDevSoundSvrImp). The fix should updated policy
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5858
 * on all error conditions.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5859
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5860
 * Hence without calling DevSound1->Stop(), it should be possible to initialise and play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5861
 * from DevSound2. The test passes in this case. Had the policy not been updated, then
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5862
 * any attempt to play from DevSound2 will result in KErrInUse.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5863
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5864
 * The test has different stages. Every stage is targetted at error on a particular function in
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5865
 * CMMFDevSoundSvrImp.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5866
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5867
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5868
RDevSoundPolicyUpdateTest* RDevSoundPolicyUpdateTest::NewL(const TDesC& aStepName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5869
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5870
	RDevSoundPolicyUpdateTest* self = new(ELeave)RDevSoundPolicyUpdateTest(aStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5871
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5872
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5873
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5874
RDevSoundPolicyUpdateTest::RDevSoundPolicyUpdateTest(const TDesC& aStepName):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5875
iTestHwDevice1Uid(TUid::Uid(0x102834C3)),iTestHwDevice2Uid(TUid::Uid(0x102834C4)),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5876
iTestHwDevice3Uid(TUid::Uid(0x102834C5))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5877
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5878
	iTestStepName = aStepName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5879
	iTestState = E1_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5880
	iStage = EPlayData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5881
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5883
void RDevSoundPolicyUpdateTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5884
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5885
	INFO_PRINTF1(_L("Test case for - PDEF117811:Ref DevSound policy updating on error condition is inconsistent"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5886
	iDevSoundObserver1 = CTestDevSoundObserver::NewL(this, EObserver1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5887
	iDevSoundObserver2 = CTestDevSoundObserver::NewL(this, EObserver2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5888
	iMMFDevSound1 = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5889
	iMMFDevSound2 = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5890
	#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5891
	iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice1Uid, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5892
	#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5893
	TFourCC testUID1('T','S','T','1');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5894
	INFO_PRINTF1(_L("First INIT"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5895
	iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID1, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5896
	#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5897
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5899
void RDevSoundPolicyUpdateTest::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5900
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5901
	delete iDevSoundObserver1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5902
	iDevSoundObserver1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5903
	delete iDevSoundObserver2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5904
	iDevSoundObserver2 = NULL;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5905
	delete iMMFDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5906
	iMMFDevSound1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5907
	delete iMMFDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5908
	iMMFDevSound2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5909
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5911
void RDevSoundPolicyUpdateTest::Fsm(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5912
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5913
	TRAPD(err, FsmL(aClientId, aTestEvent, aError));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5914
	if(err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5915
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5916
		StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5917
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5918
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5919
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5920
void RDevSoundPolicyUpdateTest::FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5921
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5922
	switch(iStage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5923
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5924
	case EPlayData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5925
		PlayData_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5926
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5927
	case EStartPlay:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5928
		StartPlay_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5929
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5930
	case EStartRecord:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5931
		StartRecord_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5932
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5933
	case ERecordData:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5934
		RecordData_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5935
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5936
	case EStartPlayTune:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5937
		StartPlayTone_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5938
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5939
	case EStartDualPlayTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5940
		StartPlayDualTone_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5941
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5942
	case EStartPlayDTMFString:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5943
		StartPlayDTMFString_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5944
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5945
	case EStartPlayToneSequence:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5946
		StartPlayToneSequence_FsmL(aClientId, aTestEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5947
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5948
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5949
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5950
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5951
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5952
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5953
void RDevSoundPolicyUpdateTest::PlayData_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5954
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5955
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5956
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5957
	//test states for testing CMMFDevSoundSvrImp::PlayData	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5958
	case E1_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5959
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5960
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5961
			iMMFDevSound1->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5962
			iTestState = E1_PlayInitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5963
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5964
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5965
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5966
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5967
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5968
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5969
	case E1_PlayInitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5970
		if(aClientId == EObserver1 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5971
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5972
			//play data, this should result in error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5973
			iMMFDevSound1->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5974
			iTestState = E1_Simulate_hw_ThisHwBufferFilled_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5975
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5976
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5977
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5978
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5979
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5980
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5981
	case E1_Simulate_hw_ThisHwBufferFilled_error:	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5982
		if(aClientId == EObserver1 && aTestEvent == EPlayError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5983
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5984
			//the error condition is succesfully simulated; now try to init and play using another DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5985
			iMMFDevSound2->InitializeL(*iDevSoundObserver2, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5986
			iTestState = E1_InitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5987
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5988
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5989
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5990
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5991
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5992
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5993
	case E1_InitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5994
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5995
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5996
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5997
			iTestState = E1_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5998
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  5999
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6000
	case E1_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6001
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6002
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6003
			//stage1 of testing is success.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6004
			INFO_PRINTF1(_L("Policy update test for PlayData - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6005
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6006
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6007
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice2Uid, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6008
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6009
			TFourCC testUID2('T','S','T','2');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6010
			INFO_PRINTF1(_L("Second INIT"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6011
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID2, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6012
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6013
			iTestState = E2_1_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6014
			iStage = EStartPlay;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6015
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6016
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6017
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6018
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6019
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6020
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6021
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6022
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6023
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6024
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6025
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6026
//test for errors from hwDevice->SetConfig and hwDevice->StartPlay from 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6027
//CMMFDevSoundSvrImp::StartPlayDataL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6028
void RDevSoundPolicyUpdateTest::StartPlay_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6029
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6030
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6031
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6032
	//test states for testing CMMFDevSoundSvrImp::StartPlayDataL	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6033
	case E2_1_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6034
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6035
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6036
			iMMFDevSound1->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6037
			iTestState = E2_Simulate_hw_SetConfig_Error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6038
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6039
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6040
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6041
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6042
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6043
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6044
	case E2_Simulate_hw_SetConfig_Error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6045
		if(aClientId == EObserver1 && aTestEvent == EPlayError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6046
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6047
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6048
			iTestState = E2_1_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6049
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6050
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6051
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6052
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6053
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6054
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6055
	case E2_1_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6056
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6057
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6058
			//stage2_1 success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6059
			INFO_PRINTF1(_L("Policy update test for StartPlayDataL - hwDevice->SetConfig errror succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6060
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6061
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6062
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6063
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice3Uid, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6064
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6065
			TFourCC testUID3('T','S','T','3');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6066
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID3, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6067
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6068
			iTestState = E2_2_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6069
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6070
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6071
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6072
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6073
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6074
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6075
	case E2_2_InitDevSound1:	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6076
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6077
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6078
			iMMFDevSound1->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6079
			iTestState = E2_Simulate_hw_Start_Error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6080
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6081
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6082
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6083
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6084
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6085
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6086
	case E2_Simulate_hw_Start_Error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6087
		if(aClientId == EObserver1 && aTestEvent == EPlayError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6088
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6089
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6090
			iTestState = E2_2_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6091
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6092
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6093
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6094
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6095
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6096
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6097
	case E2_2_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6098
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6099
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6100
			//stage2_2 success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6101
			INFO_PRINTF1(_L("Policy update test for StartPlayDataL -hwDevice->Start error - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6102
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6103
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6104
			//initiate next stage 3 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6105
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6106
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice2Uid, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6107
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6108
			TFourCC testUID2('T','S','T','2');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6109
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID2, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6110
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6111
			iTestState = E3_1_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6112
			iStage = EStartRecord;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6113
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6114
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6115
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6116
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6117
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6118
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6119
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6120
		StopTest(aError, EFail);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6121
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6122
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6124
void RDevSoundPolicyUpdateTest::StartRecord_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6125
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6126
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6128
	//test states for testing CMMFDevSoundSvrImp::StartRecordDataL	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6129
	//stage2_1: tests SetRecordFormat(iRecordFormat); error	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6130
	//- error for	SetDeviceRecordLevel(iGain); can't be tested;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6131
	//as initialisation would have failed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6132
	//stage2_2: tests iCMMFHwDevice->Start(EDevEncode, EDevInFlow); error.	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6133
	case E3_1_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6134
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6135
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6136
			//initialise devsound2 to be used to check if policy is available.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6137
			iMMFDevSound2->InitializeL(*iDevSoundObserver2, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6138
			iTestState = E3_1_InitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6139
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6140
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6141
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6142
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6143
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6144
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6145
	case E3_1_InitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6146
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6147
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6148
			iMMFDevSound1->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6149
			iTestState = E3_Simulate_hw_SetConfig_Error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6150
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6151
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6152
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6153
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6154
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6155
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6156
	case E3_Simulate_hw_SetConfig_Error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6157
		if(aClientId == EObserver1 && aTestEvent == ERecordError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6158
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6159
			iMMFDevSound2->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6160
			iTestState = E3_1_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6161
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6162
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6163
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6164
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6165
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6166
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6167
	case  E3_1_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6168
		if(aClientId == EObserver2 && aTestEvent == EBTBE && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6169
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6170
			//stage3_1 test is success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6171
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6172
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6173
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice3Uid, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6174
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6175
			TFourCC testUID3('T','S','T','3');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6176
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID3, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6177
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6178
			iTestState = E3_2_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6179
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6180
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6181
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6182
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6183
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6184
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6185
	case E3_2_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6186
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6187
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6188
			iMMFDevSound1->RecordInitL();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6189
			iTestState = E3_Simulate_hw_Start_Error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6190
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6191
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6192
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6193
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6194
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6195
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6196
	case E3_Simulate_hw_Start_Error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6197
		if(aClientId == EObserver1 && aTestEvent == ERecordError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6198
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6199
			iMMFDevSound2->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6200
			iTestState = E3_2_PlayInitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6201
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6202
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6203
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6204
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6205
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6206
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6207
	case E3_2_PlayInitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6208
		if(aClientId == EObserver2 && aTestEvent == EBTBE && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6209
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6210
			//stage3_2 test is success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6211
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6212
			iMMFDevSound1->Stop(); //start next stage of test newly
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6213
			INFO_PRINTF1(_L("Policy update test for StartRecord - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6214
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6215
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice1Uid, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6216
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6217
			TFourCC testUID1('T','S','T','1');
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6218
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, testUID1, EMMFStateRecording);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6219
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6220
			iTestState = E4_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6221
			iStage = ERecordData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6222
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6223
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6224
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6225
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6226
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6227
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6228
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6229
		StopTest(aError, EFail);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6230
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6231
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6233
void RDevSoundPolicyUpdateTest::RecordData_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6234
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6235
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6236
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6237
	case E4_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6238
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6239
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6240
			iMMFDevSound1->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6241
			iTestState = E4_RecordInitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6242
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6243
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6244
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6245
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6246
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6247
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6248
	case E4_RecordInitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6249
		if(aClientId == EObserver1 && aTestEvent == EBTBE && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6250
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6251
			iMMFDevSound1->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6252
			iTestState = E4_Simulate_hw_ThisHwBufferEmptied_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6253
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6254
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6255
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6256
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6257
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6258
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6259
	case E4_Simulate_hw_ThisHwBufferEmptied_error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6260
		if(aClientId == EObserver1 && aTestEvent == ERecordError && aError == KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6261
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6262
			iMMFDevSound2->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6263
			iTestState = E4_RecordInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6264
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6265
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6266
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6267
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6268
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6269
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6270
	case E4_RecordInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6271
		if(aClientId == EObserver2 && aTestEvent == EBTBE && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6272
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6273
			//stage4 test is success.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6274
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6275
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6276
			INFO_PRINTF1(_L("Policy update test for RecordData - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6277
			#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6278
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice2Uid, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6279
			#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6280
			//At this point the test will be stoped  because InitializeL(MDevSoundObserver &aDevSoundObserver, TFourCC aFourCC, TMMFState aMode); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6281
			//Is not valid for tone play on A3F
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6282
			INFO_PRINTF1(_L("The next tests will be skipped because InitializeL(); using FourCC is not valid for tone play in A3F"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6283
			StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6284
			#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6285
			iTestState = E5_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6286
			iStage = EStartPlayTune;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6287
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6288
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6289
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6290
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6291
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6292
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6293
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6294
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6295
		};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6296
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6298
void RDevSoundPolicyUpdateTest::StartPlayTone_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6299
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6300
	TInt toneFreq = 1000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6301
	TTimeIntervalMicroSeconds duration = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6302
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6303
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6304
	case E5_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6305
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6306
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6307
			iMMFDevSound1->PlayToneL(toneFreq, duration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6308
			iTestState = E5_Simulate_hw_SetConfig_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6309
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6310
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6311
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6312
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6313
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6314
		break;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6315
	case E5_Simulate_hw_SetConfig_error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6316
		if(aClientId == EObserver1 && aTestEvent == ETonePlayError && aError == KErrAbort )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6317
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6318
			iMMFDevSound2->InitializeL(*iDevSoundObserver2, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6319
			iTestState = E5_InitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6320
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6321
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6322
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6323
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6324
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6325
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6326
	case E5_InitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6327
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6328
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6329
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6330
			iTestState = E5_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6331
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6332
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6333
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6334
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6335
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6336
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6337
	case E5_PlayInitDevSound2:	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6338
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6339
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6340
			//stage5 test success for hw-SetConfig error. i.e. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6341
			//CMMFDevSoundSvrImp::SetPlayFormat error.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6342
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6343
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6344
			INFO_PRINTF1(_L("Policy update test for StartPlayTone - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6345
			iMMFDevSound1->InitializeL(*iDevSoundObserver1, iTestHwDevice2Uid, EMMFStateTonePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6346
			iTestState = E6_InitDevSound1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6347
			iStage = EStartDualPlayTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6348
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6349
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6350
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6351
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6352
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6353
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6354
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6355
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6357
void RDevSoundPolicyUpdateTest::StartPlayDualTone_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6358
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6359
	TInt freq1 = 1000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6360
	TInt freq2 = 2000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6361
	TTimeIntervalMicroSeconds duration = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6362
	//for initiating next stage.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6363
	TTimeIntervalMicroSeconds32 onLength = 1000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6364
	TTimeIntervalMicroSeconds32 offLength = 1000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6365
	TTimeIntervalMicroSeconds32 pauseLength = 500;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6366
	TBuf<100> dummy;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6367
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6368
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6369
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6370
	case E6_InitDevSound1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6371
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6372
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6373
			iMMFDevSound1->PlayDualToneL(freq1, freq2, duration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6374
			iTestState = E6_Simulate_hw_SetConfig_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6375
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6376
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6377
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6378
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6379
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6380
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6381
	case E6_Simulate_hw_SetConfig_error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6382
		if(aClientId == EObserver1 && aTestEvent == ETonePlayError && aError == KErrAbort )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6383
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6384
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6385
			iTestState = E6_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6386
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6387
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6388
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6389
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6390
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6391
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6392
	case E6_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6393
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6394
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6395
			//stage6 success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6396
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6397
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6398
			INFO_PRINTF1(_L("Policy update test for StartPlayDualTone - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6399
			iMMFDevSound1->SetDTMFLengths(onLength, offLength, pauseLength);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6400
			iMMFDevSound1->PlayDTMFStringL(dummy);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6401
			iTestState = E7_Simulate_hw_SetConfig_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6402
			iStage = EStartPlayDTMFString;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6403
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6404
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6405
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6406
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6407
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6408
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6409
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6410
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6412
void RDevSoundPolicyUpdateTest::StartPlayDTMFString_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6413
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6414
	TBuf8<100> dummy; //to initiate next stage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6415
	dummy.Format(_L8("SQNC%d"),TUint8(0x0a));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6416
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6417
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6418
	case E7_Simulate_hw_SetConfig_error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6419
		if(aClientId == EObserver1 && aTestEvent == ETonePlayError && aError == KErrAbort )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6420
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6421
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6422
			iTestState = E7_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6423
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6424
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6425
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6426
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6427
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6428
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6429
	case E7_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6430
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6431
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6432
			//stage7 test success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6433
			iMMFDevSound1->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6434
			iMMFDevSound2->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6435
			INFO_PRINTF1(_L("Policy update test for StartPlayDTMFString - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6436
			iMMFDevSound1->PlayToneSequenceL(dummy);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6437
			iTestState = E8_Simulate_hw_SetConfig_error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6438
			iStage = EStartPlayToneSequence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6439
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6440
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6441
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6442
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6443
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6444
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6445
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6446
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6447
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6448
void RDevSoundPolicyUpdateTest::StartPlayToneSequence_FsmL(TClientId aClientId, TTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6449
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6450
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6451
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6452
	case E8_Simulate_hw_SetConfig_error:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6453
	// Only HwDevice with UID= KMmfUidHwDevicePCM16ToPCM16 is valid.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6454
	// since test hwDevice is used will get KErrGeneral.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6455
		if(aClientId == EObserver1 && aTestEvent == ETonePlayError && aError == KErrGeneral )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6456
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6457
			iMMFDevSound2->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6458
			iTestState = E8_PlayInitDevSound2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6459
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6460
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6461
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6462
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6463
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6464
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6465
	case E8_PlayInitDevSound2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6466
		if(aClientId == EObserver2 && aTestEvent == EBTBF && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6467
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6468
			INFO_PRINTF1(_L("Policy update test for StartPlayToneSequence - succeeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6469
			StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6470
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6471
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6472
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6473
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6474
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6475
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6476
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6477
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6478
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6479
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6480
const TUint8 KFixedSequenceTestSequenceData[]=
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6481
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6482
	0x53, 0x51, 0x4E, 0x43, // HEADER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6483
	0xFE, 0xFF, // -2 STARTLOOP INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6484
	0x0A, 0x00,  // Number of times that the sequence will be played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6485
	/* Tone Data constitutes the following:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6486
	  ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6487
	The sequence is arranged in blocks of 8 bits to represent 16 bit values, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6488
	which allows more dynamic range, frequency and time values.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6489
	The tag Low and High mean low and high byte block.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6490
	Low    Hi    Low   Hi   Low   Hi    Low   Hi    Low   Hi
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6491
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6492
	0x64, 0x00, 0xB8, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6493
	0x64, 0x00, 0xD2, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6494
	0x64, 0x00, 0xEE, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6495
	0x64, 0x00, 0x0B, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6496
	0x64, 0x00, 0x2A, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6497
	0x64, 0x00, 0x4B, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6498
	0x64, 0x00, 0x6E, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6499
	0x64, 0x00, 0x93, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6500
	0x64, 0x00, 0xBA, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6501
	0x64, 0x00, 0xE4, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6502
	0x64, 0x00, 0x3F, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6503
	0x64, 0x00, 0x70, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6504
	0x64, 0x00, 0xA4, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6505
	0x64, 0x00, 0xDC, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6506
	0x64, 0x00, 0x17, 0x04, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6507
	// Silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6508
	// ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6509
	0x70, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6510
	0xFD, 0xFF, // -3 ENDOFLOOP INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6511
	// Another silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6512
	// ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6513
	0x70, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6514
	0xFF, 0xFF // -1 SEQ_CMD_RET INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6515
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6516
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6517
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6518
RDevSoundTestBase::RDevSoundTestBase(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6519
	:	iDevSoundState(EStateInitial), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6520
		iMMFDevSound(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6521
		iTimer(NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6522
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6523
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6524
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6525
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6526
void RDevSoundTestBase::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6527
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6528
	INFO_PRINTF1(_L("__________  Creating DevSound object ___________"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6529
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6530
	// Create devsound object	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6531
	TRAPD(err,  iMMFDevSound = CMMFDevSound::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6532
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6533
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6534
		ERR_PRINTF2(_L("Could not create DevSound object. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6535
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6536
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6537
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6538
	INFO_PRINTF1(_L("DevSound State: EStateCreated"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6539
	iDevSoundState = EStateCreated;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6540
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6541
	DoKickoffTestL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6542
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6543
	INFO_PRINTF1(_L("DevSound Event: EEventInitialize"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6544
	Fsm(EEventInitialize, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6545
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6546
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6547
void RDevSoundTestBase::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6548
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6549
	INFO_PRINTF1(KMsgDeleteDevsound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6550
	delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6551
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6552
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6553
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6554
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6555
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6556
 * CallStopTest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6557
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6558
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6559
void RDevSoundTestBase::CallStopTest(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6560
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6561
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6562
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6563
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6564
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6565
void RDevSoundTestBase::StartTimer(TTimeIntervalMicroSeconds32 aWaitTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6566
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6567
	TTimeIntervalMicroSeconds32 timeInterval;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6568
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6569
	if(aWaitTime <= TTimeIntervalMicroSeconds32(0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6570
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6571
		timeInterval = KMicroSecsInOneSec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6572
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6573
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6574
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6575
		timeInterval = aWaitTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6576
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6577
	TCallBack callback (TimerCallback, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6578
	iTimer->Start(timeInterval, timeInterval, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6579
	INFO_PRINTF1(_L("Timer has been started"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6580
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6581
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6582
TInt RDevSoundTestBase::TimerCallback(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6583
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6584
	static_cast<RDevSoundTestBase*>(aPtr)->DoTimerCallback();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6585
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6586
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6587
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6588
void RDevSoundTestBase::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6589
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6590
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6591
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6592
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6593
void RDevSoundTestBase::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6594
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6595
	INFO_PRINTF1(_L("========== DevSound InitializeComplete() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6596
	INFO_PRINTF3(KMsgErrorDevSoundCallback, &KInitializeCompleteText, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6597
	if(iDevSoundState == EStateInitializing)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6598
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6599
		INFO_PRINTF1(_L("DevSound Event: EEventInitComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6600
		Fsm(EEventInitComplete, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6601
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6602
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6603
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6604
void RDevSoundTestBase::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6605
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6606
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6607
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6608
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6609
		INFO_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d as expected"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6610
		StopTest(aError,EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6611
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6612
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6613
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6614
		ERR_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6615
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6616
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6617
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6618
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6619
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6620
void RDevSoundTestBase::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6621
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6622
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6623
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6624
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6625
void RDevSoundTestBase::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6626
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6627
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6628
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6629
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6630
void RDevSoundTestBase::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6631
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6632
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6633
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6635
void RDevSoundTestBase::RecordError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6636
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6637
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6638
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6639
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6640
void RDevSoundTestBase::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6641
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6642
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6643
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6645
void RDevSoundTestBase::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6646
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6647
	__ASSERT_ALWAYS(0, Panic(EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6648
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6649
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6650
void RDevSoundTestBase::SendEventToClient(const TMMFEvent& aEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6651
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6652
	INFO_PRINTF3(_L("RDevSoundTestBase::SendEventToClient type=0x%08x errorCode=%d"),aEvent.iEventType, aEvent.iErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6653
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6655
void RDevSoundTestBase::Panic(TInt aReason)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6656
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6657
	_LIT(KDevSoundVolumeRampTestBase, "RDevSoundVolumeRampTestBase");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6658
	User::Panic(KDevSoundVolumeRampTestBase, aReason);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6659
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6661
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6662
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6663
 * MM-MMF-DEVSOUND-U-0075-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6664
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6665
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6666
RDevSoundDualToneVolumeRampTest::RDevSoundDualToneVolumeRampTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6667
	:	RDevSoundTestBase(aTestName), iVolumeRamp(0), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6668
		iDuration(0), iFrequencyTone1(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6669
		iFrequencyTone2(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6670
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6671
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6672
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6673
RDevSoundDualToneVolumeRampTest* RDevSoundDualToneVolumeRampTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6674
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6675
	RDevSoundDualToneVolumeRampTest * self = new(ELeave)RDevSoundDualToneVolumeRampTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6676
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6677
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6678
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6679
void RDevSoundDualToneVolumeRampTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6680
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6681
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6682
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6683
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6684
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6685
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6686
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6687
	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6688
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6689
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6690
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6691
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6692
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6693
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6694
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6695
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6696
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6697
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6698
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6699
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6700
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6701
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6702
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6703
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6704
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6705
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6706
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6707
void RDevSoundDualToneVolumeRampTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6708
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6709
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6710
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6711
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6712
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6713
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6714
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6715
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6716
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6717
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6718
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6719
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6720
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6721
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6722
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6723
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6724
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6725
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6726
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6727
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6728
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6729
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6730
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6731
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6732
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6733
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6734
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6735
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6736
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6737
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6738
				INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume using MaxVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6739
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6740
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6741
				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6742
				iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6743
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6744
				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6745
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6746
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6747
					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6748
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6749
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6750
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6751
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6752
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6753
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6754
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6755
				StopTest(aError);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6756
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6757
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6758
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6759
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6760
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6761
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6762
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6763
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6764
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6765
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6766
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6767
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6768
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6769
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6770
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6771
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6772
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6773
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6774
 * MM-MMF-DEVSOUND-U-0076-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6775
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6776
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6777
RDevSoundDTMFStringVolumeRampTest::RDevSoundDTMFStringVolumeRampTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6778
	:	RDevSoundTestBase(aTestName), iVolumeRamp(0), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6779
	iDTMFString(KNullDesC)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6780
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6781
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6782
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6783
RDevSoundDTMFStringVolumeRampTest* RDevSoundDTMFStringVolumeRampTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6784
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6785
	RDevSoundDTMFStringVolumeRampTest * self = new(ELeave)RDevSoundDTMFStringVolumeRampTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6786
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6787
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6789
void RDevSoundDTMFStringVolumeRampTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6790
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6791
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6792
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6793
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6794
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6795
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6796
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6797
	TPtrC DTMF;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6798
	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6799
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6800
		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6801
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6802
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6803
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6804
	iDTMFString.Copy(DTMF);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6805
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6806
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6807
void RDevSoundDTMFStringVolumeRampTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6808
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6809
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6810
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6811
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6812
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6813
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6814
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6815
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6816
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6817
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6818
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6819
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6820
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6821
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6822
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6823
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6824
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6825
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6826
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6827
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6828
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6829
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6830
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6831
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6832
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6833
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6834
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6835
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6836
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6837
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6838
				INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume using MaxVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6839
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6840
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6841
				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6842
				iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6843
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6844
				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6845
				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6846
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6847
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6848
					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6849
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6850
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6851
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6852
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6853
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6854
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6855
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6856
				StopTest(aError);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6857
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6858
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6859
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6860
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6861
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6862
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6863
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6864
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6865
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6866
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6867
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6868
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6869
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6870
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6871
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6873
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6874
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6875
 * MM-MMF-DEVSOUND-U-0077-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6876
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6877
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6878
RDevSoundToneSequenceVolumeRampTest::RDevSoundToneSequenceVolumeRampTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6879
	:	RDevSoundTestBase(aTestName), iVolumeRamp(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6880
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6881
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6883
RDevSoundToneSequenceVolumeRampTest* RDevSoundToneSequenceVolumeRampTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6884
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6885
	RDevSoundToneSequenceVolumeRampTest * self = new(ELeave)RDevSoundToneSequenceVolumeRampTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6886
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6887
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6888
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6889
void RDevSoundToneSequenceVolumeRampTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6890
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6891
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6892
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6893
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6894
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6895
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6896
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6897
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6898
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6899
void RDevSoundToneSequenceVolumeRampTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6900
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6901
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6902
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6903
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6904
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6905
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6906
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6907
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6908
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6909
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6910
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6911
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6912
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6913
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6914
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6915
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6916
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6917
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6918
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6919
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6920
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6921
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6922
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6923
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6924
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6925
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6926
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6927
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6928
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6929
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6930
				INFO_PRINTF1(_L("Calling CMMFDevSound::SetVolume using MaxVolume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6931
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6933
				INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6934
				iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6935
				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6936
				TUint8* tablePointer = const_cast<TUint8*>(&(KFixedSequenceTestSequenceData[0])); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6937
				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6938
				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6939
				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6940
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6941
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6942
					ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6943
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6944
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6945
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6946
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6947
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6948
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6949
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6950
				StopTest(aError);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6951
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6952
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6953
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6954
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6955
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6956
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6957
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6958
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6959
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6960
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6961
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6962
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6963
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6964
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6965
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6966
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6967
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6968
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6969
 * MM-MMF-DEVSOUND-U-0078-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6970
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6971
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6972
RDevSoundDualToneSetVolumeRampWhilePlayingTest::RDevSoundDualToneSetVolumeRampWhilePlayingTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6973
	:	RDevSoundTestBase(aTestName), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6974
		iVolume(0), iVolumeRamp(0), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6975
		iDuration(0), iFrequencyTone1(0), iFrequencyTone2(0), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6976
		iTonePlayedTwice(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6977
		iTimesToneFinishedCalled(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6978
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6979
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6980
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6981
RDevSoundDualToneSetVolumeRampWhilePlayingTest* RDevSoundDualToneSetVolumeRampWhilePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6982
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6983
	RDevSoundDualToneSetVolumeRampWhilePlayingTest * self = new(ELeave)RDevSoundDualToneSetVolumeRampWhilePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6984
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6985
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6986
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6987
void RDevSoundDualToneSetVolumeRampWhilePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6988
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6989
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6990
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6991
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6992
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6993
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6994
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6995
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6996
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6997
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6998
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  6999
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7000
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7001
	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7002
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7003
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7004
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7005
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7006
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7007
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7008
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7009
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7010
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7011
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7012
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7013
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7014
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7015
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7016
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7017
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7018
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7019
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7020
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7021
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7022
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7023
void RDevSoundDualToneSetVolumeRampWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7024
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7025
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7026
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7027
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7028
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7029
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7030
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7031
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7032
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7033
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7034
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7035
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7036
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7037
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7038
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7039
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7040
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7041
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7042
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7043
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7044
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7045
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7046
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7047
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7048
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7049
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7050
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7051
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7052
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7053
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7054
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7055
				iStartTime.HomeTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7056
				INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7057
				TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7058
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7059
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7060
					ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL left with error = %d!"),  err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7061
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7062
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7063
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7064
				StartTimer(KMicroSecsTwoSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7065
				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7066
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7067
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7068
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7069
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7070
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7071
				StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7072
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7073
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7074
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7075
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7076
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7077
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7078
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7079
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7080
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7081
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7082
				ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7083
				StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7084
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7085
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7086
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7087
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7088
void RDevSoundDualToneSetVolumeRampWhilePlayingTest::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7089
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7090
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7091
	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7092
	INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7093
	iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7094
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7095
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7096
void RDevSoundDualToneSetVolumeRampWhilePlayingTest::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7097
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7098
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7099
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7100
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7101
		TInt totalExpectedReproductionTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7102
		iTimesToneFinishedCalled++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7103
		totalExpectedReproductionTime = iDuration * iTimesToneFinishedCalled * KMicroSecsInOneSec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7104
		iEndTime.HomeTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7105
		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7106
		if(!iTonePlayedTwice)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7107
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7108
			INFO_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7109
			INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using frequency = %d Hz and duration = %d secs "), iFrequencyTone1, iDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7110
			TRAPD(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7111
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7112
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7113
				ERR_PRINTF2(_L("CMMFDevSound::PlayDualToneL with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7114
				StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7115
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7116
			iTonePlayedTwice = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7117
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7118
		else if (iPlayToneTime < totalExpectedReproductionTime + KPlayVarianceTime && iPlayToneTime > totalExpectedReproductionTime - KPlayVarianceTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7119
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7120
			INFO_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished twice with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7121
			INFO_PRINTF2(_L("Play time is %Ld microseconds"), iPlayToneTime.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7122
			StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7123
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7124
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7125
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7126
			INFO_PRINTF3(_L("Play time is %Ld microseconds and it should have been %d microseconds"), iPlayToneTime.Int64(), totalExpectedReproductionTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7127
			StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7128
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7129
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7130
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7131
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7132
		ERR_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7133
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7134
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7135
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7136
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7137
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7139
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7140
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7141
 * MM-MMF-DEVSOUND-U-0079-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7142
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7143
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7144
RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::RDevSoundDTMFStringSetVolumeRampWhilePlayingTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7145
	:	RDevSoundTestBase(aTestName), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7146
		iVolume(0), iVolumeRamp(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7147
		iFirstToneFinishedCall(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7148
		iDTMFString(KNullDesC),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7149
		iDTMFPauses(0), iDTMFTones(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7150
		iTimesToneFinishedCalled(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7151
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7152
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7154
RDevSoundDTMFStringSetVolumeRampWhilePlayingTest* RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7155
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7156
	RDevSoundDTMFStringSetVolumeRampWhilePlayingTest * self = new(ELeave)RDevSoundDTMFStringSetVolumeRampWhilePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7157
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7158
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7160
void RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7161
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7162
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7163
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7164
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7165
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7166
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7167
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7168
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7169
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7170
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7171
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7172
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7173
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7174
	TPtrC DTMF;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7175
	if (!GetStringFromConfig(iTestStepName, KDTMFString, DTMF))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7176
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7177
		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7178
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7179
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7180
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7181
	iDTMFString.Copy(DTMF);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7182
	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7183
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7184
		if (iDTMFString[i] == ',')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7185
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7186
			iDTMFPauses++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7187
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7188
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7189
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7190
			iDTMFTones++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7191
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7192
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7193
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7194
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7195
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7196
void RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7197
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7198
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7199
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7200
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7201
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7202
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7203
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7204
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7205
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7206
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7207
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7208
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7209
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7210
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7211
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7212
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7213
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7214
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7215
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7216
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7217
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7218
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7219
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7220
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7221
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7222
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7223
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7224
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7225
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7226
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7227
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7228
				iStartTime.HomeTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7229
				INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7230
				TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7231
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7232
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7233
					ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7234
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7235
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7236
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7237
				StartTimer(KMicroSecsTwoSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7238
				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7239
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7240
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7241
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7242
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7243
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7244
				StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7245
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7246
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7247
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7248
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7249
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7250
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7251
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7252
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7253
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7254
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7255
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7256
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7257
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7258
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7259
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7260
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7261
void RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7262
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7263
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7264
	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7265
	INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7266
	iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7267
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7268
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7269
void RDevSoundDTMFStringSetVolumeRampWhilePlayingTest::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7270
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7271
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7272
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7273
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7274
		iTimesToneFinishedCalled++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7275
		iEndTime.HomeTime();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7276
		iPlayToneTime = iEndTime.MicroSecondsFrom(iStartTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7277
		INFO_PRINTF2(_L("Play time is %d microseconds"), iPlayToneTime.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7278
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7279
		TInt expectedPlayToneTime = (KDefaultOnDTMFLength*iDTMFTones + KDefaultOffDTMFLength*iDTMFTones + iDTMFPauses*KDefaultPauseDTMFLength) * iTimesToneFinishedCalled;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7280
		INFO_PRINTF2(_L("Expected play time is %d microseconds"), expectedPlayToneTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7281
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7282
		if (!iFirstToneFinishedCall)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7283
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7284
			INFO_PRINTF1(_L("First play tone succeded "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7285
			iFirstToneFinishedCall = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7286
			INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"), &iDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7287
			TRAPD(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7288
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7289
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7290
				ERR_PRINTF2(_L("CMMFDevSound::PlayDTMFStringL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7291
				StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7292
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7293
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7294
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7295
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7296
		if ( Abs(iPlayToneTime.Int64() - expectedPlayToneTime) < KPlayVarianceTime )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7297
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7298
			INFO_PRINTF1(_L("Calling CMMFDevSound::SetDTMFLengths succeded."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7299
			INFO_PRINTF2(_L("Play time is %d microseconds"), iPlayToneTime.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7300
			StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7301
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7302
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7303
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7304
			ERR_PRINTF2(_L("Calling CMMFDevSound::SetDTMFLengths failed with %Ld"), iPlayToneTime.Int64());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7305
			ERR_PRINTF2(_L("Expected time %d"), expectedPlayToneTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7306
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7307
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7308
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7309
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7310
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7311
		ERR_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7312
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7313
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7314
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7315
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7316
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7317
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7318
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7319
 * MM-MMF-DEVSOUND-U-0080-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7320
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7321
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7322
RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::RDevSoundToneSequenceSetVolumeRampWhilePlayingTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7323
	:	RDevSoundTestBase(aTestName), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7324
		iVolume(0), iVolumeRamp(0), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7325
		iFirstToneFinishedCall(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7326
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7327
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7328
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7329
RDevSoundToneSequenceSetVolumeRampWhilePlayingTest* RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7330
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7331
	RDevSoundToneSequenceSetVolumeRampWhilePlayingTest * self = new(ELeave)RDevSoundToneSequenceSetVolumeRampWhilePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7332
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7333
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7335
void RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7336
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7337
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7338
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7339
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7340
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7341
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7342
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7343
	if (!GetIntFromConfig(iTestStepName, KVolumeRamp, iVolumeRamp)) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7344
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7345
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7346
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7347
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7348
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7349
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7350
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7351
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7352
void RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7353
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7354
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7355
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7356
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7357
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7358
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7359
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7360
				__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7361
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7362
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7363
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7364
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7365
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7366
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7367
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7368
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7369
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7370
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7371
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7372
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7373
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7374
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7375
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7376
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7377
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7378
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7379
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7380
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7381
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7382
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7383
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7384
				TUint8* tablePointer = const_cast<TUint8*>(&(KFixedSequenceTestSequenceData[0])); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7385
				TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7386
				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7387
				TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7388
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7389
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7390
					ERR_PRINTF2(_L("Play tone sequence failed with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7391
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7392
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7393
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7394
				StartTimer(KMicroSecsTwoSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7395
				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7396
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7397
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7398
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7399
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7400
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7401
				StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7402
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7403
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7404
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7405
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7406
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7407
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7408
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7409
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7410
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7411
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7412
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7413
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7414
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7415
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7416
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7417
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7418
void RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7419
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7420
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7421
	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7422
	INFO_PRINTF2(_L("Calling CMMFDevSound::SetVolumeRamp using volume ramp time = %d"), iVolumeRamp);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7423
	iMMFDevSound->SetVolumeRamp(iVolumeRamp*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7424
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7425
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7426
void RDevSoundToneSequenceSetVolumeRampWhilePlayingTest::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7427
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7428
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7429
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7430
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7431
		if (!iFirstToneFinishedCall)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7432
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7433
			INFO_PRINTF1(_L("First play tone succeded"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7435
			iFirstToneFinishedCall = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7436
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7437
			TUint8* tablePointer = const_cast<TUint8*>(&(KFixedSequenceTestSequenceData[0])); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7438
			TPtrC8 KFixedSequenceData(tablePointer,  sizeof(KFixedSequenceTestSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7439
			INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7440
			TRAPD(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7441
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7442
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7443
				ERR_PRINTF2(_L("CMMFDevSound::PlayToneSequenceL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7444
				StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7445
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7446
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7447
		else if (iFirstToneFinishedCall)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7448
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7449
			INFO_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished twice with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7450
			StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7451
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7452
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7453
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7454
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7455
		ERR_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7456
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7457
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7458
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7459
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7460
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7461
//PDEF121315: Observer class for the test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7462
CMultiInitTestDevSoundObserver* CMultiInitTestDevSoundObserver::NewL(RDevSoundMultiInitTest* aParent, RDevSoundMultiInitTest::EClientId aClientId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7463
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7464
	CMultiInitTestDevSoundObserver* self = new(ELeave)CMultiInitTestDevSoundObserver(aParent, aClientId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7465
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7466
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7468
CMultiInitTestDevSoundObserver::CMultiInitTestDevSoundObserver(RDevSoundMultiInitTest* aParent, RDevSoundMultiInitTest::EClientId aClientId):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7469
iParent(aParent), iSelfId(aClientId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7470
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7471
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7472
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7473
void CMultiInitTestDevSoundObserver::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7474
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7475
	iParent->Fsm(iSelfId, RDevSoundMultiInitTest::EDevSoundInitComplete, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7476
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7477
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7478
void CMultiInitTestDevSoundObserver::ToneFinished(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7479
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7480
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7481
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7482
void CMultiInitTestDevSoundObserver::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7483
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7484
	iParent->Fsm(iSelfId, RDevSoundMultiInitTest::EBTBF, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7485
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7486
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7487
void CMultiInitTestDevSoundObserver::PlayError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7488
	{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7489
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7490
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7491
void CMultiInitTestDevSoundObserver::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7492
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7493
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7494
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7495
void CMultiInitTestDevSoundObserver::RecordError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7496
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7497
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7499
void CMultiInitTestDevSoundObserver::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7500
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7501
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7502
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7503
void CMultiInitTestDevSoundObserver::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7504
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7505
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7506
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7507
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7508
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7509
//PDEF121315: test class implementation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7510
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7511
 * A brief explanation of the test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7512
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7513
 * The Test tests all 3 overloads of CMMFDevSound::InitializeL().
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7514
 * The tests involves a CMMFDevSound object and two observer objects - Observer1 and Observer2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7515
 * of type MDevSoundObserver.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7516
 * Using each InitializeL(), DevSound is intialised first with Observer1.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7517
 * Upon getting the InitializeComplete() callback, Observer1 is deleted and
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7518
 * DevSound is initialised again with Observer2. Now the the callback should be from Observer2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7519
 * and there should not be any Panic.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7520
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7521
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7522
RDevSoundMultiInitTest* RDevSoundMultiInitTest::NewL(const TDesC& aStepName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7523
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7524
	RDevSoundMultiInitTest* self = new(ELeave)RDevSoundMultiInitTest(aStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7525
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7526
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7527
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7528
RDevSoundMultiInitTest::RDevSoundMultiInitTest(const TDesC& aStepName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7529
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7530
	iTestStepName = aStepName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7531
	iTestState = EInit1Observer1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7532
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7533
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7534
void RDevSoundMultiInitTest::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7535
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7536
	INFO_PRINTF1(_L("Test case for - PDEF121315:DevSound can't update Observer without delete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7537
	iDevSoundObserver1 = CMultiInitTestDevSoundObserver::NewL(this, EObserver1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7538
	iMMFDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7539
	iMMFDevSound->InitializeL(*iDevSoundObserver1, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7540
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7541
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7542
void RDevSoundMultiInitTest::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7543
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7544
	delete iDevSoundObserver1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7545
	iDevSoundObserver1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7546
	delete iDevSoundObserver2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7547
	iDevSoundObserver2 = NULL;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7548
	delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7549
	iMMFDevSound = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7550
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7551
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7552
void RDevSoundMultiInitTest::Fsm(EClientId aClientId, EMultiInitTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7553
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7554
	TRAPD(err, FsmL(aClientId, aTestEvent, aError));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7555
	if(err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7556
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7557
		StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7558
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7559
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7560
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7561
void RDevSoundMultiInitTest::FsmL(EClientId aClientId, EMultiInitTestEvent aTestEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7562
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7563
	switch(iTestState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7564
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7565
	case EInit1Observer1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7566
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7567
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7568
			INFO_PRINTF1(_L("Testing Initlize-1; got InitComplete from Observer1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7569
			//INC120815 - moved the deletion part below so that iDevSoundObserver2 is created at the different address than 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7570
			//that of iDevSoundObserver1. Before iDevSoundObserver1 and iDevSoundObserver2 are getting created at the same address and hence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7571
			//this defect was not observed. This applies for the other cases in this switch
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7572
			iDevSoundObserver2 = CMultiInitTestDevSoundObserver::NewL(this, EObserver2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7573
			delete iDevSoundObserver1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7574
			iDevSoundObserver1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7575
			iMMFDevSound->InitializeL(*iDevSoundObserver2, EMMFStatePlaying); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7576
			INFO_PRINTF1(_L("Initialising with Observer2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7577
			iTestState = EInit1Observer2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7578
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7579
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7580
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7581
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7582
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7583
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7584
	case EInit1Observer2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7585
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7586
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7587
			INFO_PRINTF1(_L("Testing Initialize-1; got InitComplete from  Observer2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7588
			//Intialize-1 test is success; test Initialize-2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7589
			iDevSoundObserver1 = CMultiInitTestDevSoundObserver::NewL(this, EObserver1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7590
			delete iDevSoundObserver2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7591
			iDevSoundObserver2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7592
			iMMFDevSound->InitializeL(*iDevSoundObserver1, KMMFFourCCCodePCM8, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7593
			iTestState = EInit2Observer1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7594
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7595
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7596
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7597
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7598
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7599
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7600
	case EInit2Observer1:	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7601
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7602
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7603
			INFO_PRINTF1(_L("Testing Initlize-2; got InitComplete from Observer1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7604
			iDevSoundObserver2 = CMultiInitTestDevSoundObserver::NewL(this, EObserver2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7605
			delete iDevSoundObserver1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7606
			iDevSoundObserver1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7607
			iMMFDevSound->InitializeL(*iDevSoundObserver2, KMMFFourCCCodePCM8, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7608
			INFO_PRINTF1(_L("Initialising with Observer2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7609
			iTestState = EInit2Observer2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7610
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7611
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7612
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7613
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7614
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7615
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7616
	case EInit2Observer2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7617
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7618
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7619
			INFO_PRINTF1(_L("Testing Initialize-2; got InitComplete from  Observer2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7620
			//Initialize-2 test is success; test Initialize-3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7621
			iDevSoundObserver1 = CMultiInitTestDevSoundObserver::NewL(this, EObserver1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7622
			delete iDevSoundObserver2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7623
			iDevSoundObserver2 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7624
			iMMFDevSound->InitializeL(*iDevSoundObserver1, KMMFFourCCCodePCM16, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7625
			iTestState = EInit3Observer1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7626
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7627
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7628
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7629
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7630
			}			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7631
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7632
	case EInit3Observer1:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7633
		if(aClientId == EObserver1 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7634
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7635
			INFO_PRINTF1(_L("Testing Initialize-3; got InitComplete from  Observer1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7636
			iDevSoundObserver2 = CMultiInitTestDevSoundObserver::NewL(this, EObserver2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7637
			delete iDevSoundObserver1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7638
			iDevSoundObserver1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7639
			iMMFDevSound->InitializeL(*iDevSoundObserver2, KMMFFourCCCodePCM16, EMMFStatePlaying);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7640
			iTestState = EInit3Observer2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7641
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7642
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7643
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7644
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7645
			}			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7646
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7647
	case EInit3Observer2:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7648
		if(aClientId == EObserver2 && aTestEvent == EDevSoundInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7649
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7650
			StopTest(EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7651
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7652
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7653
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7654
			StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7655
			}			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7656
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7657
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7658
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7659
		};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7660
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7662
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7663
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7664
//							TruePause Devsound									//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7665
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7666
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7667
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7668
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7669
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7670
 * Global declarations
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7671
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7672
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7673
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7674
const TUint8 KFixedSequenceTestSequenceDataX[]=
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7675
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7676
    0x53, 0x51, 0x4E, 0x43, // HEADER
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7677
    0xFE, 0xFF, // -2 STARTLOOP INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7678
    0x0A, 0x00,  // Number of times that the sequence will be played
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7679
    /* Tone Data constitutes the following:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7680
      ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7681
    The sequence is arranged in blocks of 8 bits to represent 16 bit values, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7682
   	which allows more dynamic range, frequency and time values.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7683
    The tag Low and High mean low and high byte block.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7684
    Low    Hi    Low   Hi   Low   Hi    Low   Hi    Low   Hi
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7685
    */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7686
    0x64, 0x00, 0xB8, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7687
    0x64, 0x00, 0xD2, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7688
    0x64, 0x00, 0xEE, 0x01, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7689
    0x64, 0x00, 0x0B, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7690
    0x64, 0x00, 0x2A, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7691
    0x64, 0x00, 0x4B, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7692
    0x64, 0x00, 0x6E, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7693
    0x64, 0x00, 0x93, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7694
    0x64, 0x00, 0xBA, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7695
    0x64, 0x00, 0xE4, 0x02, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7696
    0x64, 0x00, 0x3F, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7697
    0x64, 0x00, 0x70, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7698
    0x64, 0x00, 0xA4, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7699
    0x64, 0x00, 0xDC, 0x03, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7700
    0x64, 0x00, 0x17, 0x04, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7701
    // Silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7702
    // ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7703
    0x70, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7704
    0xFD, 0xFF, // -3 ENDOFLOOP INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7705
    // Another silence
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7706
    // ToneDur,    Freq1,      Vol1,       Freq2       Vol2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7707
    0x70, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7708
    0xFF, 0xFF // -1 SEQ_CMD_RET INDICATOR
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7709
    };
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7710
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7711
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7712
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7713
 * Audio play client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7714
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7715
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7717
CA3FDevSoundPlayClient::CA3FDevSoundPlayClient(MA3FDevsoundPlayAudioClientObserver &aObserver, TFourCC aFourccCode, RFs &aFs, CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7718
	:	iDevSoundState(EStateInitial), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7719
		iDevSound(NULL), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7720
		iObserver(aObserver),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7721
		iFilename(KNullDesC),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7722
		iFs(aFs),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7723
		iFourccCode(aFourccCode),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7724
		iSuite(aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7725
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7726
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7727
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7728
CA3FDevSoundPlayClient::~CA3FDevSoundPlayClient()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7729
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7730
	delete iDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7731
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7732
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7733
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7734
CA3FDevSoundPlayClient* CA3FDevSoundPlayClient::NewL(MA3FDevsoundPlayAudioClientObserver &aObserver, TFourCC aFourccCode, RFs &aFs, CTestSuite* aSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7735
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7736
	CA3FDevSoundPlayClient* self = new (ELeave) CA3FDevSoundPlayClient(aObserver,aFourccCode ,aFs, aSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7737
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7738
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7739
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7740
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7741
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7742
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7743
void CA3FDevSoundPlayClient::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7744
	{   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7745
	iDevSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7746
	iDevSoundState = EStateCreated;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7747
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7748
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7749
void CA3FDevSoundPlayClient::SetPriority(TInt priority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7750
	{   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7751
	TMMFPrioritySettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7752
	settings.iPriority = priority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7753
	settings.iPref = EMdaPriorityPreferenceTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7754
	iDevSound->SetPrioritySettings(settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7755
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7756
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7757
TInt CA3FDevSoundPlayClient::PlayInit(const TDesC& aFileName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7758
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7759
	iFilename.Copy(aFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7760
	TInt err  = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7761
	return Fsm(EEventInitialize);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7762
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7763
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7764
TInt CA3FDevSoundPlayClient::PlayAudio()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7765
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7766
	return Fsm(EEventInitComplete);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7767
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7768
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7769
void CA3FDevSoundPlayClient::StopPlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7770
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7771
	iDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7772
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7773
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7774
void CA3FDevSoundPlayClient::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7775
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7776
	iObserver.ClientInitializeCompleteCallback(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7777
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7778
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7779
void CA3FDevSoundPlayClient::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7780
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7781
	TInt err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7782
	if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7783
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7784
		err = KErrGeneral;	// Null Buffer was received
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7785
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7786
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7787
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7788
		iBuffer = aBuffer;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7789
		err = Fsm(EEventBTBF);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7790
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7791
	iObserver.ClientBufferToBeFilledCallback(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7792
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7793
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7794
void CA3FDevSoundPlayClient::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7795
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7796
	if (iBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7797
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7798
		iObserver.ClientPlayErrorCallback(aError, iBuffer->LastBuffer());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7799
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7800
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7801
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7802
		iObserver.ClientPlayErrorCallback(aError, EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7803
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7804
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7805
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7806
TInt CA3FDevSoundPlayClient::Fsm(TMmfDevSoundEvent aDevSoundEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7807
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7808
	TInt err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7809
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7810
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7811
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7812
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7813
			INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7814
			if(aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7815
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7816
				TRAP(err, iDevSound->InitializeL(*this, iFourccCode, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7817
				if(err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7818
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7819
					INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7820
					iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7821
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7822
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7823
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7824
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7825
					ERR_PRINTF2(_L("Leave Error when calling InitializeL() on second DevSound instance: %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7826
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7827
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7828
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7829
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7830
				err=EInvalidClientFSMEvent;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7831
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7832
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7833
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7834
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7835
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7836
			if(aDevSoundEvent == EEventInitComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7837
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7838
				iDevSound->SetVolume(iDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7839
				INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7840
				TRAP(err, iDevSound->PlayInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7841
				if(err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7842
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7843
					INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7844
					iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7845
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7846
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7847
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7848
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7849
					ERR_PRINTF2(_L("Leave Error when calling PlayInitL() on second DevSound instance: %d"),err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7850
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7851
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7852
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7853
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7854
				err=EInvalidClientFSMEvent;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7855
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7856
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7857
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7858
		case EStatePlaying:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7859
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7860
			if(aDevSoundEvent == EEventBTBF)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7861
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7862
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7863
				err = iFile.Read(buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7864
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7865
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7866
					err=EReadFileErrorInClient;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7867
					iObserver.ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(EReadFileErrorInClient);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7868
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7869
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7870
				if (buffer->Data().Length() != buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7871
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7872
					iBuffer->SetLastBuffer(ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7873
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7874
				iDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7875
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7876
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7877
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7878
				iObserver.ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(EInvalidClientFSMEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7879
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7880
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7881
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7882
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7883
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7884
			iObserver.ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(EInvalidClientFSMState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7885
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7886
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7887
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7888
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7889
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7890
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7891
void CA3FDevSoundPlayClient::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7892
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7893
	__ASSERT_ALWAYS(0, Panic(_L("CA3FDevSoundPlayClient"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7894
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7895
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7896
void CA3FDevSoundPlayClient::RecordError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7897
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7898
	__ASSERT_ALWAYS(0, Panic(_L("CA3FDevSoundPlayClient"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7899
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7901
void CA3FDevSoundPlayClient::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7902
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7903
	__ASSERT_ALWAYS(0, Panic(_L("CA3FDevSoundPlayClient"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7904
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7906
void CA3FDevSoundPlayClient::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7907
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7908
	__ASSERT_ALWAYS(0, Panic(_L("CA3FDevSoundPlayClient"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7909
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7910
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7911
void CA3FDevSoundPlayClient::ToneFinished(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7912
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7913
	__ASSERT_ALWAYS(0, Panic(_L("CA3FDevSoundPlayClient"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7914
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7915
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7916
void CA3FDevSoundPlayClient::LogExtra(const TText8* aFile, TInt aLine, TInt aSeverity,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7917
		TRefByValue<const TDesC16> aFmt,...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7918
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7919
	if(!iSuite)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7920
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7921
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7922
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7923
	VA_LIST list;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7924
	VA_START(list, aFmt);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7925
	TIntegrationTestLog16OverflowClient overflow16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7926
	// decode formatted data for display on console
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7927
	TBuf<KMaxLogLineLength> lineBuf;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7928
	lineBuf.AppendFormatList(aFmt, list, &overflow16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7929
	// send the data to the log system via the suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7930
	if(LogSeverity::IsActive(aSeverity, iSuite->Severity()))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7931
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7932
		iSuite->LogExtra(aFile, aLine, aSeverity, lineBuf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7933
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7934
	VA_END(list); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7935
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7937
void TIntegrationTestLog16OverflowClient::Overflow(TDes16& aDes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7938
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7939
	aDes = _L("*** ERROR : line too long, cannot log ***");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7940
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7941
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7942
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7943
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7944
 * Base class for TruePause DevSound test steps in this suite.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7945
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7946
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7947
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7948
const TUint KRateLookup[] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7949
	{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7950
	EMMFSampleRate8000Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7951
	EMMFSampleRate11025Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7952
	EMMFSampleRate16000Hz,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7953
	EMMFSampleRate22050Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7954
	EMMFSampleRate32000Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7955
	EMMFSampleRate44100Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7956
	EMMFSampleRate48000Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7957
	EMMFSampleRate88200Hz, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7958
	EMMFSampleRate96000Hz,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7959
	EMMFSampleRate12000Hz,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7960
	EMMFSampleRate24000Hz,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7961
	EMMFSampleRate64000Hz 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7962
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7963
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7964
const TUint KChannelsLookup[] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7965
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7966
	EMMFMono,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7967
	EMMFStereo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7968
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7970
RA3FDevSoundTestBase::RA3FDevSoundTestBase(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7971
	:	iFourCCString(KNullDesC), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7972
		iFourCCCode(KMMFFourCCCodeNULL), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7973
		iDevSoundState(EStateInitial), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7974
		iMMFDevSound(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7975
		iTimer(NULL), iBuffer(NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7976
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7977
	iTestStepName = aTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7978
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7979
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7980
void RA3FDevSoundTestBase::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7981
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7982
	INFO_PRINTF1(_L("__________  Creating DevSound object ___________"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7983
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7984
	// Create devsound object	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7985
	TRAPD(err,  iMMFDevSound = CMMFDevSound::NewL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7986
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7987
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7988
		ERR_PRINTF2(_L("Could not create DevSound object. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7989
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7990
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7991
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7992
	INFO_PRINTF1(_L("DevSound State: EStateCreated"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7993
	iDevSoundState = EStateCreated;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7994
	// Connect RFs
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7995
	err = iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7996
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7997
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7998
		ERR_PRINTF2(_L("Could not connect to Filesystem. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  7999
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8000
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8001
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8002
	DoKickoffTestL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8003
	INFO_PRINTF1(_L("DevSound Event: EEventInitialize"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8004
	Fsm(EEventInitialize, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8005
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8006
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8007
void RA3FDevSoundTestBase::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8008
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8009
	if (iMMFDevSound)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8010
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8011
		INFO_PRINTF1(KMsgDeleteDevsound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8012
		delete iMMFDevSound;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8013
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8014
	if(iTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8015
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8016
		delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8017
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8018
	if (iAsyncWriteBTFAO)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8019
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8020
		delete iAsyncWriteBTFAO;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8021
		iAsyncWriteBTFAO = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8022
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8023
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8024
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8025
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8026
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8027
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8028
void RA3FDevSoundTestBase::CallStopTest(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8029
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8030
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8031
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8032
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8033
void RA3FDevSoundTestBase::StartTimer(TTimeIntervalMicroSeconds32 aWaitTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8034
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8035
	TTimeIntervalMicroSeconds32 timeInterval;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8036
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8037
	if(aWaitTime <= TTimeIntervalMicroSeconds32(0))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8038
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8039
		timeInterval = KMicroSecsInOneSec;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8040
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8041
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8042
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8043
		timeInterval = aWaitTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8044
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8045
	TCallBack callback (TimerCallback, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8046
	iTimer->Start(timeInterval, timeInterval, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8047
	INFO_PRINTF1(_L("Timer has been started"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8048
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8049
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8050
TInt RA3FDevSoundTestBase::TimerCallback(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8051
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8052
	static_cast<RA3FDevSoundTestBase*>(aPtr)->DoTimerCallback();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8053
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8054
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8056
void RA3FDevSoundTestBase::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8057
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8058
	__ASSERT_ALWAYS(0, Panic(_L("RA3FDevSoundTestBase"), EInvalidCallbackCall));	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8059
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8061
void RA3FDevSoundTestBase::EncodingFromStringToTFourCC(const TDesC& aFourCCString)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8062
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8063
	iFourCCString.Copy(aFourCCString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8064
	if(aFourCCString.Length() <= KTFourCC)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8065
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8066
		while( iFourCCString.Length() < KTFourCC )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8067
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8068
			iFourCCString.Insert(0, _L(" "));  
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8069
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8070
		iFourCCCode = TFourCC(iFourCCString[3] << 24 | iFourCCString[2] << 16 | iFourCCString[1] << 8 | iFourCCString[0]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8071
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8072
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8073
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8074
		ERR_PRINTF2(KMsgErrorFourccLength,iFourCCString.Length());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8075
		StopTest(KErrUnknown);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8076
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8077
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8078
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8079
void RA3FDevSoundTestBase::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8080
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8081
	INFO_PRINTF1(_L("========== DevSound InitializeComplete() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8082
	INFO_PRINTF3(KMsgErrorDevSoundCallback, &KInitializeCompleteText, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8083
	if(iDevSoundState == EStateInitializing)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8084
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8085
		INFO_PRINTF1(_L("DevSound Event: EEventInitComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8086
		Fsm(EEventInitComplete, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8087
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8088
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8089
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8090
void RA3FDevSoundTestBase::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8091
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8092
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8093
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8094
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8095
		INFO_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d as expected"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8096
		StopTest(aError,EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8097
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8098
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8099
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8100
		ERR_PRINTF2(_L("DevSound called CMMFDevSound::ToneFinished with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8101
		ERR_PRINTF2(_L("Expected error = %d"), KErrUnderflow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8102
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8103
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8104
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8106
void RA3FDevSoundTestBase::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8107
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8108
	INFO_PRINTF1(_L("========== DevSound BufferToBeFilled() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8109
	if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8110
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8111
		ERR_PRINTF1(_L("BufferToBeFilled callback received a NULL CMMFBuffer!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8112
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8113
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8114
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8115
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8116
		iBuffer = aBuffer;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8117
		INFO_PRINTF1(_L("DevSound Event: EEventBTBF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8118
		Fsm(EEventBTBF, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8119
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8120
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8121
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8122
void RA3FDevSoundTestBase::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8123
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8124
	INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8125
	INFO_PRINTF3(KMsgErrorDevSoundCallback, &KPlayErrorText, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8126
	if(iBuffer && iBuffer->LastBuffer() && aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8128
		INFO_PRINTF1(_L("Playback completed normally"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8129
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8130
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8131
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8132
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8133
		INFO_PRINTF1(_L("Playback completed with error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8134
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8135
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8136
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8137
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8138
void RA3FDevSoundTestBase::BufferToBeEmptied(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8139
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8140
	INFO_PRINTF1(_L("DevSound called BufferToBeEmptied."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8141
	if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8142
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8143
		INFO_PRINTF1(_L("BufferToBeEmptied callback received a NULL CMMFBuffer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8144
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8145
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8146
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8147
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8148
	if(aBuffer->LastBuffer())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8149
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8150
		if(iDevSoundState == EStatePause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8151
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8152
			// We need to call CMMFDevSound->Stop() here if last buffer flag set
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8153
			INFO_PRINTF1(_L("Devsound is in Paused state and CMMFBuffer::LastBuffer is set"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8154
			INFO_PRINTF1(_L("iMMFDevSound->Stop()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8155
			iMMFDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8156
			StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8157
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8158
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8159
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8160
			INFO_PRINTF1(_L("***** Unknown behaviour: Last buffer flag set before calling CMMFDevSound->Pause()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8161
			StopTest(KErrUnknown);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8162
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8163
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8164
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8165
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8166
		INFO_PRINTF1(_L("DevSound Event: EEventBTBE"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8167
		Fsm(EEventBTBE, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8168
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8169
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8170
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8171
void RA3FDevSoundTestBase::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8172
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8173
	INFO_PRINTF2(_L("DevSound called RecordError with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8174
	if (aError == KErrUnderflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8175
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8176
		StopTest(aError);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8177
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8178
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8179
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8180
void RA3FDevSoundTestBase::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8181
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8182
	__ASSERT_ALWAYS(0, Panic(_L("RA3FDevSoundTestBase"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8183
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8184
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8185
void RA3FDevSoundTestBase::DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8186
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8187
	__ASSERT_ALWAYS(0, Panic(_L("RA3FDevSoundTestBase"), EInvalidCallbackCall));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8188
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8189
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8190
void RA3FDevSoundTestBase::SendEventToClient(const TMMFEvent& aEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8191
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8192
	INFO_PRINTF3(_L("RA3FDevSoundTestBase::SendEventToClient type=0x%08x errorCode=%d"),aEvent.iEventType, aEvent.iErrorCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8193
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8194
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8195
void RA3FDevSoundTestBase::SampleRateFromTIntToTMMFSampleRate(TInt aSampleRate, TMMFSampleRate &aESampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8196
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8197
	const TSampleRateToTMMFSampleRate SampleRateLookUp [] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8198
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8199
	{8000,	EMMFSampleRate8000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8200
	{11025,	EMMFSampleRate11025Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8201
	{16000,	EMMFSampleRate16000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8202
	{22050,	EMMFSampleRate22050Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8203
	{32000,	EMMFSampleRate32000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8204
	{44100,	EMMFSampleRate44100Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8205
	{48000,	EMMFSampleRate48000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8206
	{88200,	EMMFSampleRate88200Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8207
	{96000,	EMMFSampleRate96000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8208
	{12000,	EMMFSampleRate12000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8209
	{24000,	EMMFSampleRate24000Hz},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8210
	{64000,	EMMFSampleRate64000Hz}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8211
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8212
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8213
	const TInt length = sizeof SampleRateLookUp / sizeof *SampleRateLookUp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8214
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8215
	for(TInt i = 0; i < length; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8216
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8217
		if(aSampleRate == SampleRateLookUp[i].iTIntSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8218
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8219
			aESampleRate = SampleRateLookUp[i].iTMMFSampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8220
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8221
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8222
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8223
		ERR_PRINTF1(_L("User SampleRate doesn't match any of the specified sample rates"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8224
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8225
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8226
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8227
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8228
void RA3FDevSoundTestBase::SampleRateFromTUintToString(TUint aSampleRate, TDes& aStringSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8229
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8230
	const TSampleRateToString SampleRateLookUp [] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8231
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8232
	{0x00000001,	KEMMFSampleRate8000Hz() },
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8233
	{0x00000002,	KEMMFSampleRate11025Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8234
	{0x00000004,  	KEMMFSampleRate16000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8235
	{0x00000008,	KEMMFSampleRate22050Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8236
	{0x00000010,	KEMMFSampleRate32000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8237
	{0x00000020,	KEMMFSampleRate44100Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8238
	{0x00000040,	KEMMFSampleRate48000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8239
	{0x00000080,	KEMMFSampleRate88200Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8240
	{0x00000100,	KEMMFSampleRate96000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8241
	{0x00000200,	KEMMFSampleRate12000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8242
	{0x00000400,	KEMMFSampleRate24000Hz()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8243
	{0x00000800,	KEMMFSampleRate64000Hz()}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8244
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8245
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8246
	const TInt length = sizeof SampleRateLookUp / sizeof *SampleRateLookUp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8247
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8248
	for (TInt i =0; i < length; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8249
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8250
		if(aSampleRate == SampleRateLookUp[i].iTUIntSampleRate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8251
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8252
			aStringSampleRate.Copy(SampleRateLookUp[i].iTPtrSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8253
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8254
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8255
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8256
		ERR_PRINTF1(_L("SampleRate doesn't match any of the specified sample rates"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8257
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8258
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8259
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8260
void RA3FDevSoundTestBase::ChannelsFromTUintToString(TUint aChannels,TDes& aStringChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8261
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8262
	const TChannelsToString ChannelsLookUp [] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8263
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8264
		{0x00000001,	KEMMFMono() },
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8265
		{0x00000002,	KEMMFStereo()},
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8266
		};	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8267
	const TInt length = sizeof ChannelsLookUp / sizeof *ChannelsLookUp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8268
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8269
	for (TInt i =0; i < length; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8270
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8271
		if(aChannels == ChannelsLookUp[i].iTUIntChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8272
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8273
			aStringChannels.Copy(ChannelsLookUp[i].iTPtrChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8274
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8275
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8276
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8277
		ERR_PRINTF1(_L("Channels doesn't match any of the specified channels"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8278
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8279
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8281
void RA3FDevSoundTestBase::PrintSupportedCapabilities(TUint aSampleRate,TUint aChannel)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8282
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8283
	TInt length = sizeof KRateLookup / sizeof *KRateLookup;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8284
	TBuf<KMaxSampleRateStringLength> stringSampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8285
	TBuf<KMaxChannelsStringLength> channels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8286
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8287
	for(TInt i = 0; i < length ; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8288
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8289
		if(aSampleRate & KRateLookup[i])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8290
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8291
			SampleRateFromTUintToString(KRateLookup[i],stringSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8292
			INFO_PRINTF3(_L("Supported Sample rate 0x%08x %S"),KRateLookup[i],&stringSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8293
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8294
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8295
	length = sizeof KChannelsLookup / sizeof *KChannelsLookup;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8296
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8297
	for(TInt i = 0; i < length ; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8298
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8299
		if(aChannel & KChannelsLookup[i])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8300
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8301
			ChannelsFromTUintToString(KChannelsLookup[i],channels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8302
			INFO_PRINTF3(_L("Supported channels 0x%08x %S"),KChannelsLookup[i],&channels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8303
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8304
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8305
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8307
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8308
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8309
 * CAsyncWriteBufferToFile
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8310
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8311
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8312
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8313
CAsyncWriteBufferToFile::CAsyncWriteBufferToFile(RFile& aFile, CMMFDevSound* aDevSound, MStoppableTestStep* aTestStep)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8314
:CActive(EPriorityStandard),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8315
 iFile(aFile),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8316
 iDevSound(aDevSound),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8317
 iTestStep(aTestStep)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8318
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8319
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8320
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8321
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8322
CAsyncWriteBufferToFile::~CAsyncWriteBufferToFile()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8323
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8324
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8325
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8326
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8327
CAsyncWriteBufferToFile* CAsyncWriteBufferToFile::NewL(RFile& aFile, CMMFDevSound* aDevSound, MStoppableTestStep* aTestStep)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8328
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8329
	CAsyncWriteBufferToFile* self = new(ELeave) CAsyncWriteBufferToFile(aFile, aDevSound, aTestStep);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8330
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8331
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8332
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8333
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8334
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8336
void CAsyncWriteBufferToFile::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8337
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8338
	// Nothing to do here
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8339
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8341
void CAsyncWriteBufferToFile::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8342
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8343
	//If error occurs then deal with problem in RunError()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8344
	User::LeaveIfError(iStatus.Int());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8345
	// Continue recording data to a buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8346
	iDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8347
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8348
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8349
void CAsyncWriteBufferToFile::Start(CMMFDataBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8350
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8351
	iFile.Write(aBuffer->Data(), aBuffer->Data().Length(), iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8352
	SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8353
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8354
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8355
void CAsyncWriteBufferToFile::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8356
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8357
	// Can't cancel an async write request
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8358
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8359
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8360
TInt CAsyncWriteBufferToFile::RunError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8361
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8362
	iTestStep->CallStopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8363
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8364
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8365
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8366
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8367
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8368
 * Play base class
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8369
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8370
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8371
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8372
RA3FDevSoundTestPlay::RA3FDevSoundTestPlay(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8373
	: RA3FDevSoundTestBase(aTestName),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8374
	iFilename(KNullDesC),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8375
	iOtherFilename(KNullDesC),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8376
	iSampleRate(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8377
	iSampleRate2(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8378
	iChannels(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8379
	iLSpeakerBalance(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8380
	iRSpeakerBalance(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8381
	iVolume(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8382
	iClientRejectedClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8383
	iClientPreemptedClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8384
	iStopClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8385
	iVolumeBalanceClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8386
	iConfigClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8387
	iCompletePlayBack(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8388
	iInitAfterPauseClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8389
	iErrExpected(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8390
	iDevsoundPlayClient(NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8391
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8392
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8393
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8394
RA3FDevSoundTestPlay::~RA3FDevSoundTestPlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8395
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8396
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8397
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8398
void RA3FDevSoundTestPlay::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8399
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8400
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8401
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8402
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8403
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8404
			__ASSERT_ALWAYS((aError == KErrNone), Panic(iTestStepName.Right(KPanicLength), EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8405
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8406
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8407
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8408
				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8409
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8410
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8411
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8412
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8413
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8414
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8415
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8416
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8417
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8418
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8419
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8420
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8421
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8422
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8423
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8424
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8425
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8426
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8427
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8428
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8429
				if(iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8430
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8431
					TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8432
					TBuf<KMaxChannelsStringLength> stringChannelsSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8433
					SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8434
					iCapabilitiesSet.iRate = iESampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8435
					iCapabilitiesSet.iChannels = iChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8436
					SampleRateFromTUintToString (iCapabilitiesSet.iRate, stringSampleRateSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8437
					ChannelsFromTUintToString (iCapabilitiesSet.iChannels, stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8438
					INFO_PRINTF3(_L("Settings for Sample rate an channel mode : %S %S"), &stringSampleRateSet, &stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8439
					INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8440
					TRAPD(err, iMMFDevSound->SetConfigL(iCapabilitiesSet));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8441
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8442
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8443
						ERR_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8444
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8445
						return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8446
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8447
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8448
				if(iClientRejectedClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8449
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8450
					TMMFPrioritySettings priority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8451
					priority.iPriority = KMaximumPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8452
					INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8453
					iMMFDevSound->SetPrioritySettings(priority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8454
					INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8455
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8456
				if(iClientPreemptedClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8457
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8458
					TMMFPrioritySettings priority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8459
					priority.iPriority = KMinimumPriority;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8460
					INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8461
					iMMFDevSound->SetPrioritySettings(priority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8462
					INFO_PRINTF2(_L("Setting Priority to %d using CMMFDevSound::SetPrioritySettings"), priority.iPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8463
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8464
				if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8465
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8466
					TInt volume = iMMFDevSound->Volume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8467
					INFO_PRINTF2(_L("Setting DevSound to different default volume = %d"), volume/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8468
					iMMFDevSound->SetVolume(volume/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8469
					if (volume == iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8470
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8471
						ERR_PRINTF2(_L("CMMFDevSound::Volume returned default value = %d"), volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8472
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8473
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8474
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8475
					TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8476
					TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8477
					INFO_PRINTF3(_L("Setting DevSound to different default balance using the corresponding values %d and %d"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8478
												getLSpeakerBalance/K25Percent,getRSpeakerBalance/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8479
					TRAPD(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8480
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8481
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8482
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8483
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8484
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8485
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8486
					TRAP(err,iMMFDevSound->SetPlayBalanceL(getLSpeakerBalance/K25Percent, getRSpeakerBalance/K25Percent));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8487
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8488
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8489
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8490
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8491
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8492
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8493
					TInt getLSpeakerBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8494
					TInt getRSpeakerBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8495
					TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance2, getRSpeakerBalance2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8496
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8497
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8498
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8499
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8500
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8501
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8502
					if ((getLSpeakerBalance == getLSpeakerBalance2) && (getLSpeakerBalance == getRSpeakerBalance2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8503
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8504
						ERR_PRINTF1(_L("CMMFDevSound::Balance returned default values"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8505
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8506
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8507
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8508
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8509
				TRAPD(err, iMMFDevSound->PlayInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8510
				if ( err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8511
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8512
					StopTest (err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8513
					return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8514
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8515
				StartTimer (KMicroSecsTwoSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8516
				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8517
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8518
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8519
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8520
			else if ( aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8521
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8522
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error: %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8523
				StopTest (aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8524
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8525
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8526
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8527
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8528
				StopTest (aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8529
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8530
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8531
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8532
		case EStatePlaying:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8533
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8534
			if (aDevSoundEvent == EEventBTBF)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8535
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8536
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8537
				TInt err = iFile.Read (buffer->Data ());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8538
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8539
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8540
					ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8541
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8542
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8543
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8544
				if (buffer->Data().Length ()!= buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8545
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8546
					iBuffer->SetLastBuffer (ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8547
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8548
				INFO_PRINTF1(_L("CMMFDevSound::PlayData"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8549
				iMMFDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8550
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8551
			else if (aDevSoundEvent == EEventTimerComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8552
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8553
				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8554
				iMMFDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8555
				iDevSoundState = EStatePause;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8556
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8557
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8558
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8559
				ERR_PRINTF2(_L("DevSound EEventBTBF or EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8560
				StopTest (aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8561
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8562
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8563
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8564
		case EStatePause:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8565
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8566
			if (aDevSoundEvent == EEventBTBF)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8567
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8568
				INFO_PRINTF1(_L("DevSound EEventBTBF was ignored after pause"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8569
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8570
				TInt err = iFile.Read (buffer->Data ());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8571
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8572
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8573
					ERR_PRINTF2(_L("ERROR : iFile.Read() failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8574
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8575
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8576
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8577
				if (buffer->Data().Length ()!= buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8578
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8579
					iBuffer->SetLastBuffer (ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8580
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8581
				INFO_PRINTF1(_L("CMMFDevSound::PlayData"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8582
				iMMFDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8583
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8584
			else if (aDevSoundEvent == EEventTimerComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8585
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8586
				if(iClientRejectedClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8587
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8588
					INFO_PRINTF1(_L("Starting lower priority devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8589
					iDevsoundPlayClient->SetPriority(KMinimumPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8590
					INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8591
					TInt err = iDevsoundPlayClient->PlayInit(iOtherFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8592
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8593
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8594
						ERR_PRINTF2(_L("Initialization to play audio thru second devsound client failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8595
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8596
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8597
					iClientRejectedClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8598
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8599
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8600
				if(iClientPreemptedClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8601
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8602
					INFO_PRINTF1(_L("Starting higher priority devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8603
					iDevsoundPlayClient->SetPriority(KMaximumPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8604
					INFO_PRINTF1(_L("Initializing to play audio thru second devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8605
					TInt err = iDevsoundPlayClient->PlayInit(iOtherFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8606
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8607
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8608
						ERR_PRINTF2(_L("Initialization to play audio thru second devsound client failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8609
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8610
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8611
					iClientPreemptedClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8612
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8613
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8614
				if(iStopClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8615
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8616
					INFO_PRINTF1(_L("Calling CMMFDevSound::Stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8617
					iMMFDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8618
					iStopClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8619
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8620
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8621
				if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8622
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8623
					INFO_PRINTF2(_L("Setting DevSound volume = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8624
					iMMFDevSound->SetVolume(iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8625
					if (iVolume != iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8626
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8627
						ERR_PRINTF2(_L("CMMFDevSound::Volume returned different set value = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8628
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8629
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8630
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8631
					INFO_PRINTF3(_L("Calling iMMFDevSound->SetPlayBalanceL using the corresponding values %d and %d"),iLSpeakerBalance,iRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8632
					TRAPD(err,iMMFDevSound->SetPlayBalanceL(iLSpeakerBalance, iRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8633
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8634
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8635
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8636
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8637
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8638
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8639
					INFO_PRINTF1(_L("Call GetPlayBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8640
					TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8641
					TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8642
					TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8643
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8644
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8645
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8646
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8647
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8648
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8649
					if ((iLSpeakerBalance == getLSpeakerBalance) && (iRSpeakerBalance == getRSpeakerBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8650
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8651
						INFO_PRINTF1(_L("Balance configuration returned set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8652
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8653
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8654
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8655
						ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LSpeakerBalance = %d RSpeakerBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8656
								getLSpeakerBalance, getRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8657
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8658
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8659
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8660
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8661
				if(iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8662
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8663
					TMMFCapabilities capabilitiesNewSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8664
					TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8665
					TBuf<KMaxChannelsStringLength> stringChannelsSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8666
					SampleRateFromTIntToTMMFSampleRate (iSampleRate2, iESampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8667
					capabilitiesNewSet.iRate = iESampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8668
					capabilitiesNewSet.iChannels = iChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8669
					SampleRateFromTUintToString (capabilitiesNewSet.iRate, stringSampleRateSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8670
					ChannelsFromTUintToString (capabilitiesNewSet.iChannels, stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8671
					INFO_PRINTF3(_L("Settings for Sample rate an channel mode : %S %S"), &stringSampleRateSet, &stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8672
					INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8673
					TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesNewSet));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8674
					INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8675
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8676
				INFO_PRINTF1(_L("Calling CMMFDevSound::IsResumeSupported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8677
				TBool isResumeSupported = iMMFDevSound->IsResumeSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8678
				#ifdef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8679
				if(isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8680
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8681
					TInt err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8682
					                    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8683
					if(iInitAfterPauseClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8684
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8685
                        INFO_PRINTF1(_L("Calling CMMFDevSound::PlayInitL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8686
                        TRAP(err,iMMFDevSound->PlayInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8687
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8688
			        else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8689
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8690
                        INFO_PRINTF1(_L("Calling CMMFDevSound::Resume"));               
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8691
                        err=iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8692
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8693
					if (err == iErrExpected)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8694
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8695
						INFO_PRINTF2(_L("CMMFDevSound::Resume returned %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8696
						if(iCompletePlayBack)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8697
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8698
							iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8699
							iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8700
							if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8701
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8702
								INFO_PRINTF1(_L("Call iMMFDevSound::Volume for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8703
								if (iVolume == iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8704
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8705
									INFO_PRINTF1(_L("CMMFDevSound::Volume returned equal previous set value as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8706
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8707
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8708
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8709
									ERR_PRINTF2(_L("CMMFDevSound::Volume returned different set value = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8710
									StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8711
									break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8712
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8713
						        // Check the low-level a3f volume. Should have been applied by now
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8714
						        MTestSetVolIf *volIf = static_cast<MTestSetVolIf*>(iMMFDevSound->CustomInterface(KUidTestSetVolIf));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8715
						        if (volIf)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8716
						            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8717
						            TInt vol = volIf->Vol(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8718
	                                if (vol == iVolume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8719
	                                    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8720
	                                    INFO_PRINTF1(_L("Low-level volume returned equal previous set value as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8721
	                                    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8722
	                                else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8723
	                                    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8724
	                                    ERR_PRINTF3(_L("Low-level volume returned different set value = %d (expect %d)"), vol, iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8725
	                                    StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8726
	                                    break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8727
	                                    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8728
						            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8729
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8730
								INFO_PRINTF1(_L("Call iMMFDevSound::GetPlayBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8731
								TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8732
								TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8733
								TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8734
								if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8735
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8736
									ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8737
									StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8738
									break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8739
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8740
								if ((iLSpeakerBalance == getLSpeakerBalance) && (iRSpeakerBalance == getRSpeakerBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8741
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8742
									INFO_PRINTF1(_L("Balance configuration returned previous set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8743
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8744
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8745
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8746
									ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LSpeakerBalance = %d RSpeakerBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8747
											getLSpeakerBalance, getRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8748
									StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8749
									break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8750
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8751
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8752
							if (iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8753
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8754
								if(iCapabilitiesSet.iRate == iMMFDevSound->Config().iRate &&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8755
										iCapabilitiesSet.iChannels == iMMFDevSound->Config().iChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8756
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8757
									INFO_PRINTF1(_L("CMMFDevSound::Config does not change as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8758
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8759
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8760
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8761
									ERR_PRINTF1(_L("CMMFDevSound::Config returned different set value"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8762
									StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8763
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8764
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8765
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8766
						else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8767
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8768
							StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8769
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8770
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8771
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8772
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8773
						ERR_PRINTF2(_L("CMMFDevSound::Resume failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8774
						ERR_PRINTF2(_L("Expected error %d"), iErrExpected);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8775
						StopTest(KErrGeneral , EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8776
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8777
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8778
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8779
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8780
					ERR_PRINTF1(_L("Devsound is expected to support resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8781
					ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8782
					StopTest(KErrNotSupported,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8783
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8784
				#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8785
				if(!isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8786
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8787
					INFO_PRINTF2(_L("CMMFDevSound::IsResumeSupported returned %d as expected"), isResumeSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8788
					INFO_PRINTF1(_L("Calling CMMFDevSound::Resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8789
					TInt err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8790
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8791
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8792
						INFO_PRINTF2(_L("CMMFDevSound::Resume returned %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8793
						StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8794
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8795
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8796
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8797
						ERR_PRINTF2(_L("CMMFDevSound::Resume failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8798
						ERR_PRINTF2(_L("Expected error %d"), KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8799
						StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8800
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8801
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8802
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8803
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8804
					ERR_PRINTF1(_L("Non A3FDevsound should not support resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8805
					ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8806
					StopTest(KErrGeneral,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8807
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8808
				#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8809
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8810
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8811
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8812
				ERR_PRINTF2(_L("DevSound EEventBTBF or EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8813
				StopTest (aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8814
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8815
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8816
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8817
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8818
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8819
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8820
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8821
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8822
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8823
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8824
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8825
void RA3FDevSoundTestPlay::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8826
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8827
	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8828
	Fsm (EEventTimerComplete, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8829
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8830
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8831
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8832
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8833
 * Record base class
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8834
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8835
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8836
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8837
RA3FDevSoundTestRecord::RA3FDevSoundTestRecord(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8838
	: RA3FDevSoundTestBase(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8839
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8840
	Reset(); // Note: call Reset() instead of initialisation list, to avoid dup'd code
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8841
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8842
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8843
void RA3FDevSoundTestRecord::Reset()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8844
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8845
    // re-initialise if required
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8846
    iDuration = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8847
    iSampleRate = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8848
    iSampleRate2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8849
    iLRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8850
    iRRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8851
    iChannels = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8852
    iGain = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8853
    isSecondTimeRecording = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8854
    iNoWaitLastBufferClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8855
    iPCMFormatClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8856
    iGainBalanceClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8857
    iConfigClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8858
    iFollowingResume = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8859
    iRecordDataFollowingResume = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8860
    iRecordDataPriorToResume = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8861
    iCheckForNoDataAfterResume = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8862
    iInitAfterPauseClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8863
    iResumeAfterResume = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8864
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8866
RA3FDevSoundTestRecord::~RA3FDevSoundTestRecord()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8867
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8868
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8869
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8870
void RA3FDevSoundTestRecord::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8871
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8872
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8873
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8874
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8875
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8876
			__ASSERT_ALWAYS((aError == KErrNone),Panic(iTestStepName.Right(KPanicLength),EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8877
			if(aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8878
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8879
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL to Record Audio"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8880
				TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStateRecording));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8881
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8882
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8883
					ERR_PRINTF2(_L("Initialization of DevSound failed with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8884
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8885
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8886
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8887
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8888
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8889
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8890
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8891
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8892
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8893
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8894
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8895
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8896
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8897
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8898
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8899
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8900
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8901
				if(iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8902
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8903
					TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8904
					TBuf<KMaxChannelsStringLength> stringChannelsSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8905
					SampleRateFromTIntToTMMFSampleRate (iSampleRate, iESampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8906
					iCapabilitiesSet.iRate = iESampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8907
					iCapabilitiesSet.iChannels = iChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8908
					SampleRateFromTUintToString (iCapabilitiesSet.iRate, stringSampleRateSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8909
					ChannelsFromTUintToString (iCapabilitiesSet.iChannels, stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8910
					INFO_PRINTF3(_L("Settings for Sample rate an channel mode : %S %S"), &stringSampleRateSet, &stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8911
					INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8912
					TRAPD(err, iMMFDevSound->SetConfigL(iCapabilitiesSet));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8913
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8914
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8915
						ERR_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8916
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8917
						return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8918
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8919
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8920
				if(iGainBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8921
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8922
					TInt gain = iMMFDevSound->Gain();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8923
					INFO_PRINTF2(_L("Setting DevSound to different default gain = %d"), gain/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8924
					iMMFDevSound->SetGain(gain/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8925
					if (gain == iMMFDevSound->Gain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8926
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8927
						ERR_PRINTF2(_L("CMMFDevSound::Gain returned default value = %d"), gain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8928
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8929
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8930
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8931
					TInt getLRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8932
					TInt getRRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8933
					INFO_PRINTF3(_L("Setting DevSound to different default balance using the corresponding values %d and %d"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8934
												getLRecordBalance/K25Percent,getRRecordBalance/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8935
					TRAPD(err,iMMFDevSound->GetRecordBalanceL(getLRecordBalance, getRRecordBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8936
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8937
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8938
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8939
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8940
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8941
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8942
					TRAP(err,iMMFDevSound->SetRecordBalanceL(getLRecordBalance/K25Percent, getRRecordBalance/K25Percent));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8943
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8944
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8945
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8946
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8947
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8948
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8949
					TInt getLRecordBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8950
					TInt getRRecordBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8951
					TRAP(err,iMMFDevSound->GetRecordBalanceL(getLRecordBalance2, getRRecordBalance2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8952
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8953
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8954
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8955
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8956
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8957
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8958
					if ((getLRecordBalance2 == getLRecordBalance) && (getRRecordBalance2 == getRRecordBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8959
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8960
						ERR_PRINTF1(_L("CMMFDevSound::Balance returned default values"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8961
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8962
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8963
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8964
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8965
				INFO_PRINTF1(_L("Calling iMMFDevSound->RecordInitL()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8966
				TRAPD(err, iMMFDevSound->RecordInitL()); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8967
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8968
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8969
					ERR_PRINTF2(_L("DevSound RecordInitL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8970
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8971
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8972
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8973
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8974
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8975
					INFO_PRINTF2(_L("Starting timer %d uS"), (iDuration * KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8976
					StartTimer((iDuration * KMicroSecsInOneSec));		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8977
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8978
				INFO_PRINTF1(_L("DevSound State: EStateRecording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8979
				iDevSoundState = EStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8980
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8981
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8982
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8983
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8984
				StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8985
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8986
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8987
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8988
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8989
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8990
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8991
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8992
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8993
		case EStateRecording:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8994
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8995
			if (aDevSoundEvent == EEventBTBE)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8996
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8997
				if(iBuffer->LastBuffer() && iNoWaitLastBufferClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8998
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  8999
					ERR_PRINTF1(_L("CMMFDevSound::Resume called immediately after pause should prevent last buffer notification"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9000
					StopTest(KErrArgument, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9001
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9002
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9003
				if (iFollowingResume && iCheckForNoDataAfterResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9004
				    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9005
				    // we get a BufferToBeEmptied event when we're not expecting - e.g. have Resume()'d without RecordData()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9006
                    ERR_PRINTF1(_L("BufferToBeEmptied() received following Resume() but not expecting it"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9007
				    StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9008
				    break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9009
				    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9010
				INFO_PRINTF1(_L("Writing data to file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9011
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9012
				iAsyncWriteBTFAO->Start(buffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9013
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9014
			else if(aDevSoundEvent == EEventTimerComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9015
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9016
				if (iFollowingResume && iCheckForNoDataAfterResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9017
				    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9018
				    // we've been hanging around to check for no-more data and have not received any
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9019
				    // so normal exit
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9020
				    INFO_PRINTF1(_L("No data buffers received following Resume() - as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9021
				    StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9022
				    break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9023
				    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9024
				iMMFDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9025
				INFO_PRINTF1(_L("DevSound State: EStatePause"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9026
				iDevSoundState = EStatePause;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9027
				if(!isSecondTimeRecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9028
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9029
					if(iNoWaitLastBufferClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9030
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9031
						INFO_PRINTF1(_L("Checking if resume is supported before receiving last buffer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9032
						TBool isResumeSupported = iMMFDevSound->IsResumeSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9033
						if(isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9034
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9035
							INFO_PRINTF1(_L("Calling CMMFDevSound::Resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9036
							iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9037
							TInt err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9038
							if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9039
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9040
								INFO_PRINTF2(_L("CMMFDevSound::Resume returned %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9041
								iDevSoundState = EStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9042
								isSecondTimeRecording = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9043
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9044
							else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9045
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9046
								ERR_PRINTF2(_L("CMMFDevSound::Resume before last buffer flag failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9047
								ERR_PRINTF2(_L("Expected value %d"), KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9048
								StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9049
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9050
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9051
						else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9052
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9053
							ERR_PRINTF1(_L("Devsound is expected to support resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9054
							ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9055
							StopTest(KErrNotSupported,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9056
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9057
						isSecondTimeRecording = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9058
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9059
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9060
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9061
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9062
					INFO_PRINTF1(_L("Recording is Paused, waiting for the last buffer callback..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9063
					iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9064
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9065
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9066
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9067
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9068
				ERR_PRINTF2(_L("DevSound EEventBTBE or EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9069
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9070
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9071
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9072
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9073
		case EStatePause:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9074
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9075
			if (aDevSoundEvent == EEventBTBE)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9076
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9077
				INFO_PRINTF1(_L("Writing data to file"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9078
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9079
				iAsyncWriteBTFAO->Start(buffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9080
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9081
			else if(aDevSoundEvent == EEventTimerComplete && iBuffer && iBuffer->LastBuffer())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9082
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9083
				if(iGainBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9084
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9085
                    if (iGain > iMMFDevSound->MaxGain()) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9086
                           { 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9087
                           iGain = iMMFDevSound->MaxGain(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9088
                           } 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9089
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9090
					INFO_PRINTF2(_L("Setting DevSound gain = %d"), iGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9091
					iMMFDevSound->SetGain(iGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9092
					if (iGain != iMMFDevSound->Gain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9093
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9094
						ERR_PRINTF3(_L("CMMFDevSound::Gain returned different set value = %d, expected value = %d"), iGain, iMMFDevSound->Gain());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9095
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9096
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9097
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9098
					INFO_PRINTF3(_L("Calling iMMFDevSound->SetRecordBalanceL using the corresponding values %d and %d"),iLRecordBalance,iRRecordBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9099
					TRAPD(err,iMMFDevSound->SetRecordBalanceL(iLRecordBalance, iRRecordBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9100
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9101
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9102
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9103
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9104
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9105
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9106
					INFO_PRINTF1(_L("Call GetRecordBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9107
					TInt getLRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9108
					TInt getRRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9109
					TRAP(err,iMMFDevSound->GetRecordBalanceL(getLRecordBalance, getRRecordBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9110
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9111
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9112
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9113
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9114
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9115
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9116
					if ((iLRecordBalance == getLRecordBalance) && (iRRecordBalance == getRRecordBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9117
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9118
						INFO_PRINTF1(_L("Balance configuration returned set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9119
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9120
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9121
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9122
						ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LRecordBalance = %d RRecordBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9123
								getLRecordBalance, getRRecordBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9124
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9125
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9126
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9127
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9128
				if(iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9129
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9130
					TMMFCapabilities capabilitiesNewSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9131
					TBuf<KMaxSampleRateStringLength> stringSampleRateSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9132
					TBuf<KMaxChannelsStringLength> stringChannelsSet;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9133
					SampleRateFromTIntToTMMFSampleRate (iSampleRate2, iESampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9134
					capabilitiesNewSet.iRate = iESampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9135
					capabilitiesNewSet.iChannels = iChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9136
					SampleRateFromTUintToString (capabilitiesNewSet.iRate, stringSampleRateSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9137
					ChannelsFromTUintToString (capabilitiesNewSet.iChannels, stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9138
					INFO_PRINTF3(_L("Settings for Sample rate an channel mode : %S %S"), &stringSampleRateSet, &stringChannelsSet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9139
					INFO_PRINTF1(_L("Calling CMMFDevSound::SetConfigL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9140
					TRAPD(err, iMMFDevSound->SetConfigL(capabilitiesNewSet));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9141
					INFO_PRINTF2(_L("CMMFDevSound::SetConfigL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9142
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9143
				INFO_PRINTF1(_L("Calling CMMFDevSound::IsResumeSupported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9144
				TBool isResumeSupported = iMMFDevSound->IsResumeSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9145
				if(iPCMFormatClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9146
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9147
					if(isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9148
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9149
						if (iRecordDataPriorToResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9150
						    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9151
						    INFO_PRINTF1(_L("Calling CMMFDevSound::RecordData()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9152
						    iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9153
						    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9154
						TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9155
						if(iInitAfterPauseClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9156
						    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9157
						    INFO_PRINTF1(_L("Calling CMMFDevSound::RecordInit()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9158
						    iMMFDevSound->RecordInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9159
						    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9160
						else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9161
						    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9162
						    INFO_PRINTF1(_L("Calling CMMFDevSound::Resume()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9163
						    err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9164
						    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9165
						if(iResumeAfterResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9166
						    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9167
						    INFO_PRINTF1(_L("Calling CMMFDevSound::Resume()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9168
						    err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9169
						    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9170
						if (iTestStepName != _L("MM-MMF-DEVSOUND-U-0088-HP"))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9171
						    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9172
						    INFO_PRINTF1(_L("Calling CMMFDevSound::RecordData()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9173
						    iMMFDevSound->RecordData(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9174
						    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9175
						if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9176
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9177
							INFO_PRINTF2(_L("CMMFDevSound::Resume returned %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9178
							iDevSoundState = EStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9179
							iFollowingResume = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9180
							isSecondTimeRecording = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9181
							if (iRecordDataFollowingResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9182
							    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9183
	                            INFO_PRINTF1(_L("Calling CMMFDevSound::RecordData()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9184
	                            iMMFDevSound->RecordData();							    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9185
							    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9186
							if (iCheckForNoDataAfterResume)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9187
							    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9188
							    INFO_PRINTF1(_L("Wait for a while and check we get no extra buffer requests"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9189
							    iTimer->Cancel(); // just in case cancel current timeout
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9190
							    StartTimer(2000000); // wait for 2s
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9191
							    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9192
							if(iGainBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9193
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9194
								INFO_PRINTF1(_L("Call iMMFDevSound::Gain for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9195
								if (iGain == iMMFDevSound->Gain())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9196
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9197
									INFO_PRINTF1(_L("CMMFDevSound::Gain returned equal previous set value as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9198
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9199
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9200
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9201
									ERR_PRINTF2(_L("CMMFDevSound::Gain returned different set value = %d"), iGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9202
									StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9203
									break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9204
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9205
								INFO_PRINTF1(_L("Call GetRecordBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9206
								TInt getLRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9207
								TInt getRRecordBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9208
								TRAP(err,iMMFDevSound->GetRecordBalanceL(getLRecordBalance, getRRecordBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9209
								if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9210
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9211
									ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9212
									StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9213
									break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9214
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9215
								if ((iLRecordBalance == getLRecordBalance) && (iRRecordBalance == getRRecordBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9216
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9217
									INFO_PRINTF1(_L("Balance configuration returned previous set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9218
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9219
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9220
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9221
									ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LRecordBalance = %d RRecordBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9222
											getLRecordBalance, getRRecordBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9223
									StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9224
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9225
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9226
							if (iConfigClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9227
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9228
								if(iCapabilitiesSet.iRate == iMMFDevSound->Config().iRate &&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9229
										iCapabilitiesSet.iChannels == iMMFDevSound->Config().iChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9230
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9231
									INFO_PRINTF1(_L("CMMFDevSound::Config returned as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9232
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9233
								else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9234
									{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9235
									ERR_PRINTF1(_L("CMMFDevSound::Config returned different set value"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9236
									StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9237
									}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9238
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9239
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9240
						else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9241
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9242
							ERR_PRINTF2(_L("CMMFDevSound::Resume failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9243
							ERR_PRINTF2(_L("Expected error %d"), KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9244
							StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9245
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9246
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9247
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9248
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9249
						ERR_PRINTF1(_L("Devsound::IsResumeSupported did not return as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9250
						ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9251
						StopTest(KErrGeneral,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9252
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9253
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9254
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9255
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9256
					if(!isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9257
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9258
						INFO_PRINTF1(_L("Calling CMMFDevSound::Resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9259
						iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9260
						TInt err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9261
						if (err == KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9262
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9263
							INFO_PRINTF2(_L("CMMFDevSound::Resume returned %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9264
							iDevSoundState = EStateRecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9265
							isSecondTimeRecording = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9266
							StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9267
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9268
						else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9269
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9270
							ERR_PRINTF2(_L("CMMFDevSound::Resume failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9271
							ERR_PRINTF2(_L("Expected error %d"), KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9272
							StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9273
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9274
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9275
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9276
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9277
						ERR_PRINTF1(_L("Devsound::IsResumeSupported did not return as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9278
						ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, EFalse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9279
						StopTest(KErrGeneral,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9280
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9281
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9282
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9283
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9284
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9285
				ERR_PRINTF2(_L("DevSound EEventBTBE, EEventTimerComplete or LastBuffer flag not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9286
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9287
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9288
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9289
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9290
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9291
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9292
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9293
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9294
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9295
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9296
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9298
void RA3FDevSoundTestRecord::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9299
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9300
	INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9301
	Fsm(EEventTimerComplete, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9302
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9303
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9304
void RA3FDevSoundTestRecord::BufferToBeEmptied(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9305
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9306
	INFO_PRINTF1(_L("DevSound called BufferToBeEmptied."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9307
	if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9308
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9309
		INFO_PRINTF1(_L("BufferToBeEmptied callback received a NULL CMMFBuffer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9310
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9311
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9312
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9313
	iBuffer = aBuffer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9314
	if(aBuffer->LastBuffer())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9315
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9316
		if(iDevSoundState == EStatePause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9317
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9318
			if(isSecondTimeRecording)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9319
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9320
				// We need to call CMMFDevSound->Stop() here if last buffer flag set
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9321
				INFO_PRINTF1(_L("Devsound is in Paused state and CMMFBuffer::LastBuffer is set"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9322
				INFO_PRINTF1(_L("iMMFDevSound->Stop()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9323
				iMMFDevSound->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9324
				StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9325
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9326
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9327
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9328
				INFO_PRINTF1(_L("****** BufferToBeEmptied callback received with a CMMFBuffer with last flag buffer set"));								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9329
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9330
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9331
		else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9332
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9333
			INFO_PRINTF1(_L("***** Unknown behaviour: Last buffer flag set before calling CMMFDevSound->Pause()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9334
			StopTest(KErrUnknown);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9335
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9336
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9337
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9338
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9339
		INFO_PRINTF1(_L("DevSound Event: EEventBTBE"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9340
		Fsm(EEventBTBE, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9341
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9342
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9344
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9345
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9346
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9347
 * Tone base class
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9348
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9349
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9350
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9351
RA3FDevSoundTestTone::RA3FDevSoundTestTone(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9352
	: RA3FDevSoundTestBase(aTestName),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9353
	iDuration(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9354
	iDurationEvent(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9355
	iFrequencyTone1(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9356
	iFrequencyTone2(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9357
	iLSpeakerBalance(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9358
	iRSpeakerBalance(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9359
	iVolume(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9360
	iVolumeBalanceClause(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9361
	iPaused(EFalse),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9362
	iDTMFString(KNullDesC),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9363
	iDTMFPauses(0),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9364
	iDTMFTones(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9365
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9366
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9367
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9368
RA3FDevSoundTestTone::~RA3FDevSoundTestTone()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9369
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9370
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9371
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9372
void RA3FDevSoundTestTone::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9373
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9374
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9375
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9376
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9377
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9378
			__ASSERT_ALWAYS((aError == KErrNone), Panic(iTestStepName.Right(KPanicLength), EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9379
			if (aDevSoundEvent == EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9380
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9381
				INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9382
				TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9383
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9384
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9385
					ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"),  err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9386
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9387
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9388
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9389
				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9390
				iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9391
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9392
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9393
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9394
				ERR_PRINTF2(_L("DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9395
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9396
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9397
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9398
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9399
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9400
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9401
			if (aDevSoundEvent == EEventInitComplete && aError == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9402
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9403
				iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9404
				TInt err = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9405
				switch (iPlayToneType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9406
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9407
					case EPlayTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9408
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9409
						INFO_PRINTF3(_L("Calling CMMFDevSound::PlayToneL using %d Hz during %d secs "), iFrequencyTone1, iDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9410
						TRAP(err, iMMFDevSound->PlayToneL(iFrequencyTone1, iDuration*KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9411
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9412
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9413
					case EPlayDualTone:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9414
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9415
						INFO_PRINTF4(_L("Calling CMMFDevSound::PlayDualToneL using %d Hz %d Hz during %d secs "), iFrequencyTone1, iFrequencyTone2, iDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9416
						TRAP(err, iMMFDevSound->PlayDualToneL(iFrequencyTone1, iFrequencyTone2, iDuration*KMicroSecsInOneSec));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9417
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9418
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9419
					case EPlayDTMFString:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9420
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9421
						INFO_PRINTF2(_L("Calling CMMFDevSound::PlayDTMFStringL %S"),  &iDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9422
						TRAP(err, iMMFDevSound->PlayDTMFStringL(iDTMFString));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9423
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9424
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9425
					case EPlayToneSequence:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9426
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9427
						TUint8* tablePointer = const_cast<TUint8*>( &(KFixedSequenceTestSequenceDataX[0] ) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9428
						TPtrC8 KFixedSequenceData(tablePointer, sizeof(KFixedSequenceTestSequenceDataX));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9429
						INFO_PRINTF1(_L("Calling CMMFDevSound::PlayToneSequenceL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9430
						TRAP(err, iMMFDevSound->PlayToneSequenceL(KFixedSequenceData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9431
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9432
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9433
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9434
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9435
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9436
					ERR_PRINTF2(_L("CMMFDevSound::PlayToneL left with error = %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9437
					StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9438
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9439
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9440
				if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9441
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9442
					TInt volume = iMMFDevSound->Volume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9443
					INFO_PRINTF2(_L("Setting DevSound to different default volume = %d"), volume/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9444
					iMMFDevSound->SetVolume(volume/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9445
					if (volume == iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9446
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9447
						ERR_PRINTF2(_L("CMMFDevSound::Volume returned default value = %d"), volume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9448
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9449
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9450
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9451
					TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9452
					TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9453
					INFO_PRINTF3(_L("Setting DevSound to different default balance using the corresponding values %d and %d"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9454
												getLSpeakerBalance/K25Percent,getRSpeakerBalance/K25Percent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9455
					TRAPD(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9456
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9457
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9458
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9459
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9460
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9461
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9462
					TRAP(err,iMMFDevSound->SetPlayBalanceL(getLSpeakerBalance/K25Percent, getRSpeakerBalance/K25Percent));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9463
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9464
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9465
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9466
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9467
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9468
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9469
					TInt getLSpeakerBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9470
					TInt getRSpeakerBalance2 = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9471
					TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance2, getRSpeakerBalance2));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9472
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9473
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9474
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9475
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9476
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9477
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9478
					if ((getLSpeakerBalance == getLSpeakerBalance2) && (getLSpeakerBalance == getRSpeakerBalance2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9479
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9480
						ERR_PRINTF1(_L("CMMFDevSound::Balance returned default values"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9481
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9482
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9483
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9484
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9485
				StartTimer(iDurationEvent*KMicroSecsInOneSec);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9486
				INFO_PRINTF1(_L("DevSound State: EStatePlaying"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9487
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9488
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9489
			else if (aDevSoundEvent == EEventInitComplete && aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9490
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9491
				ERR_PRINTF2(_L("DevSound called CMMFDevSound::InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9492
				StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9493
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9494
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9495
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9496
				ERR_PRINTF2(_L("DevSound EEventInitComplete not received as expected. Received event: %d"),  aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9497
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9498
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9499
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9500
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9501
		case EStatePlaying:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9502
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9503
			if(aDevSoundEvent == EEventTimerComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9504
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9505
				INFO_PRINTF1(_L("Calling CMMFDevSound::Pause"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9506
				iMMFDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9507
				INFO_PRINTF1(_L("DevSound State: EStatePause"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9508
				iDevSoundState = EStatePause;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9509
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9510
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9511
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9512
				ERR_PRINTF2(_L("DevSound EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9513
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9514
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9515
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9516
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9517
		case EStatePause:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9518
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9519
			if (aDevSoundEvent == EEventTimerComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9520
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9521
				if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9522
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9523
					INFO_PRINTF2(_L("Setting DevSound volume = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9524
					iMMFDevSound->SetVolume(iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9525
					if (iVolume != iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9526
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9527
						ERR_PRINTF2(_L("CMMFDevSound::Volume returned different set value = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9528
						StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9529
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9530
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9531
					INFO_PRINTF3(_L("Calling iMMFDevSound->SetPlayBalanceL using the corresponding values %d and %d"),iLSpeakerBalance,iRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9532
					TRAPD(err,iMMFDevSound->SetPlayBalanceL(iLSpeakerBalance, iRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9533
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9534
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9535
						ERR_PRINTF2(_L("Setting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9536
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9537
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9538
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9539
					INFO_PRINTF1(_L("Call GetPlayBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9540
					TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9541
					TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9542
					TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9543
					if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9544
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9545
						ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9546
						StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9547
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9548
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9549
					if ((iLSpeakerBalance == getLSpeakerBalance) && (iRSpeakerBalance == getRSpeakerBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9550
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9551
						INFO_PRINTF1(_L("Balance configuration returned set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9552
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9553
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9554
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9555
						ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LSpeakerBalance = %d RSpeakerBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9556
								getLSpeakerBalance, getRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9557
						StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9558
						break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9559
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9560
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9561
				INFO_PRINTF1(_L("Checking if resume is supported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9562
				TBool isResumeSupported = iMMFDevSound->IsResumeSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9563
				if(isResumeSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9564
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9565
					INFO_PRINTF2(_L("CMMFDevSound::IsResumeSupported returned %d as expected"),isResumeSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9566
					INFO_PRINTF1(_L("Calling CMMFDevSound::Resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9567
					TInt expectedErr = KErrNotSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9568
					if(iPlayToneType == EPlayToneSequence)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9569
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9570
						expectedErr = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9571
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9572
					TInt err = iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9573
					if(err == expectedErr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9574
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9575
						if(iPlayToneType != EPlayToneSequence)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9576
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9577
							StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9578
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9579
						INFO_PRINTF2(_L("CMMFDevSound::Resume returned = %d as expected"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9580
						if(iVolumeBalanceClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9581
							{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9582
							INFO_PRINTF1(_L("Call iMMFDevSound::Volume for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9583
							if (iVolume == iMMFDevSound->Volume())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9584
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9585
								INFO_PRINTF1(_L("CMMFDevSound::Volume returned equal previous set value as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9586
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9587
							else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9588
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9589
								ERR_PRINTF2(_L("CMMFDevSound::Volume returned different set value = %d"), iVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9590
								StopTest (KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9591
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9592
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9593
							INFO_PRINTF1(_L("Call iMMFDevSound::GetPlayBalanceL for verifying."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9594
							TInt getLSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9595
							TInt getRSpeakerBalance = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9596
							TRAP(err,iMMFDevSound->GetPlayBalanceL(getLSpeakerBalance, getRSpeakerBalance));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9597
							if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9598
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9599
								ERR_PRINTF2(_L("Getting balance failed ! Left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9600
								StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9601
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9602
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9603
							if ((iLSpeakerBalance == getLSpeakerBalance) && (iRSpeakerBalance == getRSpeakerBalance))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9604
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9605
								INFO_PRINTF1(_L("Balance configuration returned previous set values as expected"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9606
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9607
							else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9608
								{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9609
								ERR_PRINTF3(_L("Configuration of DevSound object does not match with set balance! LSpeakerBalance = %d RSpeakerBalance = %d"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9610
										getLSpeakerBalance, getRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9611
								StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9612
								break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9613
								}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9614
							}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9615
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9616
					else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9617
						{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9618
						ERR_PRINTF3(_L("CMMFDevSound::Resume returned with error = %d, when the expected error is = %d"), err, expectedErr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9619
						StopTest (KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9620
						}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9621
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9622
				else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9623
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9624
					ERR_PRINTF1(_L("CMMFDevSound did not support resume"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9625
					ERR_PRINTF3(_L("Received value is %d when the expected value is %d"), isResumeSupported, ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9626
					StopTest(KErrGeneral,EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9627
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9628
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9629
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9630
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9631
				ERR_PRINTF2(_L("EEventTimerComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9632
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9633
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9634
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9635
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9636
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9637
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9638
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9639
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9640
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9641
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9642
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9643
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9644
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9645
void RA3FDevSoundTestTone::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9646
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9647
	INFO_PRINTF1(_L("TimerEvent called"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9648
	if (!iPaused)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9649
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9650
		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9651
		Fsm(EEventTimerComplete, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9652
		iPaused = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9653
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9654
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9655
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9656
		iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9657
		INFO_PRINTF1(_L("DevSound Event: EEventTimerComplete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9658
		Fsm(EEventTimerComplete, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9659
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9660
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9662
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9663
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9664
 * MM-MMF-DEVSOUND-U-0081-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9665
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9666
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9667
RA3FDevSoundPauseAndResumePlayingTest::RA3FDevSoundPauseAndResumePlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9668
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9669
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9670
	iErrExpected = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9671
	iCompletePlayBack = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9672
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9673
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9674
RA3FDevSoundPauseAndResumePlayingTest* RA3FDevSoundPauseAndResumePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9675
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9676
	RA3FDevSoundPauseAndResumePlayingTest* self = new (ELeave) RA3FDevSoundPauseAndResumePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9677
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9678
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9679
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9680
void RA3FDevSoundPauseAndResumePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9681
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9682
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9683
	// Get the filename of the audio file to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9684
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9685
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9686
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9687
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9688
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9689
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9690
	// open using RFile for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9691
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9692
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9693
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9694
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9695
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9696
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9697
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9698
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9699
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9700
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9701
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9702
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9703
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9704
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9705
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9706
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9707
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9708
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9709
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9710
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9712
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9713
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9714
 * MM-MMF-DEVSOUND-U-0082-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9715
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9716
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9717
RA3FDevSoundPlayRejectionTestWhilePausing::RA3FDevSoundPlayRejectionTestWhilePausing(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9718
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9719
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9720
	iErrExpected = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9721
	iCompletePlayBack = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9722
	iClientRejectedClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9723
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9724
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9725
RA3FDevSoundPlayRejectionTestWhilePausing* RA3FDevSoundPlayRejectionTestWhilePausing::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9726
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9727
	RA3FDevSoundPlayRejectionTestWhilePausing* self = new (ELeave) RA3FDevSoundPlayRejectionTestWhilePausing(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9728
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9729
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9730
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9731
void RA3FDevSoundPlayRejectionTestWhilePausing::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9732
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9733
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9734
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9735
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9736
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9737
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9738
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9739
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9740
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9741
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9742
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9743
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9744
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9745
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9746
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9747
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9748
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9749
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9750
	TPtrC tempString;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9751
	if (!GetStringFromConfig(iTestStepName, KOtherFilename, tempString))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9752
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9753
		ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9754
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9755
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9756
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9757
	iOtherFilename.Copy (tempString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9758
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9759
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9760
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9761
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9762
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9763
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9764
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9765
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9766
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9767
	iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9768
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9769
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9770
void RA3FDevSoundPlayRejectionTestWhilePausing::ClientInitializeCompleteCallback(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9771
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9772
	INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9773
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9774
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9775
		ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9776
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9777
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9778
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9779
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9780
		INFO_PRINTF2(_L("Second DevSound client called InitializeComplete with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9781
		INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9782
		TInt err = iDevsoundPlayClient->PlayAudio();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9783
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9784
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9785
			ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9786
			StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9787
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9788
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9789
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9790
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9791
void RA3FDevSoundPlayRejectionTestWhilePausing::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9792
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9793
	switch (aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9794
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9795
		case EInvalidClientFSMEvent:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9796
			ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9797
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9798
		case EInvalidClientFSMState:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9799
			ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9800
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9801
		case EReadFileErrorInClient:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9802
			ERR_PRINTF1(_L("Second devsound client could not read to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9803
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9804
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9805
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9806
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9807
	StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9808
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9809
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9810
void RA3FDevSoundPlayRejectionTestWhilePausing::ClientBufferToBeFilledCallback(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9811
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9812
	INFO_PRINTF2(_L("Second DevSound client should not call BufferToBeFilled in rejection. Error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9813
	StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9814
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9816
void RA3FDevSoundPlayRejectionTestWhilePausing::ClientPlayErrorCallback(TInt aError, TBool aLastBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9817
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9818
	INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9819
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9820
	if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied && !aLastBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9821
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9822
		INFO_PRINTF1(_L("========== Rejecting 2nd DevSound Instance=========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9823
		INFO_PRINTF2(_L("Second DevSound client PlayError succeeded with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9824
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9825
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9826
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9827
		ERR_PRINTF2(_L("Second DevSound PlayError failed with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9828
		ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9829
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9830
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9831
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9832
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9833
void RA3FDevSoundPlayRejectionTestWhilePausing::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9834
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9835
	INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9836
	INFO_PRINTF3(KMsgErrorDevSoundCallback, &KPlayErrorText, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9837
	if(iBuffer->LastBuffer() && (aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9838
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9839
		INFO_PRINTF1(_L("Playback completed normally"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9840
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9841
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9842
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9843
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9844
		INFO_PRINTF1(_L("Playback completed with error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9845
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9846
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9847
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9848
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9849
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9850
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9851
 * MM-MMF-DEVSOUND-U-0083-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9852
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9853
RA3FDevSoundPlayPreemptionTestWhilePausing::RA3FDevSoundPlayPreemptionTestWhilePausing(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9854
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9855
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9856
	iErrExpected = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9857
	iClientPreemptedClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9858
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9860
RA3FDevSoundPlayPreemptionTestWhilePausing* RA3FDevSoundPlayPreemptionTestWhilePausing::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9861
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9862
	RA3FDevSoundPlayPreemptionTestWhilePausing* self = new (ELeave) RA3FDevSoundPlayPreemptionTestWhilePausing(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9863
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9864
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9865
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9866
void RA3FDevSoundPlayPreemptionTestWhilePausing::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9867
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9868
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9869
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9870
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9871
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9872
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9873
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9874
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9875
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9876
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9877
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9878
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9879
		ERR_PRINTF2(_L("Could not open input file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9880
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9881
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9882
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9883
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9884
	TPtrC tempString;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9885
	if (!GetStringFromConfig(iTestStepName, KOtherFilename, tempString))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9886
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9887
		ERR_PRINTF2(KMsgErrorGetParameter, &KOtherFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9888
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9889
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9890
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9891
	iOtherFilename.Copy (tempString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9892
	INFO_PRINTF2(_L("File under test  -> %S"), &iOtherFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9893
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9894
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9895
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9896
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9897
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9898
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9899
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9900
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9901
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9902
	iDevsoundPlayClient = CA3FDevSoundPlayClient::NewL(*this, iFourCCCode, iFs, iSuite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9903
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9904
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9905
void RA3FDevSoundPlayPreemptionTestWhilePausing::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9906
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9907
	INFO_PRINTF1(_L("========== DevSound PlayError() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9908
	if (aError == KErrInUse || aError == KErrDied || aError == KErrAccessDenied)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9909
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9910
		INFO_PRINTF1(_L("========== Preempting 1st DevSound Instance=========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9911
		INFO_PRINTF2(_L("First DevSound client PlayError succeeded with error = %d "), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9912
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9913
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9914
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9915
		ERR_PRINTF2(_L("First DevSound client PlayError and failed with error = %d "), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9916
		ERR_PRINTF4(_L("Expected posibilities %d %d %d "), KErrInUse, KErrDied, KErrAccessDenied);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9917
		StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9918
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9919
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9920
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9921
void RA3FDevSoundPlayPreemptionTestWhilePausing::ClientInitializeCompleteCallback(TInt aError)                               
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9922
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9923
	INFO_PRINTF1(_L("========== Second Client DevSound InitializeComplete() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9924
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9925
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9926
		ERR_PRINTF2(_L("Second Devsound InitializeComplete received an error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9927
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9928
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9929
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9930
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9931
		INFO_PRINTF1(_L("Starting to play audio thru second devsound client"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9932
		TInt err = iDevsoundPlayClient->PlayAudio();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9933
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9934
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9935
			ERR_PRINTF2(_L("Starting to play audio thru second devsound client failed with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9936
			StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9937
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9938
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9939
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9940
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9941
void RA3FDevSoundPlayPreemptionTestWhilePausing::ClientBufferToBeFilledCallback(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9942
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9943
	INFO_PRINTF1(_L("========== Second Client DevSound BufferToBeFilled() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9944
	if (aError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9945
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9946
		ERR_PRINTF2(_L("Second DevSound client called BufferToBeFilled and failed with error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9947
		StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9948
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9949
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9950
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9951
void RA3FDevSoundPlayPreemptionTestWhilePausing::ClientPlayHandleOpenFileErrorInValidEventOrStateCallBack(TMmfDevSoundClientErrorCodes aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9952
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9953
	switch (aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9954
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9955
		case EInvalidClientFSMEvent:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9956
			ERR_PRINTF1(_L("Second devsound client received an invalid Event..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9957
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9958
		case EInvalidClientFSMState:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9959
			ERR_PRINTF1(_L("Second devsound client received an invalid State..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9960
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9961
		case EReadFileErrorInClient:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9962
			ERR_PRINTF1(_L("Second devsound client could not read to file..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9963
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9964
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9965
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9966
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9967
	StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9968
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9969
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9970
void RA3FDevSoundPlayPreemptionTestWhilePausing::ClientPlayErrorCallback(TInt /*aError*/, TBool /*aLastBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9971
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9972
	INFO_PRINTF1(_L("========== Second Client DevSound PlayError() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9973
	ERR_PRINTF1(_L("Second DevSound had finished to play before TimerEvent was received"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9974
	StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9975
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9976
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9977
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9978
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9979
 * MM-MMF-DEVSOUND-U-0084-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9980
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9981
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9982
RA3FDevSoundPlayPauseAndStopPlayingTest::RA3FDevSoundPlayPauseAndStopPlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9983
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9984
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9985
	iErrExpected = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9986
	iStopClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9987
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9988
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9989
RA3FDevSoundPlayPauseAndStopPlayingTest* RA3FDevSoundPlayPauseAndStopPlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9990
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9991
	RA3FDevSoundPlayPauseAndStopPlayingTest* self = new (ELeave) RA3FDevSoundPlayPauseAndStopPlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9992
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9993
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9994
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9995
void RA3FDevSoundPlayPauseAndStopPlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9996
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9997
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9998
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  9999
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10000
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10001
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10002
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10003
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10004
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10005
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10006
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10007
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10008
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10009
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10010
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10011
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10012
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10013
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10014
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10015
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10016
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10017
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10018
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10019
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10020
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10021
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10022
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10024
void RA3FDevSoundPlayPauseAndStopPlayingTest::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10025
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10026
	INFO_PRINTF1(_L("========== DevSound BufferToBeFilled() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10027
	if(iStopClause)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10028
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10029
		if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10030
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10031
			ERR_PRINTF1(_L("BufferToBeFilled callback received a NULL CMMFBuffer!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10032
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10033
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10034
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10035
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10036
			iBuffer = aBuffer;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10037
			INFO_PRINTF1(_L("DevSound Event: EEventBTBF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10038
			Fsm(EEventBTBF, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10039
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10040
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10041
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10042
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10043
		ERR_PRINTF1(_L("BufferToBeFilled should never occur after stop"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10044
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10045
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10046
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10047
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10048
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10049
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10050
 * MM-MMF-DEVSOUND-U-0085-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10051
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10053
RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest::RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10054
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10055
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10056
	iCompletePlayBack = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10057
	iVolumeBalanceClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10058
	iErrExpected = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10059
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10061
RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest* RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10062
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10063
	RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest* self = new (ELeave) RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10064
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10065
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10067
void RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10068
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10069
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10070
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10071
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10072
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10073
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10074
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10075
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10076
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10077
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10078
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10079
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10080
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10081
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10082
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10083
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10084
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10085
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10086
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10087
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10088
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10089
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10090
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10091
	if ( !GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10092
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10093
		ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10094
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10095
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10096
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10097
	if ( !GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10098
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10099
		ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10100
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10101
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10102
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10103
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10104
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10105
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10106
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10107
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10108
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10109
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10110
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10111
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10112
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10113
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10114
void RA3FDevSoundPauseSetVolumeBalanceAndResumePlayingTest::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10115
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10116
	INFO_PRINTF1(_L("========== DevSound BufferToBeFilled() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10117
	if (!aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10118
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10119
		ERR_PRINTF1(_L("BufferToBeFilled callback received a NULL CMMFBuffer!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10120
		StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10121
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10122
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10123
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10124
		iBuffer = aBuffer;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10125
		INFO_PRINTF1(_L("DevSound Event: EEventBTBF"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10126
		Fsm(EEventBTBF, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10127
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10128
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10130
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10131
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10132
 * MM-MMF-DEVSOUND-U-0086-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10133
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10135
RA3FDevSoundPauseSetConfigAndResumePlayingTest::RA3FDevSoundPauseSetConfigAndResumePlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10136
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10137
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10138
	iCompletePlayBack = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10139
	iConfigClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10140
	iErrExpected = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10141
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10142
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10143
RA3FDevSoundPauseSetConfigAndResumePlayingTest* RA3FDevSoundPauseSetConfigAndResumePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10144
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10145
	RA3FDevSoundPauseSetConfigAndResumePlayingTest* self = new (ELeave) RA3FDevSoundPauseSetConfigAndResumePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10146
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10147
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10148
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10149
void RA3FDevSoundPauseSetConfigAndResumePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10150
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10151
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10152
	// Get the filename of the audio file to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10153
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10154
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10155
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10156
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10157
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10158
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10159
	// open using RFile for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10160
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10161
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10162
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10163
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10164
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10165
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10166
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10167
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10168
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10169
	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10170
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10171
		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10172
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10173
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10174
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10175
	if (!GetIntFromConfig(iTestStepName, KSampleRate2, iSampleRate2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10176
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10177
		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10178
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10179
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10180
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10181
	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10182
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10183
		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10184
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10185
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10186
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10187
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10188
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10189
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10190
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10191
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10192
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10193
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10194
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10195
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10196
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10197
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10198
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10199
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10200
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10201
 * MM-MMF-DEVSOUND-U-0087-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10202
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10204
RNonA3FDevSoundPauseAndResumePlayingTest::RNonA3FDevSoundPauseAndResumePlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10205
	RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10206
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10207
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10209
RNonA3FDevSoundPauseAndResumePlayingTest* RNonA3FDevSoundPauseAndResumePlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10210
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10211
	RNonA3FDevSoundPauseAndResumePlayingTest* self = new (ELeave) RNonA3FDevSoundPauseAndResumePlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10212
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10213
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10215
void RNonA3FDevSoundPauseAndResumePlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10216
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10217
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10218
	// Get the filename of the audio file to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10219
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10220
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10221
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10222
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10223
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10224
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10225
	// open using RFile for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10226
	iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10227
	TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10228
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10229
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10230
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10231
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10232
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10233
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10234
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10235
	INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10236
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10237
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10238
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10239
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10240
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10241
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10242
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10243
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10244
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10245
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10246
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10247
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10248
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10249
 * MM-MMF-DEVSOUND-U-0088-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10250
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10251
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10252
RA3FDevSoundPauseAndResumeRecordingPCMTest::RA3FDevSoundPauseAndResumeRecordingPCMTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10253
	:	RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10254
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10255
	iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10256
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10257
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10258
RA3FDevSoundPauseAndResumeRecordingPCMTest* RA3FDevSoundPauseAndResumeRecordingPCMTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10259
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10260
	RA3FDevSoundPauseAndResumeRecordingPCMTest* self = new (ELeave) RA3FDevSoundPauseAndResumeRecordingPCMTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10261
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10262
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10263
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10264
void RA3FDevSoundPauseAndResumeRecordingPCMTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10265
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10266
	// re-initialise varibles so can be called multiple times
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10267
	Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10268
	iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10270
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10271
	if ( !GetIntFromConfig(iDefaultParamSet, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10272
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10273
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10274
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10275
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10276
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10277
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10278
	if ( !GetStringFromConfig(iDefaultParamSet, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10279
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10280
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10281
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10282
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10283
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10284
    if ( !GetBoolFromConfig(iDefaultParamSet, KRecordDataFollowingResume, iRecordDataFollowingResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10285
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10286
        ERR_PRINTF2(KMsgErrorGetParameter, &KRecordDataFollowingResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10287
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10288
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10289
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10290
    if ( !GetBoolFromConfig(iDefaultParamSet, KRecordDataPriorToResume, iRecordDataPriorToResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10291
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10292
        ERR_PRINTF2(KMsgErrorGetParameter, &KRecordDataPriorToResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10293
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10294
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10295
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10296
    if ( !GetBoolFromConfig(iDefaultParamSet, KCallResumeAfterResume, iResumeAfterResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10297
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10298
        ERR_PRINTF2(KMsgErrorGetParameter, &KCallResumeAfterResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10299
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10300
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10301
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10302
    if ( !GetBoolFromConfig(iDefaultParamSet, KCheckForNoDataAfterResume, iCheckForNoDataAfterResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10303
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10304
        ERR_PRINTF2(KMsgErrorGetParameter, &KCheckForNoDataAfterResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10305
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10306
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10307
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10308
	// Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10309
	TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10310
	fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10311
	INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10312
	TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10313
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10314
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10315
		ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10316
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10317
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10318
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10319
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10320
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10321
	if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10322
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10323
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10324
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10325
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10326
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10327
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10328
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10329
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10330
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10331
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10332
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10333
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10334
 * MM-MMF-DEVSOUND-U-0089-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10335
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10336
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10337
RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest::RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10338
	:	RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10339
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10340
	iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10341
	iNoWaitLastBufferClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10342
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10344
RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest* RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10345
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10346
	RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest* self = new (ELeave) RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10347
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10348
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10349
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10350
void RA3FDevSoundPauseAndResumeRecordingPCMDoNotWaitForLastBufferTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10351
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10352
	if ( !GetIntFromConfig(iTestStepName, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10353
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10354
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10355
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10356
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10357
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10358
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10359
	if ( !GetStringFromConfig(iTestStepName, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10360
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10361
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10362
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10363
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10364
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10365
	// Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10366
	TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10367
	fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10368
	INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10369
	TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10370
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10371
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10372
		ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10373
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10374
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10375
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10376
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10377
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10378
	if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10379
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10380
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10381
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10382
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10383
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10384
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10385
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10386
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10387
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10388
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10389
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10390
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10391
 * MM-MMF-DEVSOUND-U-0090-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10392
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10393
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10394
RA3FDevSoundPauseAndResumeRecordingNonPCMTest::RA3FDevSoundPauseAndResumeRecordingNonPCMTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10395
	:	RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10396
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10397
	iPCMFormatClause = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10398
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10400
RA3FDevSoundPauseAndResumeRecordingNonPCMTest* RA3FDevSoundPauseAndResumeRecordingNonPCMTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10401
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10402
	RA3FDevSoundPauseAndResumeRecordingNonPCMTest* self = new (ELeave) RA3FDevSoundPauseAndResumeRecordingNonPCMTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10403
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10404
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10405
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10406
void RA3FDevSoundPauseAndResumeRecordingNonPCMTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10407
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10408
	if ( !GetIntFromConfig(iTestStepName, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10409
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10410
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10411
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10412
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10413
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10414
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10415
	if ( !GetStringFromConfig(iTestStepName, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10416
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10417
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10418
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10419
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10420
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10421
	// Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10422
	TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10423
	fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10424
	INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10425
	TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10426
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10427
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10428
		ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10429
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10430
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10431
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10432
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10433
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10434
	if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10435
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10436
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10437
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10438
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10439
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10440
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10441
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10442
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10443
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10444
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10445
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10446
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10447
 * MM-MMF-DEVSOUND-U-0091-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10448
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10449
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10450
RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest::RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10451
	:	RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10452
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10453
	iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10454
	iGainBalanceClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10455
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10456
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10457
RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest* RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10458
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10459
	RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest* self = new (ELeave) RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10460
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10461
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10463
void RA3FDevSoundPauseSetGainBalanceAndResumeRecordingPCMTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10464
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10465
	if ( !GetIntFromConfig(iTestStepName, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10466
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10467
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10468
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10469
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10470
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10471
	if ( !GetIntFromConfig(iTestStepName, KGain, iGain) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10472
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10473
		ERR_PRINTF2(KMsgErrorGetParameter, &KGain);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10474
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10475
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10476
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10477
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10478
	if ( !GetStringFromConfig(iTestStepName, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10479
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10480
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10481
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10482
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10483
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10484
	// Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10485
	TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10486
	fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10487
	INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10488
	TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10489
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10490
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10491
		ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10492
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10493
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10494
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10495
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10496
	if (!GetIntFromConfig(iTestStepName, KLRecordBalance, iLRecordBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10497
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10498
		ERR_PRINTF2(KMsgErrorGetParameter, &KLRecordBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10499
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10500
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10501
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10502
	if (!GetIntFromConfig(iTestStepName, KRRecordBalance, iRRecordBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10503
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10504
		ERR_PRINTF2(KMsgErrorGetParameter, &KRRecordBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10505
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10506
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10507
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10508
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10509
	if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10510
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10511
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10512
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10513
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10514
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10515
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10516
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10517
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10518
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10519
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10520
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10521
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10522
 * MM-MMF-DEVSOUND-U-0092-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10523
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10524
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10525
RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest::RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10526
	:	RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10527
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10528
	iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10529
	iConfigClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10530
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10531
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10532
RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest* RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10533
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10534
	RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest* self = new (ELeave)RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10535
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10536
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10537
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10538
void RA3FDevSoundPauseSetConfigAndResumeRecordingPCMTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10539
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10540
	if ( !GetIntFromConfig(iTestStepName, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10541
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10542
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10543
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10544
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10545
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10546
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10547
	if ( !GetStringFromConfig(iTestStepName, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10548
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10549
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10550
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10551
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10552
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10553
	// Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10554
	TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10555
	fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10556
	INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10557
	TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10558
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10559
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10560
		ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10561
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10562
		StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10563
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10564
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10565
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10566
	if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10567
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10568
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10569
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10570
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10571
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10572
	if (!GetIntFromConfig(iTestStepName, KSampleRate, iSampleRate))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10573
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10574
		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10575
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10576
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10577
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10578
	if (!GetIntFromConfig(iTestStepName, KSampleRate2, iSampleRate2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10579
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10580
		ERR_PRINTF2(KMsgErrorGetParameter, &KSampleRate2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10581
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10582
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10583
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10584
	if (!GetIntFromConfig(iTestStepName, KChannel, iChannels))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10585
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10586
		ERR_PRINTF2(KMsgErrorGetParameter, &KChannel);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10587
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10588
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10589
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10590
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10591
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10592
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10593
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10594
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10595
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10596
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10597
 * MM-MMF-DEVSOUND-U-0093-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10598
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10600
RA3FDevSoundTonePlayTonePauseAndResume::RA3FDevSoundTonePlayTonePauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10601
	:	RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10602
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10603
	iPlayToneType = EPlayTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10604
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10606
RA3FDevSoundTonePlayTonePauseAndResume* RA3FDevSoundTonePlayTonePauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10607
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10608
	RA3FDevSoundTonePlayTonePauseAndResume* self = new(ELeave)RA3FDevSoundTonePlayTonePauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10609
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10610
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10611
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10612
void RA3FDevSoundTonePlayTonePauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10613
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10614
	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10615
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10616
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10617
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10618
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10619
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10620
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10621
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10622
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10623
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10624
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10625
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10626
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10627
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10628
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10629
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10630
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10631
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10632
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10633
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10634
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10635
void RA3FDevSoundTonePlayTonePauseAndResume::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10636
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10637
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10638
	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10639
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10640
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10641
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10642
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10643
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10644
 * MM-MMF-DEVSOUND-U-0094-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10645
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10646
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10647
RA3FDevSoundTonePlayDualTonePauseAndResume::RA3FDevSoundTonePlayDualTonePauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10648
	:RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10649
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10650
	iPlayToneType = EPlayDualTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10651
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10653
RA3FDevSoundTonePlayDualTonePauseAndResume* RA3FDevSoundTonePlayDualTonePauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10654
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10655
	RA3FDevSoundTonePlayDualTonePauseAndResume* self = new(ELeave)RA3FDevSoundTonePlayDualTonePauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10656
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10657
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10659
void RA3FDevSoundTonePlayDualTonePauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10660
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10661
	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10662
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10663
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10664
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10665
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10666
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10667
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10668
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10669
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10670
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10671
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10672
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10673
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10674
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10675
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10676
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10677
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10678
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10679
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone2, iFrequencyTone2))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10680
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10681
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10682
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10683
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10684
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10685
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10686
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10687
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10688
void RA3FDevSoundTonePlayDualTonePauseAndResume::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10689
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10690
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10691
	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10692
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10693
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10694
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10695
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10696
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10697
 * MM-MMF-DEVSOUND-U-0095-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10698
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10699
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10700
RA3FDevSoundTonePlayDTMFStringPauseAndResume::RA3FDevSoundTonePlayDTMFStringPauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10701
	:	RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10702
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10703
	iPlayToneType = EPlayDTMFString;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10704
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10706
RA3FDevSoundTonePlayDTMFStringPauseAndResume* RA3FDevSoundTonePlayDTMFStringPauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10707
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10708
	RA3FDevSoundTonePlayDTMFStringPauseAndResume * self = new(ELeave)RA3FDevSoundTonePlayDTMFStringPauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10709
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10710
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10712
void RA3FDevSoundTonePlayDTMFStringPauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10713
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10714
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10715
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10716
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10717
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10718
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10719
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10720
	TPtrC DTMF;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10721
	if ( !GetStringFromConfig(iTestStepName, KDTMFString, DTMF) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10722
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10723
		ERR_PRINTF2(KMsgErrorGetParameter, &KDTMFString);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10724
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10725
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10726
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10727
	iDTMFString.Copy(DTMF);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10728
	for(TInt i =0 ; i< iDTMFString.Length() ; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10729
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10730
		if (iDTMFString[i] == ',')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10731
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10732
			iDTMFPauses++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10733
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10734
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10735
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10736
			iDTMFTones++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10737
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10738
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10739
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10740
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10741
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10742
void RA3FDevSoundTonePlayDTMFStringPauseAndResume::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10743
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10744
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10745
	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10746
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10747
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10748
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10749
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10750
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10751
 * MM-MMF-DEVSOUND-U-0096-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10752
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10753
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10754
RA3FDevSoundTonePlayToneSequencePauseAndResume::RA3FDevSoundTonePlayToneSequencePauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10755
	:	RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10756
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10757
	iPlayToneType = EPlayToneSequence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10758
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10759
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10760
RA3FDevSoundTonePlayToneSequencePauseAndResume* RA3FDevSoundTonePlayToneSequencePauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10761
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10762
	RA3FDevSoundTonePlayToneSequencePauseAndResume* self = new(ELeave)RA3FDevSoundTonePlayToneSequencePauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10763
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10764
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10765
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10766
void RA3FDevSoundTonePlayToneSequencePauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10767
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10768
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10769
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10770
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10771
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10772
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10773
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10774
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10775
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10776
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10777
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10778
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10779
 * MM-MMF-DEVSOUND-U-0097-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10780
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10781
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10782
RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume::RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10783
	:	RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10784
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10785
	iPlayToneType = EPlayTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10786
	iVolumeBalanceClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10787
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10788
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10789
RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume* RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10790
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10791
	RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume* self = new(ELeave)RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10792
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10793
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10794
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10795
void RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10796
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10797
	if (!GetIntFromConfig(iTestStepName, KDuration, iDuration))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10798
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10799
		ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10800
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10801
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10802
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10803
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10804
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10805
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10806
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10807
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10808
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10809
	if (!GetIntFromConfig(iTestStepName, KFrequencyTone1, iFrequencyTone1))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10810
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10811
		ERR_PRINTF2(KMsgErrorGetParameter, &KFrequencyTone1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10812
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10813
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10814
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10815
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10816
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10817
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10818
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10819
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10820
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10821
	if ( !GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10822
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10823
		ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10824
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10825
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10826
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10827
	if ( !GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10828
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10829
		ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10830
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10831
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10832
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10833
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10834
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10835
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10836
void RA3FDevSoundTonePlayToneSetVolumeBalancePauseAndResume::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10837
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10838
	INFO_PRINTF1(_L("========== DevSound ToneFinished() callback =========="));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10839
	ERR_PRINTF1(_L("DevSound should not have called ToneFinished because it is supposed to have been stopped"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10840
	StopTest(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10841
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10842
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10843
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10844
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10845
 * MM-MMF-DEVSOUND-U-0098-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10846
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10848
RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume::RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10849
	:	RA3FDevSoundTestTone(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10850
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10851
	iPlayToneType = EPlayToneSequence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10852
	iVolumeBalanceClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10853
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10855
RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume* RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10856
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10857
	RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume* self = new(ELeave)RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10858
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10859
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10860
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10861
void RA3FDevSoundTonePlayToneSequenceSetVolumeBalancePauseAndResume::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10862
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10863
	if (!GetIntFromConfig(iTestStepName, KDurationEvent, iDurationEvent))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10864
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10865
		ERR_PRINTF2(KMsgErrorGetParameter, &KDurationEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10866
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10867
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10868
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10869
	if (!GetIntFromConfig(iTestStepName, KVolume, iVolume))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10870
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10871
		ERR_PRINTF2(KMsgErrorGetParameter, &KVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10872
		StopTest(KErrPathNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10873
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10874
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10875
	if ( !GetIntFromConfig(iTestStepName, KLSpeakerBalance, iLSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10876
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10877
		ERR_PRINTF2(KMsgErrorGetParameter, &KLSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10878
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10879
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10880
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10881
	if ( !GetIntFromConfig(iTestStepName, KRSpeakerBalance, iRSpeakerBalance) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10882
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10883
		ERR_PRINTF2(KMsgErrorGetParameter, &KRSpeakerBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10884
		StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10885
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10886
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10887
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10888
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10889
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10890
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10891
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10892
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10893
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10894
 * MM-MMF-DEVSOUND-U-0103-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10895
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10896
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10898
const TUid KUidDevSoundTestCustomInterface1 = {KMmfDevSoundTestCustomInterface1Mux};	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10899
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10900
RTestStepMultipleCustomInterface* RTestStepMultipleCustomInterface::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10901
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10902
	RTestStepMultipleCustomInterface* self = new (ELeave) RTestStepMultipleCustomInterface();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10903
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10904
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10906
RTestStepMultipleCustomInterface::RTestStepMultipleCustomInterface()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10907
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10908
	iTestStepName = _L("MM-MMF-DEVSOUND-U-0103-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10909
	iTimerFlag = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10910
	iAsyncCompleteFlag = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10911
	iPeriodic = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10912
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10913
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10914
TVerdict RTestStepMultipleCustomInterface::DoTestStepPostambleL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10915
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10916
	if(iPeriodic)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10917
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10918
		delete iPeriodic;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10919
		iPeriodic = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10920
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10921
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10922
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10924
TVerdict RTestStepMultipleCustomInterface::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10925
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10926
	INFO_PRINTF1(_L("Test CMMFDevSound Custom Interface Framework"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10927
	INFO_PRINTF1(_L("Test SMP SAFE Condition for Custom Interfaces"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10928
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10929
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10930
	CActiveScheduler::Install(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10931
	CleanupStack::PushL(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10932
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10933
	CMMFDevSound* devSound = CMMFDevSound::NewL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10934
	CleanupStack::PushL(devSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10935
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10936
	TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10937
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10938
	INFO_PRINTF1(_L("DevSound Created"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10939
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10940
	// fetch the custom interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10941
	MMMFDevSoundTestCustomInterface* ptr1 = static_cast <MMMFDevSoundTestCustomInterface*> (devSound->CustomInterface(KUidDevSoundTestCustomInterface));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10942
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10943
	MMMFDevSoundTestCustomInterface* ptr2 = static_cast <MMMFDevSoundTestCustomInterface*> (devSound->CustomInterface(KUidDevSoundTestCustomInterface1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10944
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10945
	if (ptr1 && ptr2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10946
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10947
		// can only do this with a valid interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10948
		result = TestCustomInterfaceL(ptr1, ptr2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10949
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10950
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10951
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10952
		INFO_PRINTF1(_L("error in creating custom interfaces"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10953
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10954
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10955
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10956
	CleanupStack::PopAndDestroy(2, scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10957
	return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10958
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10959
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10960
LOCAL_C TInt TimerCallBack(TAny* aTimerObs)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10961
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10962
	((RTestStepMultipleCustomInterface*)aTimerObs)->iTimerFlag = KTimerCallBackFinished;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10963
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10964
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10965
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10966
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10967
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10968
const TInt KCIAsyncTimeOut = 60000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10969
TVerdict RTestStepMultipleCustomInterface::TestCustomInterfaceL(MMMFDevSoundTestCustomInterface* aInterface1, MMMFDevSoundTestCustomInterface* aInterface2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10970
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10971
	TVerdict result = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10972
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10973
	TBuf8<16> dummyResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10974
	dummyResult.FillZ();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10975
	INFO_PRINTF1(_L("Testing TestAsyncCommand(const TDesC&, TRequestStatus&)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10976
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10977
	TTimeIntervalMicroSeconds32 time(KCIAsyncTimeOut);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10978
	iTimerFlag = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10979
	iPeriodic = CPeriodic::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10980
	iPeriodic->Start(time,time,TCallBack(TimerCallBack,this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10981
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10982
	CMultipleAsyncListener* listener1= new(ELeave)CMultipleAsyncListener(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10983
	CleanupStack::PushL(listener1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10984
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10985
	listener1->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10986
	aInterface1->TestAsyncCommandL(KDevSoundCITestIn, listener1->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10987
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10988
	CMultipleAsyncListener* listener2= new(ELeave)CMultipleAsyncListener(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10989
	CleanupStack::PushL(listener2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10990
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10991
	listener2->InitialiseActiveListener();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10992
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10993
	aInterface2->TestAsyncCommandResultL(KDevSoundCITestIn,dummyResult,listener2->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10994
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10995
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10996
	INFO_PRINTF1(_L("testing complete"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10997
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10998
	iPeriodic->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 10999
	delete iPeriodic;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11000
	iPeriodic = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11001
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11002
	err = listener1->iStatus.Int();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11003
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11004
	if ( iTimerFlag == KTimerCallBackFinished )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11005
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11006
		ERR_PRINTF1(_L("AsyncCustomCommand for CI Failing. Request Not Completed "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11007
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11008
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11009
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11010
	else if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11011
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11012
		ERR_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11013
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11014
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11015
	else if (dummyResult != KDevSoundCITestOut)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11016
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11017
		INFO_PRINTF1(_L("Result string is not correct!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11018
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11019
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11020
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11021
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11022
	CleanupStack::PopAndDestroy(listener2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11023
	CleanupStack::PopAndDestroy(listener1);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11024
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11025
	INFO_PRINTF1(_L("Testing TestAsyncCommandResult(const TDesC&, TDes8&, TRequestStatus&)"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11026
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11027
	iAsyncCompleteFlag = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11028
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11029
	CMultipleAsyncListener* listener3= new(ELeave)CMultipleAsyncListener(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11030
	CleanupStack::PushL(listener3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11031
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11032
	listener3->InitialiseActiveListener();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11033
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11034
	TBuf8<16> dummyResult1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11035
	dummyResult1.FillZ();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11036
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11037
	aInterface1->TestAsyncCommandResultL(KDevSoundCITestIn, dummyResult1, listener3->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11038
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11039
	CMultipleAsyncListener* listener4= new(ELeave)CMultipleAsyncListener(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11040
	CleanupStack::PushL(listener4);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11041
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11042
	listener4->InitialiseActiveListener();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11043
	aInterface2->TestAsyncCommandL(KDevSoundCITestIn, listener4->iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11044
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11045
	iTimerFlag = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11046
	iPeriodic = CPeriodic::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11047
	iPeriodic->Start(time,time,TCallBack(TimerCallBack,this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11048
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11049
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11050
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11051
	iPeriodic->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11052
	delete iPeriodic;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11053
	iPeriodic = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11054
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11055
	if (iTimerFlag == KTimerCallBackFinished )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11056
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11057
		ERR_PRINTF1(_L("AsyncCustomCommandResult for CI Failing. Request Not Completed "));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11058
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11059
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11061
	if (dummyResult1 != KDevSoundCITestOut)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11062
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11063
		INFO_PRINTF1(_L("Result string is not correct!"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11064
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11065
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11066
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11067
	err = listener4->iStatus.Int();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11068
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11069
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11070
		INFO_PRINTF2(_L("Unexpected result %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11071
		result = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11072
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11073
	CleanupStack::PopAndDestroy(listener4);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11074
	CleanupStack::PopAndDestroy(listener3);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11075
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11076
	return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11077
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11078
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11079
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11080
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11081
 * MM-MMF-DEVSOUND-U-0099-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11082
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11083
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11084
RA3FDevSoundPlayPauseFlushResumeTest* RA3FDevSoundPlayPauseFlushResumeTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11085
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11086
	return new (ELeave) RA3FDevSoundPlayPauseFlushResumeTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11087
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11088
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11089
RA3FDevSoundPlayPauseFlushResumeTest::RA3FDevSoundPlayPauseFlushResumeTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11090
: RA3FDevSoundTestBase(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11091
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11092
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11093
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11094
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11095
void RA3FDevSoundPlayPauseFlushResumeTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11096
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11097
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11098
	// Get the filename of the audio file to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11099
	if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11100
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11101
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11102
		StopTest(KErrNotFound, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11103
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11104
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11105
	// open using RFile for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11106
	iFileName.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11107
	TInt err = iFile.Open(iFs, iFileName, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11108
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11109
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11110
		ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFileName, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11111
		iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11112
		StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11113
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11114
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11115
	INFO_PRINTF2(_L("File under test  -> %S"), &iFileName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11116
	TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11117
	if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11118
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11119
		ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11120
		StopTest(KErrNotFound, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11121
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11122
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11123
	EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11124
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11125
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11126
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11128
void RA3FDevSoundPlayPauseFlushResumeTest::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11129
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11130
	iTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11131
	Fsm(EEventTimerComplete, KErrNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11132
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11133
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11135
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11136
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11137
 * Test outline:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11138
 * 1) Setup DevSound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11139
 * 2) Start playing the file and the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11140
 * 3) When the timer expires pause playback, flush the playback buffers and restart the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11141
 *    During this time the BufferToBeFilled() callback should not be called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11142
 * 4) When the timer expires resume the playback and check the EOF is reached.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11143
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11144
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11145
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11146
void RA3FDevSoundPlayPauseFlushResumeTest::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11147
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11148
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11149
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11150
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11151
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11152
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11153
			if ((aDevSoundEvent != EEventInitialize) || (aError != KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11154
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11155
				ERR_PRINTF3(_L("ERROR: Illegal state in EStateCreated, event: %d, error: %d"), aDevSoundEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11156
				StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11157
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11158
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11159
			//Stage 1 Setting up devsound
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11160
			INFO_PRINTF1(_L("Stage 1: Setting up DevSound")); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11161
			TRAPD(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11162
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11163
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11164
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11165
				ERR_PRINTF2(_L("ERROR: DevSound failed to initialize with error: %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11166
				StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11167
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11168
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11169
			iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11170
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11171
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11172
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11173
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11174
			if ((aDevSoundEvent != EEventInitComplete) || (aError != KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11175
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11176
				ERR_PRINTF3(_L("ERROR: DevSound failed to initialize, event: %d, error: %d"), aDevSoundEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11177
				StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11178
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11179
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11180
			//Stage 2 Starting playback and the timer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11181
			INFO_PRINTF1(_L("Stage 2: Starting playback and first timer"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11182
			iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11183
			iMMFDevSound->SetVolume(iMMFDevSound->MaxVolume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11184
			iMMFDevSound->PlayInitL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11185
			StartTimer(KMicroSecsInOneSec * 3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11186
			break;			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11187
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11188
		case EStatePlaying:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11189
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11190
			if ((aDevSoundEvent == EEventBTBF) && (aError == KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11191
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11192
				CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11193
				TInt err = iFile.Read (buffer->Data());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11194
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11195
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11196
					ERR_PRINTF2(_L("ERROR: iFile.Read() failed with %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11197
					StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11198
					break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11199
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11200
				if (buffer->Data().Length ()!= buffer->RequestSize())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11201
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11202
					iBuffer->SetLastBuffer (ETrue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11203
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11204
				INFO_PRINTF1(_L("CMMFDevSound::PlayData")); //XXX tidy up
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11205
				iMMFDevSound->PlayData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11206
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11207
			else if ((aDevSoundEvent == EEventTimerComplete) && (aError == KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11208
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11209
				//Stage 3 Pausing and flushing buffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11210
				INFO_PRINTF1(_L("Stage 3: Pausing and flushing, during the paused stage there should be no calls to BufferToBeFilled()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11211
				iMMFDevSound->Pause();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11212
				iDevSoundState = EStatePause;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11213
				TRAPD(err, iMMFDevSound->EmptyBuffers());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11214
				if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11215
					{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11216
					ERR_PRINTF2(_L("ERROR: Failure in CMMFDevSound::EmptyBuffers(), error: %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11217
					StopTest(err, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11218
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11219
				StartTimer(KMicroSecsInOneSec * 3);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11220
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11221
			else	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11222
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11223
				ERR_PRINTF3(_L("ERROR: Unexpected event during playback, event: %d, error: %d"), aDevSoundEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11224
				StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11225
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11226
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11227
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11228
		case EStatePause:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11229
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11230
			if (aDevSoundEvent == EEventBTBF)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11231
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11232
				ERR_PRINTF1(_L("ERROR: BufferToBeFilled() called while supposed to be in paused state."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11233
				StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11234
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11235
			else if ((aDevSoundEvent == EEventTimerComplete) && (aError == KErrNone))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11236
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11237
				//Stage 4 DevSound halted correctly, resuming playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11238
				INFO_PRINTF1(_L("Stage 4: No calls to BufferToBeFilled during paused stage, resuming playback to ensure it completes properly"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11239
				iDevSoundState = EStatePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11240
				iMMFDevSound->Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11241
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11242
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11243
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11244
				ERR_PRINTF3(_L("ERROR: Unexpected event while paused, event: %d, error: %d"), aDevSoundEvent, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11245
				StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11246
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11247
			break;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11248
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11249
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11250
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11251
			ERR_PRINTF2(_L("ERROR: Incorrect test state in FSM, state: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11252
			StopTest(KErrGeneral, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11253
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11254
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11255
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11257
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11258
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11259
 * MM-MMF-DEVSOUND-U-0104-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11260
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11261
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11262
RTestStepRecordOverflow* RTestStepRecordOverflow::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11263
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11264
	RTestStepRecordOverflow* self = new (ELeave) RTestStepRecordOverflow(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11265
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11266
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11267
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11268
RTestStepRecordOverflow::RTestStepRecordOverflow(const TDesC& aTestName) : RDevSoundTestBase(aTestName), iBuffersReceived(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11269
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11270
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11271
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11272
RTestStepRecordOverflow::~RTestStepRecordOverflow()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11273
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11274
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11275
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11276
	delete iAsyncWriteBTFAO;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11277
	if (iSimulateOverflowTimer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11278
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11279
		iSimulateOverflowTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11280
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11281
	delete iSimulateOverflowTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11282
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11283
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11284
void RTestStepRecordOverflow::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11285
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11286
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11287
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11288
	TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11289
	if ( !GetStringFromConfig(iTestStepName, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11290
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11291
		ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11292
		StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11293
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11294
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11295
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11296
	INFO_PRINTF2(_L("Opening file for recording %S"), &filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11297
	User::LeaveIfError(iFile.Replace(iFs, filename, EFileWrite));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11298
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11299
	iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11300
	}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11301
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11302
static const TInt KBuffersBeforeSimulatingOverflow = 3;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11303
static const TInt KBuffersToFinishTest = 30;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11304
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11305
/*static*/ TInt RTestStepRecordOverflow::TimerCallBack(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11306
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11307
	RTestStepRecordOverflow* self = static_cast<RTestStepRecordOverflow*>(aPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11308
	self->HandleCallbackTimeout();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11309
	return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11310
	}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11311
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11312
void RTestStepRecordOverflow::BufferToBeEmptied(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11313
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11314
	++iBuffersReceived;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11315
	if (iMMFDevSound->SamplesRecorded() < iLastSamplesRecorded)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11316
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11317
		ERR_PRINTF3(_L("The number of samples received has decreased in between callbacks - previous count was %d, latest count is %d"), iLastSamplesRecorded, iMMFDevSound->SamplesRecorded());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11318
		StopTest(KErrNone, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11319
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11320
	iLastSamplesRecorded = iMMFDevSound->SamplesRecorded();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11321
	INFO_PRINTF3(_L("Received buffer %d, samples recorded is %d"), iBuffersReceived, iMMFDevSound->SamplesRecorded());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11322
	if (iBuffersReceived == KBuffersBeforeSimulatingOverflow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11323
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11324
		// Start a timer to simulate overflow		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11325
		iSimulateOverflowTimer = CPeriodic::NewL(CActive::EPriorityLow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11326
		TCallBack callBack(TimerCallBack, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11327
		const TTimeIntervalMicroSeconds32 KTimeToSimulateOverflow = 2 * 1000 * 1000; // 2 sec
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11328
		iSimulateOverflowTimer->Start(KTimeToSimulateOverflow, KTimeToSimulateOverflow, callBack);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11329
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11330
	else if (iBuffersReceived == KBuffersToFinishTest)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11331
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11332
		StopTest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11333
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11334
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11335
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11336
		iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11337
		CMMFDataBuffer* buffer = static_cast <CMMFDataBuffer*> (aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11338
		iAsyncWriteBTFAO->Start(buffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11339
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11340
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11341
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11342
void RTestStepRecordOverflow::HandleCallbackTimeout()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11343
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11344
	// Resume the recording flow after timeout
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11345
	iSimulateOverflowTimer->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11346
	iMMFDevSound->RecordData();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11347
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11348
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11349
void RTestStepRecordOverflow::Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11350
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11351
	switch (iDevSoundState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11352
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11353
		case EStateCreated:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11354
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11355
			if (aDevSoundEvent != EEventInitialize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11356
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11357
				ERR_PRINTF2(_L("RTestStepRecordOverflow-DevSound EEventInitialize not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11358
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11359
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11360
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11361
			__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11362
			INFO_PRINTF1(_L("RTestStepRecordOverflow-Calling CMMFDevSound::InitializeL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11363
			TRAPD(err, iMMFDevSound->InitializeL(*this, EMMFStateRecording));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11364
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11365
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11366
				ERR_PRINTF2(_L("RTestStepRecordOverflow-CMMFDevSound::InitializeL left with error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11367
				StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11368
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11369
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11370
			INFO_PRINTF1(_L("RTestStepRecordOverflow-DevSound State: EStateInitializing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11371
			iDevSoundState = EStateInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11372
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11373
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11374
		case EStateInitializing:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11375
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11376
			if (aDevSoundEvent != EEventInitComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11377
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11378
				ERR_PRINTF2(_L("RTestStepRecordOverflow-DevSound EEventInitComplete not received as expected. Received event: %d"), aDevSoundEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11379
				StopTest(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11380
				break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11381
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11382
			__ASSERT_ALWAYS((aError == KErrNone), Panic(EFsmIncorrectErrorPassed));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11383
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11384
			TRAPD(err, iMMFDevSound->RecordInitL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11385
			INFO_PRINTF1(_L("RTestStepRecordOverflow-DevSound started recording"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11387
			if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11388
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11389
				ERR_PRINTF2(_L("CMMFDevSound::RecordInitL left with error : %d!"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11390
				StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11391
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11392
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11393
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11394
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11395
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11396
			ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11397
			StopTest(KErrGeneral);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11398
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11399
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11400
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11402
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11403
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11404
 * MM-MMF-DEVSOUND-U-0105-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11405
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11406
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11407
RA3FDevSoundPauseAndInitRecordingPCMTest::RA3FDevSoundPauseAndInitRecordingPCMTest(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11408
    :   RA3FDevSoundTestRecord(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11409
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11410
    iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11411
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11412
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11413
RA3FDevSoundPauseAndInitRecordingPCMTest* RA3FDevSoundPauseAndInitRecordingPCMTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11414
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11415
    RA3FDevSoundPauseAndInitRecordingPCMTest* self = new (ELeave) RA3FDevSoundPauseAndInitRecordingPCMTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11416
    return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11417
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11418
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11419
void RA3FDevSoundPauseAndInitRecordingPCMTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11420
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11421
    // re-initialise varibles so can be called multiple times
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11422
    Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11423
    iPCMFormatClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11424
    iInitAfterPauseClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11425
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11426
    if ( !GetIntFromConfig(iDefaultParamSet, KDuration, iDuration) ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11427
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11428
        ERR_PRINTF2(KMsgErrorGetParameter, &KDuration);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11429
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11430
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11431
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11432
    TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11433
    if ( !GetStringFromConfig(iDefaultParamSet, KFilename, filename) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11434
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11435
        ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11436
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11437
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11438
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11439
    if ( !GetBoolFromConfig(iDefaultParamSet, KRecordDataFollowingResume, iRecordDataFollowingResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11440
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11441
        ERR_PRINTF2(KMsgErrorGetParameter, &KRecordDataFollowingResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11442
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11443
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11444
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11445
    if ( !GetBoolFromConfig(iDefaultParamSet, KRecordDataPriorToResume, iRecordDataPriorToResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11446
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11447
        ERR_PRINTF2(KMsgErrorGetParameter, &KRecordDataPriorToResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11448
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11449
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11450
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11451
    if ( !GetBoolFromConfig(iDefaultParamSet, KCallResumeAfterResume, iResumeAfterResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11452
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11453
        ERR_PRINTF2(KMsgErrorGetParameter, &KCallResumeAfterResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11454
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11455
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11456
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11457
    if ( !GetBoolFromConfig(iDefaultParamSet, KCheckForNoDataAfterResume, iCheckForNoDataAfterResume) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11458
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11459
        ERR_PRINTF2(KMsgErrorGetParameter, &KCheckForNoDataAfterResume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11460
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11461
        return;     
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11462
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11463
    // Open file for recording using RFile 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11464
    TFileName fileNameType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11465
    fileNameType.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11466
    INFO_PRINTF2(_L("Opening file for recording %S"), &fileNameType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11467
    TInt err = iFile.Replace(iFs, fileNameType, EFileWrite);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11468
    if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11469
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11470
        ERR_PRINTF2(_L("Could not create output file. Error = %d"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11471
        iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11472
        StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11473
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11474
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11475
    TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11476
    if ( !GetStringFromConfig(iTestStepName, KFourccCode, fourccCode) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11477
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11478
        ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11479
        StopTest(KErrNotFound, ETestSuiteError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11480
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11481
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11482
    EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11483
    iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11484
    iAsyncWriteBTFAO = CAsyncWriteBufferToFile::NewL(iFile, iMMFDevSound, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11485
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11486
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11487
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11488
 *========================================================================================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11489
 * MM-MMF-DEVSOUND-U-0199-HP
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11490
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11491
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11492
RA3FDevSoundPauseAndResumeAndInitPlayingTest::RA3FDevSoundPauseAndResumeAndInitPlayingTest(const TDesC& aTestName) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11493
    RA3FDevSoundTestPlay(aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11494
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11495
    iErrExpected = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11496
    iCompletePlayBack = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11497
    iInitAfterPauseClause = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11498
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11500
RA3FDevSoundPauseAndResumeAndInitPlayingTest* RA3FDevSoundPauseAndResumeAndInitPlayingTest::NewL(const TDesC& aTestName)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11501
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11502
    RA3FDevSoundPauseAndResumeAndInitPlayingTest* self = new (ELeave) RA3FDevSoundPauseAndResumeAndInitPlayingTest(aTestName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11503
    return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11504
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11505
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11506
void RA3FDevSoundPauseAndResumeAndInitPlayingTest::DoKickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11507
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11508
    TPtrC filename;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11509
    // Get the filename of the audio file to play
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11510
    if (!GetStringFromConfig(iTestStepName, KFilename, filename))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11511
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11512
        ERR_PRINTF2(KMsgErrorGetParameter, &KFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11513
        StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11514
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11515
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11516
    // open using RFile for playback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11517
    iFilename.Copy(filename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11518
    TInt err = iFile.Open(iFs, iFilename, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11519
    if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11520
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11521
        ERR_PRINTF3(_L("Could not open input file %S. Error = %d"), &iFilename, err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11522
        iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11523
        StopTest(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11524
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11525
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11526
    INFO_PRINTF2(_L("File under test  -> %S"), &iFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11527
    TPtrC fourccCode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11528
    if (!GetStringFromConfig(iTestStepName, KFourccCode, fourccCode))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11529
        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11530
        ERR_PRINTF2(KMsgErrorGetParameter, &KFourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11531
        StopTest(KErrNotFound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11532
        return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11533
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11534
    EncodingFromStringToTFourCC(fourccCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11535
    iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11536
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
 11537
6
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11538
// MM-MMF-DEVSOUND-U-0300-HP
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11539
// RA3FDevSoundSvrStartToolTest
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11540
// Try to connect to the MAudioSvrService TestServer - will only work if the test MAudioSvrService plugin has itself worked
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11541
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11542
RA3FDevSoundSvrStartToolTest* RA3FDevSoundSvrStartToolTest::NewL(const TDesC& aTestName)
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11543
    {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11544
    RA3FDevSoundSvrStartToolTest* result = new (ELeave) RA3FDevSoundSvrStartToolTest(aTestName);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11545
    return result;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11546
    }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11547
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11548
RA3FDevSoundSvrStartToolTest::RA3FDevSoundSvrStartToolTest(const TDesC& aTestName)
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11549
    {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11550
    iTestStepName = aTestName;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11551
    }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11552
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11553
void RA3FDevSoundSvrStartToolTest::KickoffTestL()
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11554
    {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11555
    // we try and connect to the test server. This should exit with a special fail code
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11556
    // which shows that the message has got there ok. If the first version does not
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11557
    // work we try a second time - to cover the scenario where this is the first time
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11558
    // and perhaps the server takes a little while to start
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11559
    CMMFDevSound* devsound = CMMFDevSound::NewL(); // need a devsound to ensure we have audiosvr
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11560
    CleanupStack::PushL(devsound);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11561
    RSrvStartTestSession client;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11562
    CleanupClosePushL(client);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11563
    TBool worked = EFalse;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11564
    TInt err;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11565
    for (TInt index=0; index<2 && !worked; index++)
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11566
        {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11567
        INFO_PRINTF3(_L("Attempt to connect to server '%S'(%d)"), &KStartToolTestSvrName, index);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11568
        err = client.CreateSession();
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11569
        INFO_PRINTF2(_L("Error from server is %d"), err);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11570
        if (err==KStartToolTestCaseErrorCode)
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11571
            {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11572
            INFO_PRINTF1(_L("Error is that expected"));
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11573
            worked = ETrue;
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11574
            }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11575
        User::After(5000000); // wait 5s to give server a chance to come up fully, in case
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11576
        }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11577
    if (!worked)
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11578
        {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11579
        INFO_PRINTF3(_L("Error received is wrong - %d not %d"), err, KStartToolTestCaseErrorCode);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11580
        StopTest(0, EFail);
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11581
        }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11582
    CleanupStack::PopAndDestroy(2, devsound); // client and devsound
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11583
    StopTest();
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11584
    }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11585
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11586
void RA3FDevSoundSvrStartToolTest::CloseTest()
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11587
    {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11588
    // nothing to do
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11589
    }
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11590
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11591
TInt RSrvStartTestSession::CreateSession()
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11592
    {
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11593
    return RSessionBase::CreateSession(KStartToolTestSvrName, TVersion(0,0,0));
fe9d1bf55678 2010wk46_02
hgs
parents: 0
diff changeset
 11594
    }