mmlibs/mmfw/tsrc/mmfunittest/aclnt/TSU_MMF_ACLNT_01/TestStepAudOutStream.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 5 b220a9341636
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-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
// Test system includes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#include <testframework.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
// Specific includes for this test suite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#include "TestStepUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#include "TestSuiteUnitMMFAudClient.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
// Specific includes for these test steps
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#include "TestStepAudOutStream.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
#include "mmfclientaudiooutputstream.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
#include <mda/common/audio.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
#include "mmfclientaudiostreamutils.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
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
// base class for some audio Ouput stream tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
_LIT(KStreamRawFile,"c:\\mm\\mmf\\testfiles\\aclnt\\test.raw");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
//_LIT(KStreamWavFile,"c:\\16bitmPcm.wav");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
const TInt KMicroSecsInOneSec = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
//const TInt KBitsPerSample = 16;	// EABI warning removal
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
const TInt KBytesPerSample = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
const TInt KSampleRate = 8000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
const TInt KToneFrequency = 2000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
const TInt KOneSecond = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
const TInt KNumofThreads = 2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
const TInt KWaitReadTime = 500000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
// constant table of parameters for tests
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
const TConvParameters KTestParameters[] =
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
	// straight encode test
5
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    65
	{ _S("MM-MMF-ACLNT-U-0631-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    66
	{ _S("MM-MMF-ACLNT-U-0632-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    67
	{ _S("MM-MMF-ACLNT-U-0633-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	{ _S("MM-MMF-ACLNT-U-0634-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone },
5
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    69
	{ _S("MM-MMF-ACLNT-U-0635-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    70
	{ _S("MM-MMF-ACLNT-U-0636-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    71
	{ _S("MM-MMF-ACLNT-U-0637-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    72
	{ _S("MM-MMF-ACLNT-U-0638-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    73
	{ _S("MM-MMF-ACLNT-U-0639-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    74
	{ _S("MM-MMF-ACLNT-U-0640-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    75
	{ _S("MM-MMF-ACLNT-U-0641-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    76
	{ _S("MM-MMF-ACLNT-U-0858-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsMono, 	_S("PCMExp500hzMono8Khz.wav"),		KErrNone },
b220a9341636 2010wk46_01
hgs
parents: 0
diff changeset
    77
	{ _S("MM-MMF-ACLNT-U-0859-CP"), KMMFFourCCCodePCM16,   TMdaAudioDataSettings::ESampleRate8000Hz,	TMdaAudioDataSettings::EChannelsStereo, _S("PCMExp500hzStereo8Khz.wav"),	KErrNone }
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
CTestStepAudOutStream* CTestStepAudOutStream::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	CTestStepAudOutStream* s = new(ELeave) CTestStepAudOutStream();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	s->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
CTestStepAudOutStream::CTestStepAudOutStream() : iError(KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	iTestStepName = _L("MM-MMF-ACLNT-U-0999-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	iIsAllDataRead = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	iIsAllDataWritten = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
void CTestStepAudOutStream::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	// reset the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	for(TInt i=0; i<KNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
		iBufferList[i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	iStartBuf=iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
CTestStepAudOutStream::~CTestStepAudOutStream()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
TInt CTestStepAudOutputStream::HandleKeyEvent(TKeyCode aKeystroke)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	TInt retval = KErrNotSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	TInt key = aKeystroke;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	switch (key)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	case 'o':
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
		if (!iStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
			retval = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
			TRAP(retval, iAudOutStream->Open(NULL));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	case 'w':
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
		if (!iStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
			retval = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
			TInt err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
			iReadBufferActive.Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
			retval = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	case 's':
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
		if (!iAudOutStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
			retval = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
		else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
			iAudOutStream->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
			retval = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	case 'q': 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	case 'Q':
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
		iParent.TestComplete();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
		retval = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	return retval;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
void CTestStepAudOutputStream::StartL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
const TDesC& CTestStepAudOutputStream::Instructions()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	return KTxtClientAudioOutputStreamInstructions;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
void CTestStepAudOutStream::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
void CTestStepAudOutStream::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	if (iIsAllDataWritten && (aError == KErrNone || aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
		iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
		iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	iReadBufferActive->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	TInt filePosition=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	iFile.Seek(ESeekStart, filePosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
void CTestStepAudOutStream::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	if(aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
			//need add for deal with exception
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
			return;   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
	// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
	iBufferList[iStartBuf] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
	if(iStartBuf==KNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
		iStartBuf = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
		iStartBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	if (iIsAllDataRead && iStartBuf == iEndBuf)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
		iIsAllDataWritten = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
	else if(!iReadBufferActive->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
		iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
CTestStepAudOutStream::CReadBufferActive::CReadBufferActive() : CActive(0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
CTestStepAudOutStream::CReadBufferActive::~CReadBufferActive()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
void CTestStepAudOutStream::CReadBufferActive::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	iParent->ProcessDataL(iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
void CTestStepAudOutStream::CReadBufferActive::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
	// do nothing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
void CTestStepAudOutStream::CReadBufferActive::Read()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
	iParent->iFile.Read(iBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
void CTestStepAudOutStream::CReadBufferActive::Read(TInt aPos)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	iParent->iFile.Read(aPos, iBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
void CTestStepAudOutStream::ProcessDataL(TBuf8<KBufferSize>& aData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
	if(aData.Length())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
		if(iBufferList[iEndBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
			iBufferList[iEndBuf] = aData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
			iAudOutStream->WriteL(iBufferList[iEndBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
			// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
			if(iEndBuf==KNumBuffer-1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
				iEndBuf=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
				iEndBuf++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
		if(iBufferList[iEndBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
			iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
		// else all our buffers are full
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
		iIsAllDataRead = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
 enum TVerdict CTestStepAudOutStream::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
	// create the active object
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
	iReadBufferActive = new(ELeave) CReadBufferActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	iReadBufferActive->iParent = this;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
	iFs.Connect();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
	TRAPD(err, iAudOutStream = CMMFMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
		iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	 	 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
enum TVerdict CTestStepAudOutStream::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
	delete iReadBufferActive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
	}
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
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
TVerdict CTestStepAudOutStream::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
	//TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	if (iError != KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
	iReadBufferActive->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
	// wait sometime to finish and then close the file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
	User::After(1200000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
 * Static constructor for CTestStepAudOutStreamNew.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
 * @return	"CTestStepAudOutStreamNew*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
 *			The constructed CTestStepAudOutStreamNew
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
CTestStepAudOutStreamNew* CTestStepAudOutStreamNew::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
	CTestStepAudOutStreamNew* self = new(ELeave) CTestStepAudOutStreamNew;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
CTestStepAudOutStreamNew::CTestStepAudOutStreamNew()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
	iTestStepName = _L("MM-MMF-ACLNT-U-0600-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
CTestStepAudOutStreamNew::~CTestStepAudOutStreamNew()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
 * Implementation of the MMdaAudioOuputStreamCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
void CTestStepAudOutStreamNew::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
void CTestStepAudOutStreamNew::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
void CTestStepAudOutStreamNew::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
 enum TVerdict CTestStepAudOutStreamNew::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0600-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
	INFO_PRINTF1(_L("this test is initialising an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
enum TVerdict CTestStepAudOutStreamNew::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
TVerdict CTestStepAudOutStreamNew::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
	iAudOutStream = CMMFMdaAudioOutputStream::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
	if ( iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
		 iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
		 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
	}
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
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
 * Static constructor for CTestStepAudOutStreamSetProp.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
 * @return	"CTestStepAudOutStreamSetProp*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
 *			The constructed CTestStepAudOutStreamSetProp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
CTestStepAudOutStreamSetProp* CTestStepAudOutStreamSetProp::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
	CTestStepAudOutStreamSetProp* self = new(ELeave) CTestStepAudOutStreamSetProp;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
CTestStepAudOutStreamSetProp::CTestStepAudOutStreamSetProp()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
	iTestStepName = _L("MM-MMF-ACLNT-U-0601-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
CTestStepAudOutStreamSetProp::~CTestStepAudOutStreamSetProp()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
 enum TVerdict CTestStepAudOutStreamSetProp::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
	 // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0601-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
	INFO_PRINTF1(_L("this test is setting the audio properties of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
TVerdict CTestStepAudOutStreamSetProp::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
	TRAP(err, iAudOutStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate8000Hz,TMdaAudioDataSettings::EChannelsMono) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
	// test2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
	// fails with the enum values, correct?
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
	TRAP(err, iAudOutStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate44100Hz,TMdaAudioDataSettings::EChannelsStereo) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
	if (!(err == KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
		  err == KErrNotSupported) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
		 return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
// This tests TUint StreamUtils::MapChannelsMdaToMMFL(TInt aMdaChannels)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
CTestStepAudOutStreamMapChannels* CTestStepAudOutStreamMapChannels::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
	CTestStepAudOutStreamMapChannels* self = new(ELeave) CTestStepAudOutStreamMapChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
CTestStepAudOutStreamMapChannels::CTestStepAudOutStreamMapChannels()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
	iTestStepName = _L("MM-MMF-ACLNT-U-0620-LP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
TVerdict CTestStepAudOutStreamMapChannels::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
	TInt mdaFlags = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
	TUint mmfChannels = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	// Test with zero as param
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
	if ((err != KErrNone) || (mmfChannels != EMMFMono))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
		INFO_PRINTF4(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d, mdaFlags = %d, mmfChannels = %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
					 err, mdaFlags, mmfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
	// Test with MDA mono flag
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
	mdaFlags |= TMdaAudioDataSettings::EChannelsMono;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
	if ((err != KErrNone) || (mmfChannels != EMMFMono))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
		INFO_PRINTF4(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d, mdaFlags = %d, mmfChannels = %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
					 err, mdaFlags, mmfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
	// Test with MDA mono and stereo flag
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
	mdaFlags |= TMdaAudioDataSettings::EChannelsStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
	if ((err != KErrNone) || (mmfChannels != EMMFStereo))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
		INFO_PRINTF4(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d, mdaFlags = %d, mmfChannels = %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
					 err, mdaFlags, mmfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
	// Test with just MDA stereo flag
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
	mdaFlags = TMdaAudioDataSettings::EChannelsStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
	if ((err != KErrNone) || (mmfChannels != EMMFStereo))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
		INFO_PRINTF4(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d, mdaFlags = %d, mmfChannels = %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
					 err, mdaFlags, mmfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
	// Test with some other flags combined
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
	mdaFlags |= TMdaAudioDataSettings::ESampleRate44100Hz | TMdaAudioDataSettings::ERealTime;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	if ((err != KErrNone) || (mmfChannels != EMMFStereo))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
		INFO_PRINTF4(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d, mdaFlags = %d, mmfChannels = %d)"),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
					 err, mdaFlags, mmfChannels);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
	// Test with invalid param
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
	mdaFlags = -1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
	TRAP(err, mmfChannels = StreamUtils::MapChannelsMdaToMMFL(mdaFlags));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
	if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
		INFO_PRINTF2(_L("StreamUtils::MapChannelsMdaToMMFL failed test (err = %d)"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
	return EPass;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
 * Static constructor for CTestStepAudOutStreamSetPropNeg.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
 * @return	"CTestStepAudOutStreamSetPropNeg*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
 *			The constructed CTestStepAudOutStreamSetPropNeg
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
CTestStepAudOutStreamSetPropNeg* CTestStepAudOutStreamSetPropNeg::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
	CTestStepAudOutStreamSetPropNeg* self = new(ELeave) CTestStepAudOutStreamSetPropNeg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
CTestStepAudOutStreamSetPropNeg::CTestStepAudOutStreamSetPropNeg()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
	iTestStepName = _L("MM-MMF-ACLNT-U-0801-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
CTestStepAudOutStreamSetPropNeg::~CTestStepAudOutStreamSetPropNeg()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
 enum TVerdict CTestStepAudOutStreamSetPropNeg::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
	 // Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0801-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
	INFO_PRINTF1(_L("this negative test sets incorrect audio properties of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
TVerdict CTestStepAudOutStreamSetPropNeg::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
	TRAP(err, StreamUtils::MapChannelsMdaToMMFL(-1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
	if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
	// test 2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
	TRAP(err, StreamUtils::MapSampleRateMdaToMMFL(-1));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
	if (err != KErrNotSupported)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
 * Static constructor for CTestStepAudOutStreamOpen.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
 * @return	"CTestStepAudOutStreamOpen*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
 *			The constructed CTestStepAudOutStreamOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
CTestStepAudOutStreamOpen* CTestStepAudOutStreamOpen::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
	CTestStepAudOutStreamOpen* self = new(ELeave) CTestStepAudOutStreamOpen;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
	return self;
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
CTestStepAudOutStreamOpen::CTestStepAudOutStreamOpen()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
	iTestStepName = _L("MM-MMF-ACLNT-U-0602-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
 enum TVerdict CTestStepAudOutStreamOpen::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
	// this installs the scheduler and initialises the iAudOutStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0602-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
	INFO_PRINTF1(_L("this test is openning an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
TVerdict CTestStepAudOutStreamOpen::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
	TMdaAudioDataSettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
	settings.Query();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
	settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz; // ESampleRateAnyInRange
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
	settings.iChannels = TMdaAudioDataSettings::EChannelsStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
	settings.iFlags = TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
	settings.iVolume = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
	iAudOutStream->Open(&settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
//	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
		 return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
 * Static constructor for CTestStepAudOutStreamSetVol.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
 * @return	"CTestStepAudOutStreamSetVol*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
 *			The constructed CTestStepAudOutStreamSetVol
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
CTestStepAudOutStreamSetVol* CTestStepAudOutStreamSetVol::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
	CTestStepAudOutStreamSetVol* self = new(ELeave) CTestStepAudOutStreamSetVol;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
CTestStepAudOutStreamSetVol::CTestStepAudOutStreamSetVol()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
	iTestStepName = _L("MM-MMF-ACLNT-U-0603-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
CTestStepAudOutStreamSetVol::~CTestStepAudOutStreamSetVol()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
 * Implementation of the MMdaAudioOuputStreamCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
void CTestStepAudOutStreamSetVol::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
void CTestStepAudOutStreamSetVol::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
void CTestStepAudOutStreamSetVol::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
 enum TVerdict CTestStepAudOutStreamSetVol::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0603-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
	INFO_PRINTF1(_L("this test is setting the volume of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
	TRAPD(err, iAudOutStream = CMMFMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
		iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
enum TVerdict CTestStepAudOutStreamSetVol::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
TVerdict CTestStepAudOutStreamSetVol::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
	TInt vol = iAudOutStream->MaxVolume()/2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
	if (vol < 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
	//set the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
	iAudOutStream->SetVolume(vol);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
	//get the volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
	TInt rvol = iAudOutStream->Volume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
	if (vol != rvol ) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
		 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
 * Static constructor for CTestStepAudOutStreamSetPrior.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
 * @return	"CTestStepAudOutStreamSetPrior*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
 *			The constructed CTestStepAudOutStreamSetPrior
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
CTestStepAudOutStreamSetPrior* CTestStepAudOutStreamSetPrior::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
	CTestStepAudOutStreamSetPrior* self = new(ELeave) CTestStepAudOutStreamSetPrior;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
CTestStepAudOutStreamSetPrior::CTestStepAudOutStreamSetPrior()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
	iTestStepName = _L("MM-MMF-ACLNT-U-0608-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
CTestStepAudOutStreamSetPrior::~CTestStepAudOutStreamSetPrior()
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
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
enum TVerdict CTestStepAudOutStreamSetPrior::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0608-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
	INFO_PRINTF1(_L("this test is setting the audio priorities of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
enum TVerdict CTestStepAudOutStreamSetPrior::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
TVerdict CTestStepAudOutStreamSetPrior::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
//	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
	// test 1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
	iAudOutStream->SetPriority(EMdaPriorityMin, EMdaPriorityPreferenceTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
/*	TMMFPrioritySettings prior;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
	err = GetAudOutStreamPrioritySettings(iAudOutStream, prior);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
	if ( err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
		 prior.iPriority != EMdaPriorityMin ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
		 prior.iPref != EMdaPriorityPreferenceTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
		 return EFail; // fails with openned and non-openned CMdaAudioOutputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
	// test2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
	iAudOutStream->SetPriority(EMdaPriorityMax, EMdaPriorityPreferenceQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
/*	err = GetAudOutStreamPrioritySettings(iAudOutStream, prior);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
	if ( err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
		 prior.iPriority != EMdaPriorityMax ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
		 prior.iPref != EMdaPriorityPreferenceQuality)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
		 return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
 * Static constructor for CTestStepAudOutStreamSetBalance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
 * @return	"CTestStepAudOutStreamSetBalance*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
 *			The constructed CTestStepAudOutStreamSetBalance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
CTestStepAudOutStreamSetBalance* CTestStepAudOutStreamSetBalance::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
	CTestStepAudOutStreamSetBalance* self = new(ELeave) CTestStepAudOutStreamSetBalance;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
CTestStepAudOutStreamSetBalance::CTestStepAudOutStreamSetBalance()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
	iTestStepName = _L("MM-MMF-ACLNT-U-0606-HP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
CTestStepAudOutStreamSetBalance::~CTestStepAudOutStreamSetBalance()
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
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
 * Implementation of the MMdaAudioOuputStreamCallback interface functions
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
 **/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
void CTestStepAudOutStreamSetBalance::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
void CTestStepAudOutStreamSetBalance::MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
void CTestStepAudOutStreamSetBalance::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
 enum TVerdict CTestStepAudOutStreamSetBalance::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
	 // this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
	 verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0606-HP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
	INFO_PRINTF1(_L("this test is setting and getting the balance of an Audio Output Stream Utility Class"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
	TRAPD(err, iAudOutStream = CMMFMdaAudioOutputStream::NewL(*this) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
	if (err != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196
		iAudOutStream == NULL )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1197
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1198
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1199
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1200
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1201
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1202
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1203
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1204
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1205
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1206
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1207
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1208
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1209
enum TVerdict CTestStepAudOutStreamSetBalance::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1210
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1211
	delete iAudOutStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1212
	iAudOutStream = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1213
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1214
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1215
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1216
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1217
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1218
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1219
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1220
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1221
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1222
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1223
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1224
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1225
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1226
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1227
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1228
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1229
TVerdict CTestStepAudOutStreamSetBalance::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1230
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1231
	TInt bal = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1232
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1233
	TRAPD(err, iAudOutStream->SetBalanceL()); // default KMMFBalanceCenter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1234
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1235
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1236
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1237
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1238
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1239
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1240
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1241
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1242
	if (bal != KMMFBalanceCenter )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1243
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1244
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1245
	TRAP(err, iAudOutStream->SetBalanceL(KMMFBalanceMaxRight));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1246
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1247
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1248
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1249
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1250
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1251
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1252
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1253
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1254
	if (bal != KMMFBalanceMaxRight )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1255
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1257
	TRAP(err, iAudOutStream->SetBalanceL(KMMFBalanceMaxLeft));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1258
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1259
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1260
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1261
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1262
	TRAP(err, bal = iAudOutStream->GetBalanceL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1263
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1264
		return EFail; // we expect this _will_ be supported for Typhoon
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1265
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1266
	if (bal != KMMFBalanceMaxLeft )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1267
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1268
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1269
	// out of bounds
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1270
	/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1271
	iAudOutStream->SetBalance(KMMFBalanceMaxLeft+10);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1272
	//get the balance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1273
	bal = iAudOutStream->Balance();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1274
	if (bal != KMMFBalanceMaxLeft )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1275
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1276
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1277
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1278
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1279
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1280
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1281
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1282
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1283
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1284
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1285
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1286
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1287
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1288
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1289
 * Static constructor for CTestStepAudOutStreamWrite.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1290
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1291
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1292
 * @return	"CTestStepAudOutStreamWrite*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1293
 *			The constructed CTestStepAudOutStreamWrite
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1294
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1295
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1296
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1297
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1298
CTestStepAudOutStreamWrite* CTestStepAudOutStreamWrite::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1299
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1300
	CTestStepAudOutStreamWrite* self = new(ELeave) CTestStepAudOutStreamWrite;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1301
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1302
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1303
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1304
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1305
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1306
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1307
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1308
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1309
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1310
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1311
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1312
CTestStepAudOutStreamWrite::CTestStepAudOutStreamWrite()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1313
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1314
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1315
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1316
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1317
	iTestStepName = _L("MM-MMF-ACLNT-U-0609-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1318
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1319
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1320
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1321
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1322
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1323
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1324
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1325
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1326
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1327
CTestStepAudOutStreamWrite::~CTestStepAudOutStreamWrite()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1328
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1329
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1330
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1331
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1332
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1333
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1334
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1335
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1336
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1337
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1338
 enum TVerdict CTestStepAudOutStreamWrite::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1339
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1340
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1341
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1342
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1343
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1344
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1345
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0609-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1346
	INFO_PRINTF1(_L("this test is writting data to an Audio Output Stream Utility Class. WriteL()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1347
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1348
	TMdaAudioDataSettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1349
	settings.Query();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1350
	settings.iChannels = TMdaAudioDataSettings::EChannelsMono;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1351
	settings.iSampleRate = TMdaAudioDataSettings::ESampleRate8000Hz;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1352
	settings.iVolume = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1353
	iAudOutStream->Open(&settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1354
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1355
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1357
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1358
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1359
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1360
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1361
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1362
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1363
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1364
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1365
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1366
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1367
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1368
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1369
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1370
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1371
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1372
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1373
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1374
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1375
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1376
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1377
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1378
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1379
enum TVerdict CTestStepAudOutStreamWrite::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1380
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1381
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1382
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1383
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1384
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1385
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1386
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1387
LOCAL_C TInt stopActiveScheduler(TAny*)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1388
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1389
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1390
	return FALSE;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1391
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1392
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1393
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1394
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1395
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1396
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1397
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1398
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1399
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1400
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1401
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1402
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1403
TVerdict CTestStepAudOutStreamWrite::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1404
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1405
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1406
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1407
	TBool boolRes = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1408
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1409
	iReadBufferActive->Read(); // eventually calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1410
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1411
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1412
	callBackTimer->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1413
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1414
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1415
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1416
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1417
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1418
	if (err != KErrNone || !boolRes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1419
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1420
		INFO_PRINTF3(_L("GetAudOutStreamPlaying failed (err=%d, boolRes = %d)"), err, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1421
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1422
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1423
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1424
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1425
	iTestStepResult = (iError == KErrNone) ? EPass : EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1426
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1427
		INFO_PRINTF2(_L("Test failed, iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1428
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1429
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1430
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1431
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1432
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1433
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1435
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1436
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1437
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1438
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1439
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1440
 * Static constructor for CTestStepAudOutStreamStop.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1441
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1442
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1443
 * @return	"CTestStepAudOutStreamStop*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1444
 *			The constructed CTestStepAudOutStreamStop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1445
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1446
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1447
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1448
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1449
CTestStepAudOutStreamStop* CTestStepAudOutStreamStop::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1450
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1451
	CTestStepAudOutStreamStop* self = new(ELeave) CTestStepAudOutStreamStop;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1452
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1453
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1454
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1455
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1456
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1457
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1458
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1459
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1460
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1461
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1462
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1463
CTestStepAudOutStreamStop::CTestStepAudOutStreamStop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1464
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1465
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1466
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1467
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1468
	iTestStepName = _L("MM-MMF-ACLNT-U-0610-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1469
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1471
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1472
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1473
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1474
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1475
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1476
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1477
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1478
CTestStepAudOutStreamStop::~CTestStepAudOutStreamStop()
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
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1485
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1486
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1487
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1488
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1489
 enum TVerdict CTestStepAudOutStreamStop::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1490
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1491
	 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1492
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1493
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1494
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1495
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1496
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1497
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0610-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1498
	INFO_PRINTF1(_L("this test is stopping a playing Audio Output Stream Utility Class: Stop()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1499
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1500
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1501
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1502
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1503
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1504
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1505
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1506
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1507
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1508
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1509
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1510
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1511
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1512
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1513
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1514
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1515
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1516
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1517
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1518
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1519
	callBackTimer->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1520
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1521
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1522
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1523
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1524
	TBool boolRes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1525
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1526
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1527
	if (err != KErrNone || !boolRes )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1528
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1529
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1530
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1531
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1532
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1533
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1534
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1535
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1536
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1537
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1538
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1539
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1540
enum TVerdict CTestStepAudOutStreamStop::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1541
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1542
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1543
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1544
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1545
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1546
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1547
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1548
TInt stopAudOutStream(TAny* aAudOutStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1549
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1550
	REINTERPRET_CAST(CMMFMdaAudioOutputStream*, aAudOutStream)->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1551
	return FALSE;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1552
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1553
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1554
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1555
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1556
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1557
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1558
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1559
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1560
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1561
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1562
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1563
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1564
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1565
TVerdict CTestStepAudOutStreamStop::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1566
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1567
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1568
	TBool stopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1569
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1570
	// stream is playing now from preamble
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1571
	// wait a fraction of the stream duration before stopping
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1572
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopAudOutStream, iAudOutStream));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1573
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1574
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1575
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1576
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1577
	if (iError != KErrCancel || // KErrAbort(?KErrCancel seems to be what is returned) is supposed to be returned ny the MaoscBufferCopied
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1578
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1579
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1580
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1581
		INFO_PRINTF4(_L("GetAudOutStreamStopped failed (iError=%d, err=%d, stopped=%d)"), iError, err, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1582
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1583
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1584
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1585
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1586
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1587
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1588
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1589
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1590
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1591
// --------------------------------------------
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
 * Static constructor for CTestStepAudOutStreamPosition.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1596
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1597
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1598
 * @return	"CTestStepAudOutStreamPosition*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1599
 *			The constructed CTestStepAudOutStreamPosition
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1600
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1601
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1602
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1603
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1604
CTestStepAudOutStreamPosition* CTestStepAudOutStreamPosition::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1605
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1606
	CTestStepAudOutStreamPosition* self = new(ELeave) CTestStepAudOutStreamPosition;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1607
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1608
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1609
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1610
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1611
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1612
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1613
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1614
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1615
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1616
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1617
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1618
CTestStepAudOutStreamPosition::CTestStepAudOutStreamPosition()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1619
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1620
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1621
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1622
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1623
	iTestStepName = _L("MM-MMF-ACLNT-U-0611-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1624
	}
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
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1629
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1630
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1631
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1632
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1633
CTestStepAudOutStreamPosition::~CTestStepAudOutStreamPosition()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1634
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1635
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1636
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1637
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1638
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1639
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1640
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1641
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1642
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1643
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1644
 enum TVerdict CTestStepAudOutStreamPosition::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1645
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1646
	 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1647
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1648
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1649
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1650
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1651
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1652
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0611-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1653
	INFO_PRINTF1(_L("this test is gettig the position of a playing Audio Output Stream Utility Class: Position()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1654
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1655
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1656
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1657
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1658
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1659
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1660
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1661
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1662
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1663
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1664
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1665
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1666
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1667
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1668
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1669
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1670
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1671
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1672
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1673
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1674
	callBackTimer->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1675
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1676
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1677
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1678
	TBool boolRes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1679
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1680
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1681
	if (err != KErrNone || !boolRes )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1682
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1683
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1684
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1685
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1686
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1687
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1688
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1689
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1690
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1691
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1692
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1693
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1694
enum TVerdict CTestStepAudOutStreamPosition::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1695
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1696
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1697
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1698
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1699
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1700
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1701
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1702
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1703
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1704
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1705
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1706
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1707
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1708
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1709
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1710
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1711
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1712
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1713
TVerdict CTestStepAudOutStreamPosition::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1714
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1715
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1716
	iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1717
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1718
	// here the purpose is to test if the Position() function returns the 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1719
	// correct position with respect to the clip byte-stream position, i.e.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1720
	// the bytes that have been played so far, expressed in time (via sample rate)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1721
	// and not the actual real-time time difference between the beginning of the 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1722
	// play and the moment we apply Position().
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1723
	// The stream might take longer actual time to be played, e.g. start delay, breaks, etc.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1724
	// however in this case streaming from file to AudioOutput(speaker) should be consistent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1725
	// but it's not the purpose of this unit test to check that it plays fine and within 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1726
	// certain time limits
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1727
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1728
	// get the position
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1729
	TTimeIntervalMicroSeconds pos(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1730
	TInt64 bytes = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1731
	TInt64 estimPos = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1732
	const TInt64 KExpectedDeviation = 50000; //50 milli secs
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1733
	pos = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1734
	bytes = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1735
	estimPos = (bytes * TInt64(KMicroSecsInOneSec)) / (TInt64(KSampleRate) * TInt64(KBytesPerSample));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1736
	//these two need not be same if the bytes played change continuously. So we need to consider the limit on
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1737
	//on the deviation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1738
	TInt64 deviation = estimPos-pos.Int64();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1739
	if (deviation > KExpectedDeviation)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1740
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1741
		INFO_PRINTF3(_L("Test1: pos (%ld) != estimPos (%ld)"), pos.Int64(), estimPos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1742
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1743
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1744
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1745
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1746
	const TInt KWaitTime = 1000000;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1747
	callBackTimer->After(KWaitTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1748
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1749
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1750
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1751
	pos = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1752
	bytes = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1753
	estimPos = (bytes * TInt64(KMicroSecsInOneSec)) / (TInt64(KSampleRate) * TInt64(KBytesPerSample));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1754
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1755
	const TReal KTolerance = 0.05; // 5%
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1756
	const TInt64 KDelta = static_cast<TInt>(KTolerance * I64REAL(pos.Int64()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1757
	const TInt64 KMin = pos.Int64() - KDelta;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1758
	const TInt64 KMax = pos.Int64() + KDelta;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1759
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1760
	INFO_PRINTF4(_L("Position (%ld), Estimated Position (%ld), Tolerance at %d percent"), pos.Int64(), estimPos, static_cast<TInt>(KTolerance * 100));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1761
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1762
	if ((estimPos < KMin) || (estimPos > KMax))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1763
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1764
		INFO_PRINTF3(_L("pos (%ld) != estimPos (%ld)"), pos.Int64(), estimPos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1765
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1766
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1767
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1768
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1769
	idleStopper->Start(TCallBack(stopAudOutStream, iAudOutStream));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1770
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1771
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1772
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1773
	TBool stopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1774
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1775
	if (iError != KErrCancel || // KErrCancel (KErrAbort is supposed to be returned ny the MaoscBufferCopied??)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1776
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1777
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1778
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1779
		INFO_PRINTF4(_L("GetAudOutStreamStopped failed (iError=%d, err=%d, stopped=%d)"), iError, err, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1780
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1781
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1782
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1783
	// get the position
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1784
	pos = iAudOutStream->Position();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1785
	if (pos.Int64() != 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1786
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1787
		INFO_PRINTF1(_L("iAudOutStream->Position() not zero"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1788
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1789
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1790
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1791
		 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1792
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1793
	//xxx try cotinuing playing and get positions while playing if there is more time.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1794
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1795
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1796
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1797
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1798
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1799
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1805
 * Static constructor for CTestStepAudOutStreamGetBytes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1806
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1807
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1808
 * @return	"CTestStepAudOutStreamGetBytes*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1809
 *			The constructed CTestStepAudOutStreamGetBytes
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1810
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1811
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1812
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1813
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1814
CTestStepAudOutStreamGetBytes* CTestStepAudOutStreamGetBytes::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1815
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1816
	CTestStepAudOutStreamGetBytes* self = new(ELeave) CTestStepAudOutStreamGetBytes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1817
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1818
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1819
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1820
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1821
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1822
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1823
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1824
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1825
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1826
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1827
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1828
CTestStepAudOutStreamGetBytes::CTestStepAudOutStreamGetBytes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1829
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1830
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1831
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1832
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1833
	iTestStepName = _L("MM-MMF-ACLNT-U-0612-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1834
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1835
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1836
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1837
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1838
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1839
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1840
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1841
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1842
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1843
CTestStepAudOutStreamGetBytes::~CTestStepAudOutStreamGetBytes()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1844
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1845
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1846
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1847
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1848
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1849
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1850
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1851
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1852
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1853
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1854
 enum TVerdict CTestStepAudOutStreamGetBytes::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1855
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1856
	 iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1857
	 enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1858
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1859
	 verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1860
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1861
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1862
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0612-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1863
	INFO_PRINTF1(_L("this test gets the bytes rendered by the H/W until this moment: GetBytes()"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1864
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1865
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1866
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1867
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1868
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1869
		INFO_PRINTF2(_L("Error calling iAudOutStream->Open(NULL) %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1870
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1871
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1872
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1873
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1874
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1875
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1876
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1877
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1878
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1879
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1880
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1881
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1882
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1883
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1884
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1885
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1886
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1887
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1888
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1889
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1890
	callBackTimer->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1891
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1892
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1893
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1894
		INFO_PRINTF2(_L("1. Error in callback %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1895
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1896
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1897
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1898
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1899
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1900
	TBool boolRes;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1901
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1902
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1903
	if (err != KErrNone || !boolRes )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1904
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1905
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1906
	 return verdict;
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
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1912
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1913
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1914
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1915
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1916
enum TVerdict CTestStepAudOutStreamGetBytes::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1917
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1918
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1919
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1920
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1921
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1922
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1924
void CTestStepAudOutStreamGetBytes::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1925
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1926
	if (iIsAllDataWritten && (aError == KErrNone || aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1927
		iError = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1928
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1929
		iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1930
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1931
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1932
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1933
		INFO_PRINTF2(_L("MaoscPlayComplete error %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1934
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1935
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1936
	iReadBufferActive->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1937
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1938
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1939
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1940
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1941
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1942
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1943
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1944
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1945
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1946
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1947
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1948
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1949
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1950
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1951
TVerdict CTestStepAudOutStreamGetBytes::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1952
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1953
	INFO_PRINTF1(_L("Test start"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1954
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1955
	TInt bytes1 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1956
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1957
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1958
	callBackTimer->After(2000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1959
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1960
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1961
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1962
		INFO_PRINTF2(_L("2. Error in callback %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1963
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1964
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1965
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1966
	callBackTimer->Cancel(); // in case something else stopped the AS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1967
	TInt bytes2 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1968
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1969
	callBackTimer->After(1000000);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1970
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1971
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1972
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1973
		INFO_PRINTF2(_L("3. Error in callback %d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1974
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1975
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1976
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1977
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1978
	TInt bytes3 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1979
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1980
	INFO_PRINTF1(_L("Here 1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1981
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1982
	TInt fileSize;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1983
	if (iFile.SubSessionHandle())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1984
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1985
		User::LeaveIfError(iFile.Size(fileSize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1986
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1987
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1988
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1989
		INFO_PRINTF1(_L("iFile doesn't have a handle"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1990
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1991
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1992
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1993
	INFO_PRINTF1(_L("Here 2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1994
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1995
	CActiveScheduler::Start(); // wait for sample to finish
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1996
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1997
	INFO_PRINTF1(_L("Here 3"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1998
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1999
	TInt bytes4 = iAudOutStream->GetBytes();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2000
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2001
	INFO_PRINTF5(_L("Here 4:  bytes1 = %d; bytes2 = %d; bytes3 = %d; bytes4 = %d"), bytes1, bytes2, bytes3, bytes4);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2003
	if (bytes1 >= bytes2 || bytes2 >= bytes3 || bytes3 >= bytes4)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2004
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2005
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2006
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2007
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2008
	INFO_PRINTF1(_L("Here 5"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2009
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2010
	if (bytes4 != fileSize)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2011
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2012
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2013
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2014
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2015
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2016
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2017
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2018
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2019
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2025
 * Static constructor for CTestStepAudOutStreamOpenZero.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2026
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2027
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2028
 * @return	"CTestStepAudOutStreamOpenZero*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2029
 *			The constructed CTestStepAudOutStreamOpenZero
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2030
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2031
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2032
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2033
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2034
CTestStepAudOutStreamOpenZero* CTestStepAudOutStreamOpenZero::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2035
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2036
	CTestStepAudOutStreamOpenZero* self = new(ELeave) CTestStepAudOutStreamOpenZero;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2037
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2038
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2039
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2040
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2041
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2042
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2043
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2044
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2045
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2046
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2047
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2048
CTestStepAudOutStreamOpenZero::CTestStepAudOutStreamOpenZero()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2049
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2050
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2051
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2052
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2053
	iTestStepName = _L("MM-MMF-ACLNT-U-0615-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2054
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2055
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2056
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2057
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2058
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2059
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2060
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2061
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2062
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2063
 enum TVerdict CTestStepAudOutStreamOpenZero::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2064
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2065
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2066
	// this installs the scheduler and initialises the iAudOutStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2067
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2068
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2069
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0615-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2070
	INFO_PRINTF1(_L("this test is openning an Audio Output Stream Utility Class with audio settings zeroed"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2071
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2072
	TInt err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2073
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2074
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2075
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2076
	return verdict;
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
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2082
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2083
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2084
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2085
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2086
enum TVerdict CTestStepAudOutStreamOpenZero::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2087
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2088
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2089
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2090
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2091
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2092
	}
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
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2097
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2098
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2099
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2100
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2101
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2102
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2103
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2104
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2105
TVerdict CTestStepAudOutStreamOpenZero::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2106
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2107
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2108
	TBool boolRes = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2110
	TMdaAudioDataSettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2111
	settings.Query();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2112
	settings.iSampleRate = 0; //TMdaAudioDataSettings::ESampleRate8000Hz; // ESampleRateAnyInRange
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2113
	settings.iChannels = 0; //TMdaAudioDataSettings::EChannelsStereo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2114
	settings.iFlags = 0; //TMdaAudioDataSettings::ENoNetworkRouting;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2115
	settings.iVolume = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2116
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2117
	iAudOutStream->Open(&settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2118
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2120
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2121
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2122
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2123
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2124
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2125
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2126
		INFO_PRINTF4(_L("GetAudOutStreamStopped (iError=%d, err=%d, stopped=%d)"), iError, err, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2127
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2128
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2130
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2131
	// start feeding the outputStream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2132
	iReadBufferActive->Read(); // finally calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2133
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2135
	// check if it's stopped
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2136
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2137
	if (err != KErrNone || boolRes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2138
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2139
		INFO_PRINTF3(_L("GetAudOutStreamPlaying failed (err=%d, boolRes=%d)"), err, boolRes); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2140
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2141
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2142
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2143
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2144
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2145
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2146
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2147
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2148
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2150
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2151
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2152
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2153
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2154
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2155
 * Static constructor for CTestStepAudOutStreamDataType.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2156
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2157
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2158
 * @return	"CTestStepAudOutStreamDataType*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2159
 *			The constructed CTestStepAudOutStreamDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2160
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2161
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2162
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2163
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2164
CTestStepAudOutStreamDataType* CTestStepAudOutStreamDataType::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2165
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2166
	CTestStepAudOutStreamDataType* self = new(ELeave) CTestStepAudOutStreamDataType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2167
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2168
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2169
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2170
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2171
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2172
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2173
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2174
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2175
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2176
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2177
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2178
CTestStepAudOutStreamDataType::CTestStepAudOutStreamDataType()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2179
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2180
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2181
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2182
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2183
	iTestStepName = _L("MM-MMF-ACLNT-U-0630-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2184
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2185
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2186
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2187
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2188
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2189
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2190
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2191
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2192
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2193
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2194
CTestStepAudOutStreamDataType::~CTestStepAudOutStreamDataType()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2195
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2196
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2197
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2198
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2199
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2200
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2201
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2202
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2203
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2204
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2205
 enum TVerdict CTestStepAudOutStreamDataType::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2206
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2207
	CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2209
	return EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2210
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2212
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2213
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2214
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2215
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2216
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2217
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2218
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2219
enum TVerdict CTestStepAudOutStreamDataType::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2220
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2221
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2222
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2224
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2225
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2226
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2227
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2228
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2229
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2230
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2231
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2232
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2233
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2234
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2235
TVerdict CTestStepAudOutStreamDataType::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2236
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2237
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2238
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2239
	RArray<TFourCC> codecs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2240
	codecs.Append(KMMFFourCCCodePCMU8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2241
	codecs.Append(KMMFFourCCCodePCM16);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2242
	codecs.Append(KMMFFourCCCodeALAW);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2243
	codecs.Append(KMMFFourCCCodeMuLAW);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2244
	codecs.Append(KMMFFourCCCodeIMAD);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2245
	codecs.Append(KMMFFourCCCodePCM16B);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2246
	codecs.Append(KMMFFourCCCodeGSM610);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2247
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2248
	CMdaAudioOutputStream* inStream = CMdaAudioOutputStream::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2250
	TInt numCodecs = codecs.Count();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2251
	for(TInt i=0; i<numCodecs; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2252
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2253
		TRAPD(err, inStream->SetDataTypeL(codecs[i]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2254
		if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2255
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2256
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2257
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2258
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2259
		TFourCC fourCCReceived = inStream->DataType();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2260
		if (codecs[i] != fourCCReceived)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2261
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2262
			iTestStepResult = EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2263
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2264
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2265
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2266
	delete inStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2267
	codecs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2268
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2269
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2270
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2271
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2272
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2273
// --------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2274
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2275
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2276
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2277
 * Static constructor for CTestStepAudOutStreamFormats.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2278
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2279
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2280
 * @return	"CTestStepAudOutStreamFormats*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2281
 *			The constructed CTestStepAudOutStreamFormats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2282
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2283
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2284
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2285
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2286
CTestStepAudOutStreamFormats* CTestStepAudOutStreamFormats::NewL(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2287
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2288
	CTestStepAudOutStreamFormats* self = new(ELeave) CTestStepAudOutStreamFormats(aTestIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2289
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2290
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2291
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2292
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2293
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2294
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2295
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2296
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2297
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2298
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2299
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2300
CTestStepAudOutStreamFormats::CTestStepAudOutStreamFormats(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2301
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2302
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2303
	// store a pointer to the test parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2304
	iTestParameters = &(KTestParameters[aTestIndex]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2305
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2306
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2307
	iTestStepName = iTestParameters->iTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2308
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2309
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2310
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2311
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2312
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2313
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2314
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2315
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2316
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2317
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2318
CTestStepAudOutStreamFormats::~CTestStepAudOutStreamFormats()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2319
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2320
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2321
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2322
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2323
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2324
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2325
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2326
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2327
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2328
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2329
 enum TVerdict CTestStepAudOutStreamFormats::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2330
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2331
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2332
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2333
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2334
	verdict = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2335
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2336
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2337
	INFO_PRINTF1(iTestStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2338
	INFO_PRINTF1(_L("this test is writting data to an Audio Output Stream Utility Class."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2339
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2340
	TInt strLen = User::StringLength(iTestParameters->iFromFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2341
	TPtrC ptr( iTestParameters->iFromFilename, strLen );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2342
	TFileName fileName = SetFileNameL(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2343
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2344
	TMdaAudioDataSettings settings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2345
	settings.Query();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2346
	settings.iChannels = iTestParameters->iChannels;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2347
	settings.iSampleRate = iTestParameters->iSampleRate;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2348
	settings.iVolume = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2349
	TRAP(err, iAudOutStream->SetDataTypeL(iTestParameters->iEncoding));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2350
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2351
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2352
	iAudOutStream->Open(&settings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2353
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2354
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2356
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2357
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2358
	if (iError != KErrNone ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2359
		err != KErrNone || 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2360
		!stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2361
		 return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2362
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2363
	err = iFile.Open(iFs, fileName, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2364
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2365
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2366
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2367
	 return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2368
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2369
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2370
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2371
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2372
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2373
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2374
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2375
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2376
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2377
enum TVerdict CTestStepAudOutStreamFormats::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2378
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2379
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2380
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2381
	return CTestStepAudOutStream::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2382
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2383
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2384
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2385
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2386
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2387
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2388
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2389
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2390
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2391
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2392
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2393
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2394
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2395
TVerdict CTestStepAudOutStreamFormats::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2396
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2397
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2398
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2399
	TBool boolRes = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2400
	TInt pos = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2402
	switch (iTestParameters->iEncoding)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2403
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2404
	case KMMFFourCCCodePCMU8:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2405
	case KMMFFourCCCodePCM16:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2406
	case KMMFFourCCCodeALAW:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2407
	case KMMFFourCCCodeMuLAW:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2408
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2409
		 pos = 44;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2410
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2411
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2412
	case KMMFFourCCCodeIMAD:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2413
	case KMMFFourCCCodeGSM610:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2414
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2415
		pos = 48;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2416
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2417
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2418
	case KMMFFourCCCodePCM16B:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2419
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2420
		pos = 24;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2421
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2422
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2423
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2424
		ASSERT(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2425
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2426
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2427
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2428
	iReadBufferActive->Read(pos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2429
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2430
	callBackTimer->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2431
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2432
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2434
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2435
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2436
	if (err != KErrNone || !boolRes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2437
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2438
		INFO_PRINTF3(_L("GetAudOutStreamPlaying failed (err=%d, boolRes = %d)"), err, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2439
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2440
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2442
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2443
	iTestStepResult = (iError == KErrNone) ? EPass : EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2444
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2445
		INFO_PRINTF2(_L("Test failed, iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2446
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2447
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2448
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2449
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2450
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2451
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2452
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2453
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2454
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2455
* Set FileName
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2456
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2457
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2458
TFileName CTestStepAudOutStreamFormats::SetFileNameL( const TDesC& aPathNameAndExtn )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2459
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2460
	//[ append the filename relative to the default path ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2461
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2462
	TFileName fileName = DefaultPath();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2463
	fileName.Append(aPathNameAndExtn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2464
	return fileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2465
	//iFileName().iPath = fileName ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2466
	}
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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2471
// DEF093436: Call to Configure in wrong place in CMMFImaAdpcmToPcm16CodecHwDevice::Start 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2472
// PDEF092098: DevSound fails to update policy if error occurs in StartPlayDataL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2473
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2474
// CTestStepAudOutStreamImadPolicyCallback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2475
// Private class which enables callbacks to be processed according to which stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2476
// they occurred on
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2477
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2478
CTestStepAudOutStreamImadPolicyCallback* CTestStepAudOutStreamImadPolicyCallback::NewL(TInt aStreamId, CTestStepAudOutStreamImadPolicy* aParent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2479
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2480
	CTestStepAudOutStreamImadPolicyCallback* s = new(ELeave) CTestStepAudOutStreamImadPolicyCallback(aStreamId, aParent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2481
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2482
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2483
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2484
CTestStepAudOutStreamImadPolicyCallback::CTestStepAudOutStreamImadPolicyCallback(TInt aStreamId, CTestStepAudOutStreamImadPolicy* aParent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2485
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2486
	iStreamId = aStreamId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2487
	iParent = aParent;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2488
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2489
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2490
CTestStepAudOutStreamImadPolicyCallback::~CTestStepAudOutStreamImadPolicyCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2491
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2492
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2494
void CTestStepAudOutStreamImadPolicyCallback::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2495
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2496
	iParent->OpenComplete(iStreamId, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2497
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2499
void CTestStepAudOutStreamImadPolicyCallback::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2500
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2501
	iParent->PlayComplete(iStreamId, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2502
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2503
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2504
void CTestStepAudOutStreamImadPolicyCallback::MaoscBufferCopied(TInt aError, const TDesC8& aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2505
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2506
	iParent->BufferCopied(iStreamId, aError, aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2507
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2508
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2509
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2510
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2511
 * Static constructor for CTestStepAudOutStreamImadPolicy.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2512
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2513
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2514
 * @return	"CTestStepAudOutStreamImadPolicy*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2515
 *			The constructed CTestStepAudOutStreamImadPolicy
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2516
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2517
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2518
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2519
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2520
CTestStepAudOutStreamImadPolicy* CTestStepAudOutStreamImadPolicy::NewL(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2521
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2522
	CTestStepAudOutStreamImadPolicy* s = new(ELeave) CTestStepAudOutStreamImadPolicy(aTestIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2523
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2524
	s->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2525
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2526
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2527
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2528
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2529
CTestStepAudOutStreamImadPolicy::CReadBufferActive::CReadBufferActive(TInt aStreamId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2530
:	CActive(EPriorityStandard),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2531
	iStreamId(aStreamId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2532
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2533
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2534
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2536
CTestStepAudOutStreamImadPolicy::CReadBufferActive::~CReadBufferActive()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2537
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2538
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2539
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2540
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2541
void CTestStepAudOutStreamImadPolicy::CReadBufferActive::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2542
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2543
	iParent->ProcessDataL(iStreamId, iBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2544
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2545
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2546
void CTestStepAudOutStreamImadPolicy::CReadBufferActive::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2547
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2548
	// do nothing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2549
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2550
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2551
void CTestStepAudOutStreamImadPolicy::CReadBufferActive::Read()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2552
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2553
	iParent->iFile[iStreamId].Read(iBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2554
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2555
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2557
void CTestStepAudOutStreamImadPolicy::CReadBufferActive::Read(TInt aPos)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2558
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2559
	iParent->iFile[iStreamId].Read(aPos, iBuffer, iStatus);      // read the 1st data trunk
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2560
	SetActive();		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2561
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2562
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2563
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2564
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2565
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2566
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2567
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2568
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2569
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2570
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2571
CTestStepAudOutStreamImadPolicy::CTestStepAudOutStreamImadPolicy(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2572
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2573
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2574
	// store a pointer to the test parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2575
	iTestParameters = &(KTestParameters[aTestIndex]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2576
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2577
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2578
	iTestStepName = iTestParameters->iTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2579
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2580
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2581
void CTestStepAudOutStreamImadPolicy::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2582
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2583
	// reset the buffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2584
	for (TInt s = 0; s < KImadPolicyNumberOfStreams; s++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2585
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2586
		for (TInt i = 0; i < KNumBuffer; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2587
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2588
			iBufferList[s][i] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2589
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2590
		iStartBuf[s] = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2591
		iEndBuf[s] = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2592
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2593
		// set the flags
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2594
		iPlayComplete[s] = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2595
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2596
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2597
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2598
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2599
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2600
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2601
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2602
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2603
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2604
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2605
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2606
CTestStepAudOutStreamImadPolicy::~CTestStepAudOutStreamImadPolicy()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2607
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2608
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2609
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2610
void CTestStepAudOutStreamImadPolicy::OpenComplete(TInt aStreamId, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2611
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2612
	INFO_PRINTF3(_L("CTestStepAudOutStreamImadPolicy::OpenComplete, aStreamId=%d aError=%d"), aStreamId, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2613
	iError[aStreamId] = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2614
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2615
	iSchedulerStopType = EOpenComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2616
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2617
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2618
void CTestStepAudOutStreamImadPolicy::PlayComplete(TInt aStreamId, TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2619
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2620
	INFO_PRINTF3(_L("CTestStepAudOutStreamImadPolicy::PlayComplete, aStreamId=%d aError=%d"), aStreamId, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2621
	iPlayComplete[aStreamId] = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2622
	if (iIsAllDataWritten[aStreamId] && (aError == KErrNone || aError == KErrUnderflow))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2623
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2624
		iError[aStreamId] = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2625
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2626
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2627
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2628
		iError[aStreamId] = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2629
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2630
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2631
	iReadBufferActive[aStreamId]->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2632
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2633
	// Keep the file OPEN until the end of the test.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2634
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2635
	iSchedulerStopType = EPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2636
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2637
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2638
void CTestStepAudOutStreamImadPolicy::BufferCopied(TInt aStreamId, TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2639
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2640
	INFO_PRINTF3(_L("CTestStepAudOutStreamImadPolicy::BufferCopied, aStreamId=%d aError=%d"), aStreamId, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2641
	iError[aStreamId] = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2642
	if (aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2643
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2644
		// allow the error to drop through; anything but KErrNone or KErrUnderflow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2645
		// will fail the test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2646
		return;   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2647
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2648
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2649
	// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2650
	TInt startBuf = iStartBuf[aStreamId];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2651
	TBuf8<KBufferSize>* bufferList = iBufferList[aStreamId];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2652
	bufferList[startBuf] = KNullDesC8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2653
	if(iStartBuf[aStreamId] == KNumBuffer - 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2654
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2655
		iStartBuf[aStreamId] = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2656
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2657
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2658
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2659
		iStartBuf[aStreamId]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2660
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2661
 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2662
	if (iIsAllDataRead[aStreamId] && iStartBuf[aStreamId] == iEndBuf[aStreamId])
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2663
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2664
		iIsAllDataWritten[aStreamId] = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2665
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2666
	else if (!iReadBufferActive[aStreamId]->IsActive())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2667
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2668
		iReadBufferActive[aStreamId]->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2669
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2670
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2671
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2672
void CTestStepAudOutStreamImadPolicy::ProcessDataL(TInt aStreamId, TBuf8<KBufferSize>& aData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2673
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2674
	if(aData.Length())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2675
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2676
		TInt endBuf = iEndBuf[aStreamId];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2677
		TBuf8<KBufferSize>* bufferList = iBufferList[aStreamId];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2678
		if (bufferList[endBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2679
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2680
			bufferList[endBuf] = aData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2681
			iAudOutStream[aStreamId]->WriteL(bufferList[endBuf]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2682
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2683
			// adjust the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2684
			if (iEndBuf[aStreamId] == KNumBuffer - 1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2685
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2686
				iEndBuf[aStreamId] = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2687
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2688
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2689
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2690
				iEndBuf[aStreamId]++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2691
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2692
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2693
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2694
		if(bufferList[endBuf]==KNullDesC8)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2695
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2696
			iReadBufferActive[aStreamId]->Read();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2697
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2698
		// else all our buffers are full
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2699
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2700
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2701
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2702
		iIsAllDataRead[aStreamId] = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2703
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2704
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2705
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2706
void CTestStepAudOutStreamImadPolicy::CloseAll()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2707
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2708
	for(TInt i = 0; i < KImadPolicyNumberOfStreams; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2709
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2710
		iFile[i].Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2711
		delete iAudOutStream[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2712
		iAudOutStream[i] = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2713
		delete iAudOutStreamCallback[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2714
		iAudOutStreamCallback[i] = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2715
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2716
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2717
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2718
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2719
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2720
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2721
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2722
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2723
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2724
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2725
 TVerdict CTestStepAudOutStreamImadPolicy::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2726
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2727
 	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2728
 	TVerdict verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2729
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2730
	// create the active object
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2731
	for (TInt i = 0; i < KImadPolicyNumberOfStreams; i++) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2732
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2733
		iReadBufferActive[i] = new(ELeave) CReadBufferActive(i);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2734
		iReadBufferActive[i]->iParent = this;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2735
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2736
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2737
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2738
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2739
	INFO_PRINTF1(iTestStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2740
	INFO_PRINTF1(_L("DEF093436: Call to Configure in wrong place in CMMFImaAdpcmToPcm16CodecHwDevice::Start"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2741
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2742
	TInt strLen = User::StringLength(iTestParameters->iFromFilename);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2743
	TPtrC ptr(iTestParameters->iFromFilename, strLen);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2744
	iFsFileName = SetFileNameL(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2745
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2746
    return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2747
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2748
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2749
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2750
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2751
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2752
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2753
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2754
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2755
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2756
TVerdict CTestStepAudOutStreamImadPolicy::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2757
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2758
	iFs.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2759
	for (TInt i = 0; i < KImadPolicyNumberOfStreams; i++) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2760
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2761
		delete iReadBufferActive[i];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2762
		iReadBufferActive[i] = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2763
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2764
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2765
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2766
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2767
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2768
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2769
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2770
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2771
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2772
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2773
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2774
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2775
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2776
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2777
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2778
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2779
TVerdict CTestStepAudOutStreamImadPolicy::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2780
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2781
	// This test is for DEF093436: Call to Configure in wrong place in CMMFImaAdpcmToPcm16CodecHwDevice::Start
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2782
	// and PDEF092098: DevSound fails to update policy if error occurs in StartPlayDataL.  However
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2783
	// at present, it is not possible to test the main part of PDEF092098, due to the fact
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2784
	// that there is no way to generate an error while playing.  So for now, this test is
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2785
	// limited to testing that a panic does not occur when we try to play a file with an
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2786
	// unsupported sample rate (DEF093436).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2787
	//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2788
	// The structure of the class CTestStepAudOutStreamImadPolicy is such that this test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2789
	// could be easily modified to test the main part of PDEF092098 if a way of testing it
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2790
	// is found in the future.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2791
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2792
	 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2793
	// Run a stream. We expect it to fail with KErrArgument, as we have
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2794
	// given an unsupported sample rate (32K).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2795
	TRAPD(err, iAudOutStreamCallback[iStreamId] = CTestStepAudOutStreamImadPolicyCallback::NewL(iStreamId, this));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2796
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2797
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2798
		INFO_PRINTF1(_L("Couldn't open first Imad policy callback"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2799
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2800
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2801
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2802
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2803
	TRAP(err, iAudOutStream[iStreamId] = CMMFMdaAudioOutputStream::NewL(*iAudOutStreamCallback[iStreamId]) );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2804
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2805
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2806
		INFO_PRINTF1(_L("Couldn't open first stream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2807
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2808
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2809
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2810
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2811
	TRAP(err, iAudOutStream[iStreamId]->SetDataTypeL(iTestParameters->iEncoding));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2812
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2813
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2814
		INFO_PRINTF1(_L("SetDataTypeL failed on first stream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2815
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2816
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2817
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2818
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2819
	TRAP(err, iAudOutStream[iStreamId]->SetAudioPropertiesL(iTestParameters->iSampleRate, iTestParameters->iChannels));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2820
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2821
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2822
		INFO_PRINTF1(_L("SetAudioPropertiesL failed on first stream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2823
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2824
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2825
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2826
	iAudOutStream[iStreamId]->SetVolume(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2827
	iAudOutStream[iStreamId]->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2828
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2829
	iSchedulerStopType = ENotStopped;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2830
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2831
	if (iSchedulerStopType != EOpenComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2832
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2833
		INFO_PRINTF1(_L("Active scheduler was stopped by something other than Open completing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2834
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2835
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2836
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2837
	iAudOutStream[iStreamId]->SetVolume(iAudOutStream[iStreamId]->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2838
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2839
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2840
	err = GetAudOutStreamStopped(iAudOutStream[iStreamId], stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2841
	if (iError[iStreamId] != KErrNone || err != KErrNone || !stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2842
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2843
		INFO_PRINTF3(_L("GetAudOutStreamStopped failed on first stream (err = %d, stopped = %d)"), err, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2844
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2845
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2846
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2847
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2848
	err = iFile[iStreamId].Open(iFs, iFsFileName, EFileRead | EFileShareAny);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2849
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2850
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2851
		INFO_PRINTF1(_L("Couldn't open file on first stream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2852
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2853
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2854
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2855
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2856
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2857
	TBool boolRes = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2858
	TInt pos = 48;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2859
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2860
	iReadBufferActive[iStreamId]->Read(pos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2861
	CIdle* idleStopper = CIdle::NewL(CActive::EPriorityStandard);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2862
	idleStopper->Start(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2863
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2864
	// Attempt to play with sample rate set to 32K should fail, but
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2865
	// should not panic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2866
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2867
	delete idleStopper;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2868
	idleStopper = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2869
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2870
	err = GetAudOutStreamPlaying(iAudOutStream[iStreamId], boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2871
	if (err != KErrNone || boolRes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2872
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2873
		INFO_PRINTF3(_L("GetAudOutStreamPlaying failed on first stream (err = %d, boolRes = %d)"), err, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2874
		CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2875
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2876
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2877
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2878
	INFO_PRINTF1(_L("finished with this test step"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2879
	// test steps return a result
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2880
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2881
	CloseAll();	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2882
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2883
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2884
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2885
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2886
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2887
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2888
* Set FileName
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2889
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2890
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2891
TFileName CTestStepAudOutStreamImadPolicy::SetFileNameL( const TDesC& aPathNameAndExtn )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2892
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2893
	//[ append the filename relative to the default path ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2894
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2895
	TFileName fileName = DefaultPath();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2896
	fileName.Append(aPathNameAndExtn);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2897
	return fileName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2898
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2899
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2900
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2901
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2902
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2903
 * Static constructor for CTestStepAudOutStreamPlayError.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2904
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2905
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2906
 * @return	"CTestStepAudOutStreamPlayError*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2907
 *			The constructed CTestStepAudOutStreamPlayError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2908
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2909
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2910
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2911
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2912
CTestStepAudOutStreamPlayError* CTestStepAudOutStreamPlayError::NewL(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2913
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2914
	CTestStepAudOutStreamPlayError* self = new(ELeave) CTestStepAudOutStreamPlayError(aTestIndex);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2915
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2916
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2917
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2918
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2919
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2920
 * Test step constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2921
 * Each test step initialises its own name.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2922
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2923
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2924
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2925
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2926
CTestStepAudOutStreamPlayError::CTestStepAudOutStreamPlayError(TUint aTestIndex)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2927
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2928
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2929
	// store a pointer to the test parameters
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2930
	iTestParameters = &(KTestParameters[aTestIndex]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2931
	// store the name of this test case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2932
	// this is the name that is used by the script file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2933
	iTestStepName = iTestParameters->iTestName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2934
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2935
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2936
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2937
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2938
 * Test step destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2939
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2940
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2941
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2942
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2943
CTestStepAudOutStreamPlayError::~CTestStepAudOutStreamPlayError()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2944
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2945
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2946
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2947
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2948
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2949
 * Test step Preamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2950
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2951
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2952
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2953
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2954
TVerdict CTestStepAudOutStreamPlayError::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2955
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2956
	// this installs the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2957
	iTestStepResult = CTestStepAudOutStream::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2958
	if (iTestStepResult != EPass)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2959
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2960
		return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2961
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2962
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2963
	INFO_PRINTF1(iTestStepName);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2964
	INFO_PRINTF1(_L("INC090287 & PDEF092796: CMdaAudioOutputStream resumes incorrectly after an error"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2965
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2966
	TRAP(iError, iAudOutStream->SetAudioPropertiesL(TMdaAudioDataSettings::ESampleRate8000Hz,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2967
													TMdaAudioDataSettings::EChannelsMono));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2968
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2969
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2970
		INFO_PRINTF1(_L("Error setting audio properties"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2971
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2972
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2973
	iAudOutStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2974
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2975
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2976
	if (iSchedulerStopType != EStreamOpenComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2977
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2978
		INFO_PRINTF1(_L("Active scheduler was stopped by something other than stream open completing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2979
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2980
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2981
	else if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2982
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2983
		INFO_PRINTF1(_L("Error opening stream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2984
		return EInconclusive;		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2985
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2986
	iAudOutStream->SetVolume(iAudOutStream->MaxVolume()>>1); // half volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2987
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2988
	TBool stopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2989
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2990
	err = GetAudOutStreamStopped(iAudOutStream, stopped);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2991
	if (iError != KErrNone || err != KErrNone || !stopped )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2992
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2993
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2994
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2995
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2996
	err = iFile.Open(iFs, KStreamRawFile, EFileRead);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2997
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2998
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  2999
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3000
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3001
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3002
	// create a high priority tone utility
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3003
	TRAP(err, iToneUtility = CMdaAudioToneUtility::NewL(*this, NULL, EMdaPriorityMax, EMdaPriorityPreferenceTimeAndQuality));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3004
	if (err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3005
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3006
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3007
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3008
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3009
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3010
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3011
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3012
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3013
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3014
 * Test step Postamble.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3015
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3016
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3017
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3018
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3019
TVerdict CTestStepAudOutStreamPlayError::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3020
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3021
	iFile.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3022
	delete iToneUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3023
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3024
	//[ Destroy the scheduler, delete the iAudOutStream, close the file system
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3025
	return CTestStepAudOutStream::DoTestStepPostambleL();
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
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3030
 * Do the test step.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3031
 * Each test step must supply an implementation for DoTestStepL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3032
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3033
 * @return	"TVerdict"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3034
 *			The result of the test step
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3035
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3036
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3037
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3038
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3039
TVerdict CTestStepAudOutStreamPlayError::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3040
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3041
	// start playing a stream
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3042
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3043
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3044
	TBool boolRes = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3045
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3046
	iReadBufferActive->Read(); // eventually calls CMdaAudioOutputStream::WriteL(...)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3047
	CCallBackTimer* callBackTimer1 = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3048
	callBackTimer1->After(KWaitReadTime);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3049
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3050
	delete callBackTimer1;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3051
	callBackTimer1 = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3052
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3053
	// check if it's playing
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3054
	err = GetAudOutStreamPlaying(iAudOutStream, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3055
	if (err != KErrNone || !boolRes)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3056
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3057
		ERR_PRINTF3(_L("GetAudOutStreamPlaying failed (err=%d, boolRes = %d)"), err, boolRes);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3058
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3059
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3060
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3061
	CCallBackTimer* callBackTimer = CCallBackTimer::NewL(TCallBack(stopActiveScheduler));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3062
	callBackTimer->After(KOneSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3063
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3064
	delete callBackTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3065
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3066
	if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3067
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3068
		INFO_PRINTF2(_L("Play stream failed (err=%d)"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3069
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3070
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3071
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3072
	// pre-empt it with a higher priority client (causing a KErrInUse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3073
	INFO_PRINTF1( _L("Initialize CMdaAudioToneUtility"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3074
	iToneUtility->PrepareToPlayTone(KToneFrequency, TTimeIntervalMicroSeconds(KOneSecond));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3075
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3076
	if (iSchedulerStopType != ETonePrepareComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3077
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3078
		INFO_PRINTF1(_L("Active scheduler was stopped by something other than tone prepare completing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3079
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3080
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3081
	else if (iError != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3082
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3083
		INFO_PRINTF1(_L("Error preparing tone"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3084
		return EInconclusive;		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3085
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3086
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3087
	INFO_PRINTF1( _L("Playing tone..."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3088
	iExpectingBufferErrors = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3089
	iToneUtility->Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3090
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3091
	if (iSchedulerStopType != EStreamPlayComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3092
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3093
		INFO_PRINTF1(_L("Active scheduler was stopped by something other than play stream completing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3094
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3095
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3096
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3097
	CActiveScheduler::Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3098
	if (iSchedulerStopType != ETonePlayComplete)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3099
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3100
		INFO_PRINTF1(_L("Active scheduler was stopped by something other than tone play completing"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3101
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3102
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3104
	if (iError != KErrInUse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3105
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3106
		INFO_PRINTF1(_L("Could not provoke a KErrInUse"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3107
		return EInconclusive;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3108
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3110
	// check that the buffer FIFO is emptied (callbacks will have occurred)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3111
	if (iBufferErrorCount == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3112
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3113
		ERR_PRINTF1(_L("Test failed, no buffer errors reported"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3114
		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3115
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3116
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3117
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3118
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3119
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3120
void CTestStepAudOutStreamPlayError::MaoscBufferCopied(TInt aError, const TDesC8& aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3121
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3122
	if ((aError == KErrInUse) && (iExpectingBufferErrors))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3123
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3124
		iBufferErrorCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3125
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3126
	CTestStepAudOutStream::MaoscBufferCopied(aError, aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3127
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3128
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3129
void CTestStepAudOutStreamPlayError::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3130
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3131
	iSchedulerStopType = EStreamPlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3132
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3133
	INFO_PRINTF2(_L("MaoscPlayComplete, iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3134
	CTestStepAudOutStream::MaoscPlayComplete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3135
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3136
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3137
void CTestStepAudOutStreamPlayError::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3138
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3139
	iSchedulerStopType = EStreamOpenComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3140
	iError = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3141
	INFO_PRINTF2(_L("MaoscOpenComplete, iError=%d"), iError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3142
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3143
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3145
void CTestStepAudOutStreamPlayError::MatoPrepareComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3147
	iSchedulerStopType = ETonePrepareComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3148
	INFO_PRINTF2(_L("MatoPrepareComplete(): error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3149
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3150
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3151
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3152
void CTestStepAudOutStreamPlayError::MatoPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3153
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3154
	iSchedulerStopType = ETonePlayComplete;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3155
	INFO_PRINTF2(_L("MatoPlayComplete(): error = %d"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3156
	CActiveScheduler::Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3157
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3158
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3160
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3161
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3162
 * Static constructor for CTestStepAudOutStreamConcurrentOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3163
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3164
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3165
 * @return	"CTestStepAudOutStreamConcurrentOpen*"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3166
 *			The constructed CTestStepAudOutStreamConcurrentOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3167
 *
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3168
 * @xxxx
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3169
 * 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3170
 */
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3171
CTestStepAudOutStreamConcurrentOpen* CTestStepAudOutStreamConcurrentOpen::NewL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3172
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3173
	CTestStepAudOutStreamConcurrentOpen* self = new(ELeave) CTestStepAudOutStreamConcurrentOpen;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3174
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3175
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3176
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3177
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3178
CTestStepAudOutStreamConcurrentOpen::CTestStepAudOutStreamConcurrentOpen()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3179
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3180
	iTestStepResult = EPass;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3181
	iTestStepName = _L("MM-MMF-ACLNT-U-0971-CP");
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3182
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3184
CTestStepAudOutStreamConcurrentOpen::~CTestStepAudOutStreamConcurrentOpen()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3185
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3186
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3187
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3188
enum TVerdict CTestStepAudOutStreamConcurrentOpen::DoTestStepPreambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3189
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3190
	enum TVerdict verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3191
	//Install the scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3192
	verdict = CTestStepUnitMMFAudClient::DoTestStepPreambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3193
	//If the audioserver is already running needs to be stopped for this teststep
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3194
	//So check for an existing audio server and kill the instance if it exists
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3195
	TFindProcess p(_L("MMFAudioServer*"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3196
	TFullName name;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3197
	TInt err = p.Next(name);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3198
	if(err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3199
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3200
		RProcess audioserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3201
		err=audioserver.Open(name,EOwnerThread);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3202
		if(err==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3203
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3204
			//Kill the audio server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3205
			audioserver.Kill(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3206
			User::After(1000000);//wait for 1 second
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3207
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3208
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3209
	// Printing to the console and log file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3210
	INFO_PRINTF1(_L("MM-MMF-ACLNT-U-0971-CP"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3211
	INFO_PRINTF1(_L("This test step tries to start Audioserver from multiple threads Simultaneously"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3212
	return verdict;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3213
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3215
enum TVerdict CTestStepAudOutStreamConcurrentOpen::DoTestStepPostambleL(void)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3216
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3217
	//[ Destroy the scheduler ]
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3218
	return CTestStepUnitMMFAudClient::DoTestStepPostambleL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3219
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3220
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3221
void CTestStepAudOutStreamConcurrentOpen::StartThreadL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3222
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3223
	CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3224
	CleanupStack::PushL(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3225
	CActiveScheduler::Install(scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3226
	CTestAudioOutputStreamWrapper* outputStream = CTestAudioOutputStreamWrapper::NewL(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3227
	CleanupStack::PushL(outputStream);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3228
	CleanupStack::PopAndDestroy(2,scheduler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3229
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3230
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3231
TInt CTestStepAudOutStreamConcurrentOpen::CreateThread(TAny* /*aData*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3232
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3233
	CTrapCleanup* cleanup = CTrapCleanup::New();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3234
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3235
	TRAPD(error, StartThreadL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3236
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3237
	delete cleanup;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3238
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3239
	return error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3240
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3241
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3242
TVerdict CTestStepAudOutStreamConcurrentOpen::DoTestStepL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3243
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3244
	__MM_HEAP_MARK;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3245
	RThread threadlist[KNumofThreads];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3246
	TBufC<100> threadname[KNumofThreads]={_L("OutputStreamThread1"),_L("OutputStreamThread2")};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3247
	TRequestStatus reqStatus[KNumofThreads];
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3248
	TInt i;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3249
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3250
	//Create two AudioOutputStreams through multiple threads concurrently
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3251
	for(i=0;i<2;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3252
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3253
		TRAPD(err,threadlist[i].Create(threadname[i],CreateThread,KDefaultStackSize, 0x100000, 0x100000, NULL));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3254
		if(err != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3255
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3256
			return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3257
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3258
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3259
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3260
	//Get the status of the Audio server for the threads
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3261
    for(i=0;i<KNumofThreads;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3262
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3263
    	threadlist[i].Logon(reqStatus[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3264
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3265
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3266
    for(i=0;i<KNumofThreads;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3267
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3268
    	threadlist[i].Resume();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3269
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3270
    for(i=0;i<KNumofThreads;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3271
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3272
    	User::WaitForRequest(reqStatus[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3273
    	if(reqStatus[i] != KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3274
    		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3275
    		return EFail;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3276
    		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3277
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3278
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3279
    //Close Threads
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3280
    for(TInt i=0;i<KNumofThreads;i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3281
    	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3282
    	threadlist[i].Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3283
    	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3284
	__MM_HEAP_MARKEND;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3285
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3286
	return iTestStepResult;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3287
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3288
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3289
CTestAudioOutputStreamWrapper* CTestAudioOutputStreamWrapper::NewL(TInt aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3290
 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3291
 	CTestAudioOutputStreamWrapper* self = new(ELeave) CTestAudioOutputStreamWrapper();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3292
 	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3293
 	self->ConstructL(aPriority);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3294
 	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3295
 	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3296
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3297
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3298
CTestAudioOutputStreamWrapper::CTestAudioOutputStreamWrapper()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3299
 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3300
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3301
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3302
void CTestAudioOutputStreamWrapper::ConstructL(TInt aPriority)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3303
 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3304
 	iAudioOutputStream = CMdaAudioOutputStream::NewL(*this, aPriority,EMdaPriorityPreferenceNone);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3305
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3306
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3307
CTestAudioOutputStreamWrapper::~CTestAudioOutputStreamWrapper()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3308
 	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3309
 	delete iAudioOutputStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3310
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3311
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3312
void CTestAudioOutputStreamWrapper::MaoscOpenComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3313
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3314
 	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3315
 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3316
void CTestAudioOutputStreamWrapper:: MaoscBufferCopied(TInt /*aError*/, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3317
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3318
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3319
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3320
void CTestAudioOutputStreamWrapper::MaoscPlayComplete(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3321
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3322
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3323
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3324
RAudioOPStreamRequestStop* RAudioOPStreamRequestStop::NewL(const TDesC& aStepName, TBool aKeepOpenAtEnd, TBool aAutoStop, TBool aWriteBufferAfterRequestStop, TBool aRestart)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3325
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3326
	RAudioOPStreamRequestStop* self = new (ELeave) RAudioOPStreamRequestStop(aStepName, aKeepOpenAtEnd, aAutoStop, aWriteBufferAfterRequestStop, aRestart);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3327
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3328
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3329
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3330
RAudioOPStreamRequestStop::RAudioOPStreamRequestStop(const TDesC& aStepName, TBool aKeepOpenAtEnd, TBool aAutoStop, TBool aWriteBufferAfterRequestStop, TBool aRestart) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3331
	iPlayer(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3332
	iTimer(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3333
	iKeepOpenAtEnd(aKeepOpenAtEnd),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3334
	iAutoStop(aAutoStop),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3335
	iWriteBufferAfterRequestStop(aWriteBufferAfterRequestStop),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3336
	iRestart(aRestart)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3337
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3338
	iTestStepName = aStepName;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3339
	iHeapSize = 1000000; // ~1M
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3340
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3341
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3342
// start test
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3343
void RAudioOPStreamRequestStop::KickoffTestL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3344
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3345
	// re-initialise data - orphan any pointer, as would relate to
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3346
	// previous run's heap
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3347
	iPlayer = NULL; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3348
	iTimer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3349
	INFO_PRINTF1(_L("DEF120897: This test checks KeepOpenAtEnd and RequestStop APIs of AudioOutputStream"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3350
	iPlayer = CAudioOPStreamAudio::NewL(this, iKeepOpenAtEnd, iAutoStop, iWriteBufferAfterRequestStop);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3351
	iTimer = CPeriodic::NewL(CActive::EPriorityHigh);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3352
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3353
	iPlayer->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3354
	iSuite->Log(ESevrInfo, _L("Playing Started...."));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3355
	//AutoStop means that giving the responsibility of stopping the play to CAudioOPStreamAudio
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3356
	//If it is not auto stop, stop the player explicitly after a longtime
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3357
	//to check that we dont get the PlayError in between
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3358
	if(!iAutoStop && iKeepOpenAtEnd)
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
		//giving a 5 secs delay intentionally to make sure that all buffers are already used up
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3362
		iTimer->Start(5000000, 0, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3363
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3364
	else if(iRestart)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3365
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3366
		TCallBack callback (TimerCallback, this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3367
		iTimer->Start(1000000, 0, callback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3368
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3369
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3370
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3371
// cleanup at end
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3372
void RAudioOPStreamRequestStop::CloseTest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3373
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3374
	delete iPlayer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3375
	iPlayer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3376
	delete iTimer;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3377
	iTimer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3378
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3379
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3380
// signal complete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3381
void RAudioOPStreamRequestStop::PlayingStopped(TInt aError, TVerdict aVerdict)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3382
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3383
#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3384
	if(aError!=KErrNotSupported && iKeepOpenAtEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3385
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3386
		INFO_PRINTF2(_L("Old DevSound: Unexpected error: [%d], Expected is KErrNotSupported"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3387
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3388
	else if(!iKeepOpenAtEnd && aError!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3389
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3390
		INFO_PRINTF2(_L("Old DevSound: Play is stopped with unexpected error [%d]"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3391
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3392
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3393
	if(aError!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3394
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3395
		INFO_PRINTF2(_L("A3F DevSound: Play is stopped with unexpected error [%d]"), aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3396
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3397
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3398
	StopTest (aError, aVerdict);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3399
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3400
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3401
// timer callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3402
TInt RAudioOPStreamRequestStop::TimerCallback(TAny* aPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3403
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3404
	static_cast<RAudioOPStreamRequestStop*>(aPtr)->DoTimerCallback();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3405
	return KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3406
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3407
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3408
void RAudioOPStreamRequestStop::DoTimerCallback()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3409
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3410
	iTimer->Cancel(); // only really wanted a one-shot
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3411
	if(!iAutoStop && iKeepOpenAtEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3412
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3413
		iPlayer->RequestStop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3414
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3415
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3416
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3417
		iPlayer->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3418
		iPlayer->PlayL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3419
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3420
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3421
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3422
// factory function
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3423
CAudioOPStreamAudio* CAudioOPStreamAudio::NewL(MAudioOPStreamObserver* aObserver, TBool aKeepOpenAtEnd, TBool aAutoStop, TBool aWriteBufferAfterRequestStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3424
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3425
	CAudioOPStreamAudio* self = new (ELeave) CAudioOPStreamAudio(aObserver, aKeepOpenAtEnd, aAutoStop, aWriteBufferAfterRequestStop);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3426
	CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3427
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3428
	CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3429
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3430
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3431
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3432
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3433
CAudioOPStreamAudio::~CAudioOPStreamAudio()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3434
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3435
	if (iOutputStream)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3436
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3437
		iOutputStream->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3438
		delete iOutputStream;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3439
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3440
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3441
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3442
// 2nd phase constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3443
void CAudioOPStreamAudio::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3444
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3445
	iOutputStream = CMdaAudioOutputStream::NewL(*this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3446
	User::LeaveIfError(iFs.Connect());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3447
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3448
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3449
// constructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3450
CAudioOPStreamAudio::CAudioOPStreamAudio(MAudioOPStreamObserver* aObserver, TBool aKeepOpenAtEnd, TBool aAutoStop, TBool aWriteBufferAfterRequestStop) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3451
	iObserver (aObserver),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3452
	iKeepOpenAtEnd(aKeepOpenAtEnd),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3453
	iAutoStop(aAutoStop),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3454
	iWriteBufferAfterRequestStop(aWriteBufferAfterRequestStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3455
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3456
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3457
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3458
void CAudioOPStreamAudio::Complete(TInt aError, TVerdict aVerdict)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3459
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3460
	TInt err = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3461
	iState = EStateIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3462
	if(iWriteBufferAfterRequestStop && err==KErrNotReady)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3463
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3464
		err=KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3465
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3466
	iObserver->PlayingStopped(err, aVerdict);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3467
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3468
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3469
void CAudioOPStreamAudio::PlayL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3470
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3471
	if(iState==EStateIdle)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3472
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3473
		//Read the data from the file into buffers in advance
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3474
		User::LeaveIfError(iFile.Open(iFs, KStreamRawFile, EFileRead));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3475
		for (TInt i=0; i<KNumBuffers; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3476
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3477
			User::LeaveIfError(iFile.Read(iBufferList[i]));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3478
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3479
		iOutputStream->Open(NULL);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3480
		iState = EStateOpeningOutput;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3481
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3482
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3483
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3484
		iBufferCount=0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3485
		WriteOutputStreamBuffersL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3486
		if(iKeepOpenAtEnd && iAutoStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3487
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3488
			//Stopping after all the data is sent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3489
			User::LeaveIfError(iOutputStream->RequestStop());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3490
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3491
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3492
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3493
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3494
void CAudioOPStreamAudio::Stop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3495
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3496
	iOutputStream->Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3497
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3498
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3499
void CAudioOPStreamAudio::RequestStop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3500
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3501
	iOutputStream->RequestStop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3502
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3503
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3504
void CAudioOPStreamAudio::WriteOutputStreamBuffersL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3505
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3506
	for (TInt i=0; i<KNumBuffers; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3507
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3508
		iOutputStream->WriteL(iBufferList[i]);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3509
		if(iWriteBufferAfterRequestStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3510
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3511
			User::LeaveIfError(iOutputStream->RequestStop());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3512
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3513
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3514
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3515
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3516
void CAudioOPStreamAudio::MaoscOpenComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3517
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3518
	ASSERT(iState==EStateOpeningOutput);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3519
	TInt error = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3520
	if (error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3521
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3522
		iState = EStateWriting;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3523
		iOutputStream->SetVolume(iOutputStream->MaxVolume()/2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3524
		if(iKeepOpenAtEnd)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3525
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3526
			error = iOutputStream->KeepOpenAtEnd();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3527
		#ifndef SYMBIAN_MULTIMEDIA_A3FDEVSOUND
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3528
			if(error!=KErrNotSupported)//On old devsound, we dont support this feature
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3529
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3530
				Complete(error, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3531
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3532
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3533
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3534
				Complete(error, EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3535
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3536
			return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3537
		#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3538
			if(error!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3539
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3540
				Complete(error, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3541
				return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3542
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3543
		#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3544
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3545
		TRAP(error, WriteOutputStreamBuffersL());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3546
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3547
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3548
	if(error==KErrNone && iKeepOpenAtEnd && iAutoStop)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3549
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3550
		//Stopping after all the data is sent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3551
		error = iOutputStream->RequestStop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3552
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3553
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3554
	//Negative test, Complete is done via MaoscPlayComplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3555
	if (error!=KErrNone && (iWriteBufferAfterRequestStop && error!=KErrNotReady))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3556
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3557
		Complete(error, EFail);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3558
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3559
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3560
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3561
void CAudioOPStreamAudio::MaoscBufferCopied(TInt aError, const TDesC8& /*aBuffer*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3562
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3563
	if (aError!=KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3564
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3565
		// ignore any KErrAbort returns - this would happen during a Stop() call
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3566
		// if we were playing 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3567
		if (aError!=KErrAbort)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3568
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3569
			Complete(aError, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3570
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3571
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3572
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3573
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3574
		iBufferCount++;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3575
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3576
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3577
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3578
void CAudioOPStreamAudio::MaoscPlayComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3579
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3580
	TInt error = aError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3581
	if(error==KErrCancel)//during Stop we get KErrCancel. Do not stop at this point. Ignore that.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3582
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3583
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3584
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3585
	if (error==KErrUnderflow && iBufferCount==KNumBuffers)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3586
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3587
		error = KErrNone; // normal termination is underflow following buffer request	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3588
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3589
	else if(iWriteBufferAfterRequestStop && error==KErrUnderflow) //Negative test, we dont play all the buffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3590
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3591
		error = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3592
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3593
	if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3594
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3595
		Complete(error, EPass);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3596
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3597
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3598
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3599
		Complete(error, EFail);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3600
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  3601
	}