mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepTonePrepareToPlayDualTonePlay.cpp
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2009 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
// This file contains an example Test step implementation 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
// This demonstrates the various functions provided
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
// by the CTestStep base class which are available within
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
// a test step 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
// EPOC includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include <e32base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <e32test.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include <e32keys.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include <c32comm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <f32file.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <etel.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#include <etelmm.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <mdaaudiotoneplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
// Specific includes for this test suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
#include "TestStepUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#include "TestSuiteUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
// Specific includes for these test steps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
#include "TestStepTone.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
#include "mmfclienttoneplayer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
 * Static constructor for CTestStepTonePrepareToPlayDualTonePlay.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
 * @return	"CTestStepTonePrepareToPlayDualTonePlay*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
 *			The constructed CTestStepTonePrepareToPlayDualTonePlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
CTestStepTonePrepareToPlayDualTonePlay* CTestStepTonePrepareToPlayDualTonePlay::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	CTestStepTonePrepareToPlayDualTonePlay* self = new(ELeave) CTestStepTonePrepareToPlayDualTonePlay;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
CTestStepTonePrepareToPlayDualTonePlay::CTestStepTonePrepareToPlayDualTonePlay() : iError(KErrNone), iHasPlayed(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
	iTestStepName = _L("MM-MMF-ACLNT-U-0467-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
	// need a bigger heap size on EKA2 HW
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
#if !defined __WINS__
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	iHeapSize = KHeapSizeToneTestEKA2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
#endif // EKA2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
CTestStepTonePrepareToPlayDualTonePlay::~CTestStepTonePrepareToPlayDualTonePlay()
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
void CTestStepTonePrepareToPlayDualTonePlay::MatoPrepareComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
void CTestStepTonePrepareToPlayDualTonePlay::MatoPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
 * Creates a tone utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
enum TVerdict CTestStepTonePrepareToPlayDualTonePlay::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
    TInt err       = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	INFO_PRINTF1(_L("this is a test of CMdaAudioToneUtility::PrepareToPlayDualTone()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	// create the Tone utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	TRAP( err, (iTone = CMMFMdaAudioToneUtility::NewL(*this)) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	if ( err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
		 iTone->State() != EMdaAudioToneUtilityNotReady	)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
		verdict = EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
 * destroys the tone utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
enum TVerdict CTestStepTonePrepareToPlayDualTonePlay::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	delete iTone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	iTone = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
class TDualTone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	TInt iFreq1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	TInt iFreq2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
const TDualTone KDtmfToneTable[] = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	{941, 1336},//0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
	{697, 1209},//1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
	{697, 1336},//2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
	{697, 1477},//3
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
	{770, 1209},//4
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	{770, 1336},//5
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	{770, 1477},//6
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	{852, 1209},//7
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
	{852, 1336},//8
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
	{852, 1477},//9
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	{697, 1633},//A
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	{770, 1633},//B
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
	{852, 1633},//C
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	{941, 1633},//D
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
	{941, 1209},//E or *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	{941, 1477},//F or #
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
	{0,   0}	// pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
_LIT(KTwinkleDTMFString,"1 1 9 9 # # 9-6 6 3 3 2 2 1-9 9 6 6 3 3 2-9 9 6 6 3 3 2-1 1 9 9 # # 9-6 6 3 3 2 2 1-");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
const TInt KQuarterNote = 256000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
const TInt KHalfNote = 512000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
const TInt KEighthNote =  128000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
const TInt KSixteenthNote = 64000;
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
 * convert a DTMF string into an array of TToneInfo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
TInt CTestStepTonePrepareToPlayDualTonePlay::GetTune(const TDesC& aDtmfString, RArray<TToneInfo>& aTones)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	TInt count = aDtmfString.Length();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	for (TInt index=0; index<count; )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
		TInt tableIndex;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
		TInt c = (aDtmfString)[index++];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
		if (c >= '0' && c <= '9')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
			tableIndex = c - '0';
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
		else if (c >= 'A' && c <= 'F')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
			tableIndex = c - 'A' + 10;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
		else if (c == '*')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
			tableIndex = 14;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
		else if (c == '#')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
			tableIndex = 15;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
		else if (c == ',')		// pause ?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
			tableIndex = 16;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
			return KErrArgument;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
		TToneInfo tone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
		tone.iFreq1 = KDtmfToneTable[tableIndex].iFreq1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
		tone.iFreq2 = KDtmfToneTable[tableIndex].iFreq2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
		c = (aDtmfString)[index++];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
		if (c == ' ')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
			tone.iDuration = KQuarterNote; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
		else if (c == '-')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
			tone.iDuration = KHalfNote; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		else if (c == '+')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
			tone.iDuration = KEighthNote; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		else if (c == '%')
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
			tone.iDuration = KSixteenthNote; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
			return KErrArgument;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
		aTones.Append(tone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
TVerdict CTestStepTonePrepareToPlayDualTonePlay::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
	RArray<TToneInfo> tones;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
	// This test plays "twinkle twinkle little star" 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	// by converting a DTMF sequence into an array of dualtones 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	// (i.e. frequency pairs) and then calling PrepareToPlayDualTone() 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	// for each dualtone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	TInt error = GetTune(*(&KTwinkleDTMFString), tones);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	if (error != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	for (TInt index=0; index<tones.Count(); index++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
		TToneInfo tone = tones[index];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
		INFO_PRINTF4(_L("playing dual tone of %d Hz & %d Hz for %f seconds"), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
			tone.iFreq1, tone.iFreq2,  ((TReal32)tone.iDuration)/1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
		// if the frequency is zero, then pause i.e don't play a note
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
		if (tone.iFreq1 != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
			iTone->PrepareToPlayDualTone(tone.iFreq1, tone.iFreq2, TTimeIntervalMicroSeconds(tone.iDuration));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
			if (iError != KErrNone || iTone->State() != EMdaAudioToneUtilityPrepared	)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
				return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
			iTone->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
			if (iTone->State() == EMdaAudioToneUtilityPlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
				iHasPlayed = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
			CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
			if (iError != KErrNone || !iHasPlayed)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
				return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
			iTone->CancelPrepare();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
		User::After(125000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	tones.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283